use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct EntitlementGrantResponse {
#[serde(rename = "business_id")]
pub business_id: String,
#[serde(rename = "created_at")]
pub created_at: chrono::DateTime<chrono::FixedOffset>,
#[serde(rename = "customer_id")]
pub customer_id: String,
#[serde(rename = "delivered_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub delivered_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(rename = "digital_product_delivery", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub digital_product_delivery: Option<Option<Box<models::DigitalProductDelivery>>>,
#[serde(rename = "entitlement_id")]
pub entitlement_id: String,
#[serde(rename = "error_code", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub error_code: Option<Option<String>>,
#[serde(rename = "error_message", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub error_message: Option<Option<String>>,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "license_key", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub license_key: Option<Option<Box<models::LicenseKeyGrant>>>,
#[serde(rename = "metadata")]
pub metadata: std::collections::HashMap<String, String>,
#[serde(rename = "oauth_expires_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub oauth_expires_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(rename = "oauth_url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub oauth_url: Option<Option<String>>,
#[serde(rename = "payment_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub payment_id: Option<Option<String>>,
#[serde(rename = "revocation_reason", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub revocation_reason: Option<Option<String>>,
#[serde(rename = "revoked_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub revoked_at: Option<Option<chrono::DateTime<chrono::FixedOffset>>>,
#[serde(rename = "status")]
pub status: models::EntitlementGrantStatus,
#[serde(rename = "subscription_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub subscription_id: Option<Option<String>>,
#[serde(rename = "updated_at")]
pub updated_at: chrono::DateTime<chrono::FixedOffset>,
}
impl EntitlementGrantResponse {
pub fn new(business_id: String, created_at: chrono::DateTime<chrono::FixedOffset>, customer_id: String, entitlement_id: String, id: String, metadata: std::collections::HashMap<String, String>, status: models::EntitlementGrantStatus, updated_at: chrono::DateTime<chrono::FixedOffset>) -> EntitlementGrantResponse {
EntitlementGrantResponse {
business_id,
created_at,
customer_id,
delivered_at: None,
digital_product_delivery: None,
entitlement_id,
error_code: None,
error_message: None,
id,
license_key: None,
metadata,
oauth_expires_at: None,
oauth_url: None,
payment_id: None,
revocation_reason: None,
revoked_at: None,
status,
subscription_id: None,
updated_at,
}
}
}