digitaluapi

<back to all web services

GetStripeSession

The following routes are available for this service:
All Verbs/stripe-session/{Id}
import 'package:servicestack/servicestack.dart';
import 'dart:collection';

abstract class StripeEntity implements IStripeEntity
{
    StripeEntity();
    StripeEntity.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "StripeEntity";
    TypeContext? context = _ctx;
}

abstract class StripeEntity1<T> extends StripeEntity
{
    StripeEntity1();
    StripeEntity1.fromJson(Map<String, dynamic> json) : super.fromJson(json);
    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson();
    getTypeName() => "StripeEntity<$T>";
    TypeContext? context = _ctx;
}

class SessionAfterExpirationRecovery extends StripeEntity1<SessionAfterExpirationRecovery> implements IConvertible
{
    bool? AllowPromotionCodes;
    bool? Enabled;
    DateTime? ExpiresAt;
    String? Url;

    SessionAfterExpirationRecovery({this.AllowPromotionCodes,this.Enabled,this.ExpiresAt,this.Url});
    SessionAfterExpirationRecovery.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AllowPromotionCodes = json['AllowPromotionCodes'];
        Enabled = json['Enabled'];
        ExpiresAt = JsonConverters.fromJson(json['ExpiresAt'],'DateTime',context!);
        Url = json['Url'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AllowPromotionCodes': AllowPromotionCodes,
        'Enabled': Enabled,
        'ExpiresAt': JsonConverters.toJson(ExpiresAt,'DateTime',context!),
        'Url': Url
    });

    getTypeName() => "SessionAfterExpirationRecovery";
    TypeContext? context = _ctx;
}

class SessionAfterExpiration extends StripeEntity1<SessionAfterExpiration> implements IConvertible
{
    SessionAfterExpirationRecovery? Recovery;

    SessionAfterExpiration({this.Recovery});
    SessionAfterExpiration.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Recovery = JsonConverters.fromJson(json['Recovery'],'SessionAfterExpirationRecovery',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Recovery': JsonConverters.toJson(Recovery,'SessionAfterExpirationRecovery',context!)
    });

    getTypeName() => "SessionAfterExpiration";
    TypeContext? context = _ctx;
}

class SessionAutomaticTax extends StripeEntity1<SessionAutomaticTax> implements IConvertible
{
    bool? Enabled;
    String? Status;

    SessionAutomaticTax({this.Enabled,this.Status});
    SessionAutomaticTax.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Enabled = json['Enabled'];
        Status = json['Status'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Enabled': Enabled,
        'Status': Status
    });

    getTypeName() => "SessionAutomaticTax";
    TypeContext? context = _ctx;
}

class SessionConsent extends StripeEntity1<SessionConsent> implements IConvertible
{
    String? Promotions;
    String? TermsOfService;

    SessionConsent({this.Promotions,this.TermsOfService});
    SessionConsent.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Promotions = json['Promotions'];
        TermsOfService = json['TermsOfService'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Promotions': Promotions,
        'TermsOfService': TermsOfService
    });

    getTypeName() => "SessionConsent";
    TypeContext? context = _ctx;
}

class SessionConsentCollection extends StripeEntity1<SessionConsentCollection> implements IConvertible
{
    String? Promotions;
    String? TermsOfService;

    SessionConsentCollection({this.Promotions,this.TermsOfService});
    SessionConsentCollection.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Promotions = json['Promotions'];
        TermsOfService = json['TermsOfService'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Promotions': Promotions,
        'TermsOfService': TermsOfService
    });

    getTypeName() => "SessionConsentCollection";
    TypeContext? context = _ctx;
}

class SessionCustomFieldDropdownOption extends StripeEntity1<SessionCustomFieldDropdownOption> implements IConvertible
{
    String? Label;
    String? Value;

    SessionCustomFieldDropdownOption({this.Label,this.Value});
    SessionCustomFieldDropdownOption.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Label = json['Label'];
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Label': Label,
        'Value': Value
    });

    getTypeName() => "SessionCustomFieldDropdownOption";
    TypeContext? context = _ctx;
}

class SessionCustomFieldDropdown extends StripeEntity1<SessionCustomFieldDropdown> implements IConvertible
{
    List<SessionCustomFieldDropdownOption>? Options;
    String? Value;

    SessionCustomFieldDropdown({this.Options,this.Value});
    SessionCustomFieldDropdown.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Options = JsonConverters.fromJson(json['Options'],'List<SessionCustomFieldDropdownOption>',context!);
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Options': JsonConverters.toJson(Options,'List<SessionCustomFieldDropdownOption>',context!),
        'Value': Value
    });

    getTypeName() => "SessionCustomFieldDropdown";
    TypeContext? context = _ctx;
}

class SessionCustomFieldLabel extends StripeEntity1<SessionCustomFieldLabel> implements IConvertible
{
    String? Custom;
    String? Type;

    SessionCustomFieldLabel({this.Custom,this.Type});
    SessionCustomFieldLabel.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Custom = json['Custom'];
        Type = json['Type'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Custom': Custom,
        'Type': Type
    });

    getTypeName() => "SessionCustomFieldLabel";
    TypeContext? context = _ctx;
}

class SessionCustomFieldNumeric extends StripeEntity1<SessionCustomFieldNumeric> implements IConvertible
{
    String? Value;

    SessionCustomFieldNumeric({this.Value});
    SessionCustomFieldNumeric.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Value': Value
    });

    getTypeName() => "SessionCustomFieldNumeric";
    TypeContext? context = _ctx;
}

class SessionCustomFieldText extends StripeEntity1<SessionCustomFieldText> implements IConvertible
{
    String? Value;

    SessionCustomFieldText({this.Value});
    SessionCustomFieldText.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Value': Value
    });

    getTypeName() => "SessionCustomFieldText";
    TypeContext? context = _ctx;
}

class SessionCustomField extends StripeEntity1<SessionCustomField> implements IConvertible
{
    SessionCustomFieldDropdown? Dropdown;
    String? Key;
    SessionCustomFieldLabel? Label;
    SessionCustomFieldNumeric? Numeric;
    bool? Optional;
    SessionCustomFieldText? Text;
    String? Type;

    SessionCustomField({this.Dropdown,this.Key,this.Label,this.Numeric,this.Optional,this.Text,this.Type});
    SessionCustomField.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Dropdown = JsonConverters.fromJson(json['Dropdown'],'SessionCustomFieldDropdown',context!);
        Key = json['Key'];
        Label = JsonConverters.fromJson(json['Label'],'SessionCustomFieldLabel',context!);
        Numeric = JsonConverters.fromJson(json['Numeric'],'SessionCustomFieldNumeric',context!);
        Optional = json['Optional'];
        Text = JsonConverters.fromJson(json['Text'],'SessionCustomFieldText',context!);
        Type = json['Type'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Dropdown': JsonConverters.toJson(Dropdown,'SessionCustomFieldDropdown',context!),
        'Key': Key,
        'Label': JsonConverters.toJson(Label,'SessionCustomFieldLabel',context!),
        'Numeric': JsonConverters.toJson(Numeric,'SessionCustomFieldNumeric',context!),
        'Optional': Optional,
        'Text': JsonConverters.toJson(Text,'SessionCustomFieldText',context!),
        'Type': Type
    });

    getTypeName() => "SessionCustomField";
    TypeContext? context = _ctx;
}

class SessionCustomTextShippingAddress extends StripeEntity1<SessionCustomTextShippingAddress> implements IConvertible
{
    String? Message;

    SessionCustomTextShippingAddress({this.Message});
    SessionCustomTextShippingAddress.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Message = json['Message'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Message': Message
    });

    getTypeName() => "SessionCustomTextShippingAddress";
    TypeContext? context = _ctx;
}

class SessionCustomTextSubmit extends StripeEntity1<SessionCustomTextSubmit> implements IConvertible
{
    String? Message;

    SessionCustomTextSubmit({this.Message});
    SessionCustomTextSubmit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Message = json['Message'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Message': Message
    });

    getTypeName() => "SessionCustomTextSubmit";
    TypeContext? context = _ctx;
}

class SessionCustomText extends StripeEntity1<SessionCustomText> implements IConvertible
{
    SessionCustomTextShippingAddress? ShippingAddress;
    SessionCustomTextSubmit? Submit;

    SessionCustomText({this.ShippingAddress,this.Submit});
    SessionCustomText.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ShippingAddress = JsonConverters.fromJson(json['ShippingAddress'],'SessionCustomTextShippingAddress',context!);
        Submit = JsonConverters.fromJson(json['Submit'],'SessionCustomTextSubmit',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ShippingAddress': JsonConverters.toJson(ShippingAddress,'SessionCustomTextShippingAddress',context!),
        'Submit': JsonConverters.toJson(Submit,'SessionCustomTextSubmit',context!)
    });

    getTypeName() => "SessionCustomText";
    TypeContext? context = _ctx;
}

class Address extends StripeEntity1<Address> implements IConvertible
{
    String? City;
    String? Country;
    String? Line1;
    String? Line2;
    String? PostalCode;
    String? State;

    Address({this.City,this.Country,this.Line1,this.Line2,this.PostalCode,this.State});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        City = json['City'];
        Country = json['Country'];
        Line1 = json['Line1'];
        Line2 = json['Line2'];
        PostalCode = json['PostalCode'];
        State = json['State'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'City': City,
        'Country': Country,
        'Line1': Line1,
        'Line2': Line2,
        'PostalCode': PostalCode,
        'State': State
    });

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class SessionCustomerDetailsTaxId extends StripeEntity1<SessionCustomerDetailsTaxId> implements IConvertible
{
    String? Type;
    String? Value;

    SessionCustomerDetailsTaxId({this.Type,this.Value});
    SessionCustomerDetailsTaxId.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Type = json['Type'];
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Type': Type,
        'Value': Value
    });

    getTypeName() => "SessionCustomerDetailsTaxId";
    TypeContext? context = _ctx;
}

class SessionCustomerDetails extends StripeEntity1<SessionCustomerDetails> implements IConvertible
{
    Address? Address;
    String? Email;
    String? Name;
    String? Phone;
    String? TaxExempt;
    List<SessionCustomerDetailsTaxId>? TaxIds;

    SessionCustomerDetails({this.Address,this.Email,this.Name,this.Phone,this.TaxExempt,this.TaxIds});
    SessionCustomerDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        Email = json['Email'];
        Name = json['Name'];
        Phone = json['Phone'];
        TaxExempt = json['TaxExempt'];
        TaxIds = JsonConverters.fromJson(json['TaxIds'],'List<SessionCustomerDetailsTaxId>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'Email': Email,
        'Name': Name,
        'Phone': Phone,
        'TaxExempt': TaxExempt,
        'TaxIds': JsonConverters.toJson(TaxIds,'List<SessionCustomerDetailsTaxId>',context!)
    });

    getTypeName() => "SessionCustomerDetails";
    TypeContext? context = _ctx;
}

class SessionInvoiceCreationInvoiceDataCustomField extends StripeEntity1<SessionInvoiceCreationInvoiceDataCustomField> implements IConvertible
{
    String? Name;
    String? Value;

    SessionInvoiceCreationInvoiceDataCustomField({this.Name,this.Value});
    SessionInvoiceCreationInvoiceDataCustomField.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Name = json['Name'];
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Name': Name,
        'Value': Value
    });

    getTypeName() => "SessionInvoiceCreationInvoiceDataCustomField";
    TypeContext? context = _ctx;
}

class SessionInvoiceCreationInvoiceDataRenderingOptions extends StripeEntity1<SessionInvoiceCreationInvoiceDataRenderingOptions> implements IConvertible
{
    String? AmountTaxDisplay;

    SessionInvoiceCreationInvoiceDataRenderingOptions({this.AmountTaxDisplay});
    SessionInvoiceCreationInvoiceDataRenderingOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AmountTaxDisplay = json['AmountTaxDisplay'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AmountTaxDisplay': AmountTaxDisplay
    });

    getTypeName() => "SessionInvoiceCreationInvoiceDataRenderingOptions";
    TypeContext? context = _ctx;
}

class SessionInvoiceCreationInvoiceData extends StripeEntity1<SessionInvoiceCreationInvoiceData> implements IHasMetadata, IConvertible
{
    List<SessionInvoiceCreationInvoiceDataCustomField>? CustomFields;
    String? Description;
    String? Footer;
    Map<String,String?>? Metadata;
    SessionInvoiceCreationInvoiceDataRenderingOptions? RenderingOptions;

    SessionInvoiceCreationInvoiceData({this.CustomFields,this.Description,this.Footer,this.Metadata,this.RenderingOptions});
    SessionInvoiceCreationInvoiceData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<SessionInvoiceCreationInvoiceDataCustomField>',context!);
        Description = json['Description'];
        Footer = json['Footer'];
        Metadata = JsonConverters.toStringMap(json['Metadata']);
        RenderingOptions = JsonConverters.fromJson(json['RenderingOptions'],'SessionInvoiceCreationInvoiceDataRenderingOptions',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'CustomFields': JsonConverters.toJson(CustomFields,'List<SessionInvoiceCreationInvoiceDataCustomField>',context!),
        'Description': Description,
        'Footer': Footer,
        'Metadata': Metadata,
        'RenderingOptions': JsonConverters.toJson(RenderingOptions,'SessionInvoiceCreationInvoiceDataRenderingOptions',context!)
    });

    getTypeName() => "SessionInvoiceCreationInvoiceData";
    TypeContext? context = _ctx;
}

class SessionInvoiceCreation extends StripeEntity1<SessionInvoiceCreation> implements IConvertible
{
    bool? Enabled;
    SessionInvoiceCreationInvoiceData? InvoiceData;

    SessionInvoiceCreation({this.Enabled,this.InvoiceData});
    SessionInvoiceCreation.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Enabled = json['Enabled'];
        InvoiceData = JsonConverters.fromJson(json['InvoiceData'],'SessionInvoiceCreationInvoiceData',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Enabled': Enabled,
        'InvoiceData': JsonConverters.toJson(InvoiceData,'SessionInvoiceCreationInvoiceData',context!)
    });

    getTypeName() => "SessionInvoiceCreation";
    TypeContext? context = _ctx;
}

class CouponAppliesTo extends StripeEntity1<CouponAppliesTo> implements IConvertible
{
    List<String>? Products;

    CouponAppliesTo({this.Products});
    CouponAppliesTo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Products = JsonConverters.fromJson(json['Products'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Products': JsonConverters.toJson(Products,'List<String>',context!)
    });

    getTypeName() => "CouponAppliesTo";
    TypeContext? context = _ctx;
}

class CouponCurrencyOptions extends StripeEntity1<CouponCurrencyOptions> implements IConvertible
{
    int? AmountOff;

    CouponCurrencyOptions({this.AmountOff});
    CouponCurrencyOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AmountOff = json['AmountOff'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AmountOff': AmountOff
    });

    getTypeName() => "CouponCurrencyOptions";
    TypeContext? context = _ctx;
}

class Coupon extends StripeEntity1<Coupon> implements IHasId, IHasMetadata, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    int? AmountOff;
    CouponAppliesTo? AppliesTo;
    DateTime? Created;
    String? Currency;
    Map<String,CouponCurrencyOptions?>? CurrencyOptions;
    bool? Deleted;
    String? Duration;
    int? DurationInMonths;
    bool? Livemode;
    int? MaxRedemptions;
    Map<String,String?>? Metadata;
    String? Name;
    double? PercentOff;
    DateTime? RedeemBy;
    int? TimesRedeemed;
    bool? Valid;

    Coupon({this.Id,this.Object,this.AmountOff,this.AppliesTo,this.Created,this.Currency,this.CurrencyOptions,this.Deleted,this.Duration,this.DurationInMonths,this.Livemode,this.MaxRedemptions,this.Metadata,this.Name,this.PercentOff,this.RedeemBy,this.TimesRedeemed,this.Valid});
    Coupon.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        AmountOff = json['AmountOff'];
        AppliesTo = JsonConverters.fromJson(json['AppliesTo'],'CouponAppliesTo',context!);
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Currency = json['Currency'];
        CurrencyOptions = JsonConverters.fromJson(json['CurrencyOptions'],'Map<String,CouponCurrencyOptions?>',context!);
        Deleted = json['Deleted'];
        Duration = json['Duration'];
        DurationInMonths = json['DurationInMonths'];
        Livemode = json['Livemode'];
        MaxRedemptions = json['MaxRedemptions'];
        Metadata = JsonConverters.toStringMap(json['Metadata']);
        Name = json['Name'];
        PercentOff = JsonConverters.toDouble(json['PercentOff']);
        RedeemBy = JsonConverters.fromJson(json['RedeemBy'],'DateTime',context!);
        TimesRedeemed = json['TimesRedeemed'];
        Valid = json['Valid'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'AmountOff': AmountOff,
        'AppliesTo': JsonConverters.toJson(AppliesTo,'CouponAppliesTo',context!),
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Currency': Currency,
        'CurrencyOptions': JsonConverters.toJson(CurrencyOptions,'Map<String,CouponCurrencyOptions?>',context!),
        'Deleted': Deleted,
        'Duration': Duration,
        'DurationInMonths': DurationInMonths,
        'Livemode': Livemode,
        'MaxRedemptions': MaxRedemptions,
        'Metadata': Metadata,
        'Name': Name,
        'PercentOff': PercentOff,
        'RedeemBy': JsonConverters.toJson(RedeemBy,'DateTime',context!),
        'TimesRedeemed': TimesRedeemed,
        'Valid': Valid
    });

    getTypeName() => "Coupon";
    TypeContext? context = _ctx;
}

class Discount extends StripeEntity1<Discount> implements IHasId, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    String? CheckoutSession;
    Coupon? Coupon;
    bool? Deleted;
    DateTime? End;
    String? Invoice;
    String? InvoiceItem;
    DateTime? Start;

    Discount({this.Id,this.Object,this.CheckoutSession,this.Coupon,this.Deleted,this.End,this.Invoice,this.InvoiceItem,this.Start});
    Discount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        CheckoutSession = json['CheckoutSession'];
        Coupon = JsonConverters.fromJson(json['Coupon'],'Coupon',context!);
        Deleted = json['Deleted'];
        End = JsonConverters.fromJson(json['End'],'DateTime',context!);
        Invoice = json['Invoice'];
        InvoiceItem = json['InvoiceItem'];
        Start = JsonConverters.fromJson(json['Start'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'CheckoutSession': CheckoutSession,
        'Coupon': JsonConverters.toJson(Coupon,'Coupon',context!),
        'Deleted': Deleted,
        'End': JsonConverters.toJson(End,'DateTime',context!),
        'Invoice': Invoice,
        'InvoiceItem': InvoiceItem,
        'Start': JsonConverters.toJson(Start,'DateTime',context!)
    });

    getTypeName() => "Discount";
    TypeContext? context = _ctx;
}

class LineItemDiscount extends StripeEntity1<LineItemDiscount> implements IConvertible
{
    int? Amount;
    Discount? Discount;

    LineItemDiscount({this.Amount,this.Discount});
    LineItemDiscount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Amount = json['Amount'];
        Discount = JsonConverters.fromJson(json['Discount'],'Discount',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Amount': Amount,
        'Discount': JsonConverters.toJson(Discount,'Discount',context!)
    });

    getTypeName() => "LineItemDiscount";
    TypeContext? context = _ctx;
}

class PriceCurrencyOptionsCustomUnitAmount extends StripeEntity1<PriceCurrencyOptionsCustomUnitAmount> implements IConvertible
{
    int? Maximum;
    int? Minimum;
    int? Preset;

    PriceCurrencyOptionsCustomUnitAmount({this.Maximum,this.Minimum,this.Preset});
    PriceCurrencyOptionsCustomUnitAmount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Maximum = json['Maximum'];
        Minimum = json['Minimum'];
        Preset = json['Preset'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Maximum': Maximum,
        'Minimum': Minimum,
        'Preset': Preset
    });

    getTypeName() => "PriceCurrencyOptionsCustomUnitAmount";
    TypeContext? context = _ctx;
}

class PriceCurrencyOptionsTier extends StripeEntity1<PriceCurrencyOptionsTier> implements IConvertible
{
    int? FlatAmount;
    double? FlatAmountDecimal;
    int? UnitAmount;
    double? UnitAmountDecimal;
    int? UpTo;

    PriceCurrencyOptionsTier({this.FlatAmount,this.FlatAmountDecimal,this.UnitAmount,this.UnitAmountDecimal,this.UpTo});
    PriceCurrencyOptionsTier.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        FlatAmount = json['FlatAmount'];
        FlatAmountDecimal = JsonConverters.toDouble(json['FlatAmountDecimal']);
        UnitAmount = json['UnitAmount'];
        UnitAmountDecimal = JsonConverters.toDouble(json['UnitAmountDecimal']);
        UpTo = json['UpTo'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'FlatAmount': FlatAmount,
        'FlatAmountDecimal': FlatAmountDecimal,
        'UnitAmount': UnitAmount,
        'UnitAmountDecimal': UnitAmountDecimal,
        'UpTo': UpTo
    });

    getTypeName() => "PriceCurrencyOptionsTier";
    TypeContext? context = _ctx;
}

class PriceCurrencyOptions extends StripeEntity1<PriceCurrencyOptions> implements IConvertible
{
    PriceCurrencyOptionsCustomUnitAmount? CustomUnitAmount;
    String? TaxBehavior;
    List<PriceCurrencyOptionsTier>? Tiers;
    int? UnitAmount;
    double? UnitAmountDecimal;

    PriceCurrencyOptions({this.CustomUnitAmount,this.TaxBehavior,this.Tiers,this.UnitAmount,this.UnitAmountDecimal});
    PriceCurrencyOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        CustomUnitAmount = JsonConverters.fromJson(json['CustomUnitAmount'],'PriceCurrencyOptionsCustomUnitAmount',context!);
        TaxBehavior = json['TaxBehavior'];
        Tiers = JsonConverters.fromJson(json['Tiers'],'List<PriceCurrencyOptionsTier>',context!);
        UnitAmount = json['UnitAmount'];
        UnitAmountDecimal = JsonConverters.toDouble(json['UnitAmountDecimal']);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'CustomUnitAmount': JsonConverters.toJson(CustomUnitAmount,'PriceCurrencyOptionsCustomUnitAmount',context!),
        'TaxBehavior': TaxBehavior,
        'Tiers': JsonConverters.toJson(Tiers,'List<PriceCurrencyOptionsTier>',context!),
        'UnitAmount': UnitAmount,
        'UnitAmountDecimal': UnitAmountDecimal
    });

    getTypeName() => "PriceCurrencyOptions";
    TypeContext? context = _ctx;
}

class PriceCustomUnitAmount extends StripeEntity1<PriceCustomUnitAmount> implements IConvertible
{
    int? Maximum;
    int? Minimum;
    int? Preset;

    PriceCustomUnitAmount({this.Maximum,this.Minimum,this.Preset});
    PriceCustomUnitAmount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Maximum = json['Maximum'];
        Minimum = json['Minimum'];
        Preset = json['Preset'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Maximum': Maximum,
        'Minimum': Minimum,
        'Preset': Preset
    });

    getTypeName() => "PriceCustomUnitAmount";
    TypeContext? context = _ctx;
}

class PriceRecurring extends StripeEntity1<PriceRecurring> implements IConvertible
{
    String? AggregateUsage;
    String? Interval;
    int? IntervalCount;
    int? TrialPeriodDays;
    String? UsageType;

    PriceRecurring({this.AggregateUsage,this.Interval,this.IntervalCount,this.TrialPeriodDays,this.UsageType});
    PriceRecurring.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AggregateUsage = json['AggregateUsage'];
        Interval = json['Interval'];
        IntervalCount = json['IntervalCount'];
        TrialPeriodDays = json['TrialPeriodDays'];
        UsageType = json['UsageType'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AggregateUsage': AggregateUsage,
        'Interval': Interval,
        'IntervalCount': IntervalCount,
        'TrialPeriodDays': TrialPeriodDays,
        'UsageType': UsageType
    });

    getTypeName() => "PriceRecurring";
    TypeContext? context = _ctx;
}

class PriceTier extends StripeEntity1<PriceTier> implements IConvertible
{
    int? FlatAmount;
    double? FlatAmountDecimal;
    int? UnitAmount;
    double? UnitAmountDecimal;
    int? UpTo;

    PriceTier({this.FlatAmount,this.FlatAmountDecimal,this.UnitAmount,this.UnitAmountDecimal,this.UpTo});
    PriceTier.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        FlatAmount = json['FlatAmount'];
        FlatAmountDecimal = JsonConverters.toDouble(json['FlatAmountDecimal']);
        UnitAmount = json['UnitAmount'];
        UnitAmountDecimal = JsonConverters.toDouble(json['UnitAmountDecimal']);
        UpTo = json['UpTo'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'FlatAmount': FlatAmount,
        'FlatAmountDecimal': FlatAmountDecimal,
        'UnitAmount': UnitAmount,
        'UnitAmountDecimal': UnitAmountDecimal,
        'UpTo': UpTo
    });

    getTypeName() => "PriceTier";
    TypeContext? context = _ctx;
}

class PriceTransformQuantity extends StripeEntity1<PriceTransformQuantity> implements IConvertible
{
    int? DivideBy;
    String? Round;

    PriceTransformQuantity({this.DivideBy,this.Round});
    PriceTransformQuantity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        DivideBy = json['DivideBy'];
        Round = json['Round'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'DivideBy': DivideBy,
        'Round': Round
    });

    getTypeName() => "PriceTransformQuantity";
    TypeContext? context = _ctx;
}

class Price extends StripeEntity1<Price> implements IHasId, IHasMetadata, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    bool? Active;
    String? BillingScheme;
    DateTime? Created;
    String? Currency;
    Map<String,PriceCurrencyOptions?>? CurrencyOptions;
    PriceCustomUnitAmount? CustomUnitAmount;
    bool? Deleted;
    bool? Livemode;
    String? LookupKey;
    Map<String,String?>? Metadata;
    String? Nickname;
    PriceRecurring? Recurring;
    String? TaxBehavior;
    List<PriceTier>? Tiers;
    String? TiersMode;
    PriceTransformQuantity? TransformQuantity;
    String? Type;
    int? UnitAmount;
    double? UnitAmountDecimal;

    Price({this.Id,this.Object,this.Active,this.BillingScheme,this.Created,this.Currency,this.CurrencyOptions,this.CustomUnitAmount,this.Deleted,this.Livemode,this.LookupKey,this.Metadata,this.Nickname,this.Recurring,this.TaxBehavior,this.Tiers,this.TiersMode,this.TransformQuantity,this.Type,this.UnitAmount,this.UnitAmountDecimal});
    Price.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        Active = json['Active'];
        BillingScheme = json['BillingScheme'];
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Currency = json['Currency'];
        CurrencyOptions = JsonConverters.fromJson(json['CurrencyOptions'],'Map<String,PriceCurrencyOptions?>',context!);
        CustomUnitAmount = JsonConverters.fromJson(json['CustomUnitAmount'],'PriceCustomUnitAmount',context!);
        Deleted = json['Deleted'];
        Livemode = json['Livemode'];
        LookupKey = json['LookupKey'];
        Metadata = JsonConverters.toStringMap(json['Metadata']);
        Nickname = json['Nickname'];
        Recurring = JsonConverters.fromJson(json['Recurring'],'PriceRecurring',context!);
        TaxBehavior = json['TaxBehavior'];
        Tiers = JsonConverters.fromJson(json['Tiers'],'List<PriceTier>',context!);
        TiersMode = json['TiersMode'];
        TransformQuantity = JsonConverters.fromJson(json['TransformQuantity'],'PriceTransformQuantity',context!);
        Type = json['Type'];
        UnitAmount = json['UnitAmount'];
        UnitAmountDecimal = JsonConverters.toDouble(json['UnitAmountDecimal']);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'Active': Active,
        'BillingScheme': BillingScheme,
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Currency': Currency,
        'CurrencyOptions': JsonConverters.toJson(CurrencyOptions,'Map<String,PriceCurrencyOptions?>',context!),
        'CustomUnitAmount': JsonConverters.toJson(CustomUnitAmount,'PriceCustomUnitAmount',context!),
        'Deleted': Deleted,
        'Livemode': Livemode,
        'LookupKey': LookupKey,
        'Metadata': Metadata,
        'Nickname': Nickname,
        'Recurring': JsonConverters.toJson(Recurring,'PriceRecurring',context!),
        'TaxBehavior': TaxBehavior,
        'Tiers': JsonConverters.toJson(Tiers,'List<PriceTier>',context!),
        'TiersMode': TiersMode,
        'TransformQuantity': JsonConverters.toJson(TransformQuantity,'PriceTransformQuantity',context!),
        'Type': Type,
        'UnitAmount': UnitAmount,
        'UnitAmountDecimal': UnitAmountDecimal
    });

    getTypeName() => "Price";
    TypeContext? context = _ctx;
}

class TaxRate extends StripeEntity1<TaxRate> implements IHasId, IHasMetadata, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    bool? Active;
    String? Country;
    DateTime? Created;
    String? Description;
    String? DisplayName;
    bool? Inclusive;
    String? Jurisdiction;
    bool? Livemode;
    Map<String,String?>? Metadata;
    double? Percentage;
    String? State;
    String? TaxType;

    TaxRate({this.Id,this.Object,this.Active,this.Country,this.Created,this.Description,this.DisplayName,this.Inclusive,this.Jurisdiction,this.Livemode,this.Metadata,this.Percentage,this.State,this.TaxType});
    TaxRate.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        Active = json['Active'];
        Country = json['Country'];
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Description = json['Description'];
        DisplayName = json['DisplayName'];
        Inclusive = json['Inclusive'];
        Jurisdiction = json['Jurisdiction'];
        Livemode = json['Livemode'];
        Metadata = JsonConverters.toStringMap(json['Metadata']);
        Percentage = JsonConverters.toDouble(json['Percentage']);
        State = json['State'];
        TaxType = json['TaxType'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'Active': Active,
        'Country': Country,
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Description': Description,
        'DisplayName': DisplayName,
        'Inclusive': Inclusive,
        'Jurisdiction': Jurisdiction,
        'Livemode': Livemode,
        'Metadata': Metadata,
        'Percentage': Percentage,
        'State': State,
        'TaxType': TaxType
    });

    getTypeName() => "TaxRate";
    TypeContext? context = _ctx;
}

class LineItemTax extends StripeEntity1<LineItemTax> implements IConvertible
{
    int? Amount;
    TaxRate? Rate;

    LineItemTax({this.Amount,this.Rate});
    LineItemTax.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Amount = json['Amount'];
        Rate = JsonConverters.fromJson(json['Rate'],'TaxRate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Amount': Amount,
        'Rate': JsonConverters.toJson(Rate,'TaxRate',context!)
    });

    getTypeName() => "LineItemTax";
    TypeContext? context = _ctx;
}

class LineItem extends StripeEntity1<LineItem> implements IHasId, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    int? AmountDiscount;
    int? AmountSubtotal;
    int? AmountTax;
    int? AmountTotal;
    String? Currency;
    bool? Deleted;
    String? Description;
    List<LineItemDiscount>? Discounts;
    Price? Price;
    int? Quantity;
    List<LineItemTax>? Taxes;

    LineItem({this.Id,this.Object,this.AmountDiscount,this.AmountSubtotal,this.AmountTax,this.AmountTotal,this.Currency,this.Deleted,this.Description,this.Discounts,this.Price,this.Quantity,this.Taxes});
    LineItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        AmountDiscount = json['AmountDiscount'];
        AmountSubtotal = json['AmountSubtotal'];
        AmountTax = json['AmountTax'];
        AmountTotal = json['AmountTotal'];
        Currency = json['Currency'];
        Deleted = json['Deleted'];
        Description = json['Description'];
        Discounts = JsonConverters.fromJson(json['Discounts'],'List<LineItemDiscount>',context!);
        Price = JsonConverters.fromJson(json['Price'],'Price',context!);
        Quantity = json['Quantity'];
        Taxes = JsonConverters.fromJson(json['Taxes'],'List<LineItemTax>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'AmountDiscount': AmountDiscount,
        'AmountSubtotal': AmountSubtotal,
        'AmountTax': AmountTax,
        'AmountTotal': AmountTotal,
        'Currency': Currency,
        'Deleted': Deleted,
        'Description': Description,
        'Discounts': JsonConverters.toJson(Discounts,'List<LineItemDiscount>',context!),
        'Price': JsonConverters.toJson(Price,'Price',context!),
        'Quantity': Quantity,
        'Taxes': JsonConverters.toJson(Taxes,'List<LineItemTax>',context!)
    });

    getTypeName() => "LineItem";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAcssDebitMandateOptions extends StripeEntity1<SessionPaymentMethodOptionsAcssDebitMandateOptions> implements IConvertible
{
    String? CustomMandateUrl;
    List<String>? DefaultFor;
    String? IntervalDescription;
    String? PaymentSchedule;
    String? TransactionType;

    SessionPaymentMethodOptionsAcssDebitMandateOptions({this.CustomMandateUrl,this.DefaultFor,this.IntervalDescription,this.PaymentSchedule,this.TransactionType});
    SessionPaymentMethodOptionsAcssDebitMandateOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        CustomMandateUrl = json['CustomMandateUrl'];
        DefaultFor = JsonConverters.fromJson(json['DefaultFor'],'List<String>',context!);
        IntervalDescription = json['IntervalDescription'];
        PaymentSchedule = json['PaymentSchedule'];
        TransactionType = json['TransactionType'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'CustomMandateUrl': CustomMandateUrl,
        'DefaultFor': JsonConverters.toJson(DefaultFor,'List<String>',context!),
        'IntervalDescription': IntervalDescription,
        'PaymentSchedule': PaymentSchedule,
        'TransactionType': TransactionType
    });

    getTypeName() => "SessionPaymentMethodOptionsAcssDebitMandateOptions";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAcssDebit extends StripeEntity1<SessionPaymentMethodOptionsAcssDebit> implements IConvertible
{
    String? Currency;
    SessionPaymentMethodOptionsAcssDebitMandateOptions? MandateOptions;
    String? SetupFutureUsage;
    String? VerificationMethod;

    SessionPaymentMethodOptionsAcssDebit({this.Currency,this.MandateOptions,this.SetupFutureUsage,this.VerificationMethod});
    SessionPaymentMethodOptionsAcssDebit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Currency = json['Currency'];
        MandateOptions = JsonConverters.fromJson(json['MandateOptions'],'SessionPaymentMethodOptionsAcssDebitMandateOptions',context!);
        SetupFutureUsage = json['SetupFutureUsage'];
        VerificationMethod = json['VerificationMethod'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Currency': Currency,
        'MandateOptions': JsonConverters.toJson(MandateOptions,'SessionPaymentMethodOptionsAcssDebitMandateOptions',context!),
        'SetupFutureUsage': SetupFutureUsage,
        'VerificationMethod': VerificationMethod
    });

    getTypeName() => "SessionPaymentMethodOptionsAcssDebit";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAffirm extends StripeEntity1<SessionPaymentMethodOptionsAffirm> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsAffirm({this.SetupFutureUsage});
    SessionPaymentMethodOptionsAffirm.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsAffirm";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAfterpayClearpay extends StripeEntity1<SessionPaymentMethodOptionsAfterpayClearpay> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsAfterpayClearpay({this.SetupFutureUsage});
    SessionPaymentMethodOptionsAfterpayClearpay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsAfterpayClearpay";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAlipay extends StripeEntity1<SessionPaymentMethodOptionsAlipay> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsAlipay({this.SetupFutureUsage});
    SessionPaymentMethodOptionsAlipay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsAlipay";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsAuBecsDebit extends StripeEntity1<SessionPaymentMethodOptionsAuBecsDebit> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsAuBecsDebit({this.SetupFutureUsage});
    SessionPaymentMethodOptionsAuBecsDebit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsAuBecsDebit";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsBacsDebit extends StripeEntity1<SessionPaymentMethodOptionsBacsDebit> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsBacsDebit({this.SetupFutureUsage});
    SessionPaymentMethodOptionsBacsDebit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsBacsDebit";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsBancontact extends StripeEntity1<SessionPaymentMethodOptionsBancontact> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsBancontact({this.SetupFutureUsage});
    SessionPaymentMethodOptionsBancontact.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsBancontact";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsBoleto extends StripeEntity1<SessionPaymentMethodOptionsBoleto> implements IConvertible
{
    int? ExpiresAfterDays;
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsBoleto({this.ExpiresAfterDays,this.SetupFutureUsage});
    SessionPaymentMethodOptionsBoleto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ExpiresAfterDays = json['ExpiresAfterDays'];
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ExpiresAfterDays': ExpiresAfterDays,
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsBoleto";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsCardInstallments extends StripeEntity1<SessionPaymentMethodOptionsCardInstallments> implements IConvertible
{
    bool? Enabled;

    SessionPaymentMethodOptionsCardInstallments({this.Enabled});
    SessionPaymentMethodOptionsCardInstallments.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Enabled = json['Enabled'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Enabled': Enabled
    });

    getTypeName() => "SessionPaymentMethodOptionsCardInstallments";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsCard extends StripeEntity1<SessionPaymentMethodOptionsCard> implements IConvertible
{
    SessionPaymentMethodOptionsCardInstallments? Installments;
    String? SetupFutureUsage;
    String? StatementDescriptorSuffixKana;
    String? StatementDescriptorSuffixKanji;

    SessionPaymentMethodOptionsCard({this.Installments,this.SetupFutureUsage,this.StatementDescriptorSuffixKana,this.StatementDescriptorSuffixKanji});
    SessionPaymentMethodOptionsCard.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Installments = JsonConverters.fromJson(json['Installments'],'SessionPaymentMethodOptionsCardInstallments',context!);
        SetupFutureUsage = json['SetupFutureUsage'];
        StatementDescriptorSuffixKana = json['StatementDescriptorSuffixKana'];
        StatementDescriptorSuffixKanji = json['StatementDescriptorSuffixKanji'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Installments': JsonConverters.toJson(Installments,'SessionPaymentMethodOptionsCardInstallments',context!),
        'SetupFutureUsage': SetupFutureUsage,
        'StatementDescriptorSuffixKana': StatementDescriptorSuffixKana,
        'StatementDescriptorSuffixKanji': StatementDescriptorSuffixKanji
    });

    getTypeName() => "SessionPaymentMethodOptionsCard";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer extends StripeEntity1<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer> implements IConvertible
{
    String? Country;

    SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer({this.Country});
    SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Country = json['Country'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Country': Country
    });

    getTypeName() => "SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsCustomerBalanceBankTransfer extends StripeEntity1<SessionPaymentMethodOptionsCustomerBalanceBankTransfer> implements IConvertible
{
    SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer? EuBankTransfer;
    List<String>? RequestedAddressTypes;
    String? Type;

    SessionPaymentMethodOptionsCustomerBalanceBankTransfer({this.EuBankTransfer,this.RequestedAddressTypes,this.Type});
    SessionPaymentMethodOptionsCustomerBalanceBankTransfer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        EuBankTransfer = JsonConverters.fromJson(json['EuBankTransfer'],'SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer',context!);
        RequestedAddressTypes = JsonConverters.fromJson(json['RequestedAddressTypes'],'List<String>',context!);
        Type = json['Type'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'EuBankTransfer': JsonConverters.toJson(EuBankTransfer,'SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer',context!),
        'RequestedAddressTypes': JsonConverters.toJson(RequestedAddressTypes,'List<String>',context!),
        'Type': Type
    });

    getTypeName() => "SessionPaymentMethodOptionsCustomerBalanceBankTransfer";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsCustomerBalance extends StripeEntity1<SessionPaymentMethodOptionsCustomerBalance> implements IConvertible
{
    SessionPaymentMethodOptionsCustomerBalanceBankTransfer? BankTransfer;
    String? FundingType;
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsCustomerBalance({this.BankTransfer,this.FundingType,this.SetupFutureUsage});
    SessionPaymentMethodOptionsCustomerBalance.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        BankTransfer = JsonConverters.fromJson(json['BankTransfer'],'SessionPaymentMethodOptionsCustomerBalanceBankTransfer',context!);
        FundingType = json['FundingType'];
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'BankTransfer': JsonConverters.toJson(BankTransfer,'SessionPaymentMethodOptionsCustomerBalanceBankTransfer',context!),
        'FundingType': FundingType,
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsCustomerBalance";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsEps extends StripeEntity1<SessionPaymentMethodOptionsEps> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsEps({this.SetupFutureUsage});
    SessionPaymentMethodOptionsEps.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsEps";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsFpx extends StripeEntity1<SessionPaymentMethodOptionsFpx> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsFpx({this.SetupFutureUsage});
    SessionPaymentMethodOptionsFpx.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsFpx";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsGiropay extends StripeEntity1<SessionPaymentMethodOptionsGiropay> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsGiropay({this.SetupFutureUsage});
    SessionPaymentMethodOptionsGiropay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsGiropay";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsGrabpay extends StripeEntity1<SessionPaymentMethodOptionsGrabpay> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsGrabpay({this.SetupFutureUsage});
    SessionPaymentMethodOptionsGrabpay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsGrabpay";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsIdeal extends StripeEntity1<SessionPaymentMethodOptionsIdeal> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsIdeal({this.SetupFutureUsage});
    SessionPaymentMethodOptionsIdeal.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsIdeal";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsKlarna extends StripeEntity1<SessionPaymentMethodOptionsKlarna> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsKlarna({this.SetupFutureUsage});
    SessionPaymentMethodOptionsKlarna.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsKlarna";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsKonbini extends StripeEntity1<SessionPaymentMethodOptionsKonbini> implements IConvertible
{
    int? ExpiresAfterDays;
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsKonbini({this.ExpiresAfterDays,this.SetupFutureUsage});
    SessionPaymentMethodOptionsKonbini.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ExpiresAfterDays = json['ExpiresAfterDays'];
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ExpiresAfterDays': ExpiresAfterDays,
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsKonbini";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsOxxo extends StripeEntity1<SessionPaymentMethodOptionsOxxo> implements IConvertible
{
    int? ExpiresAfterDays;
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsOxxo({this.ExpiresAfterDays,this.SetupFutureUsage});
    SessionPaymentMethodOptionsOxxo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ExpiresAfterDays = json['ExpiresAfterDays'];
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ExpiresAfterDays': ExpiresAfterDays,
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsOxxo";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsP24 extends StripeEntity1<SessionPaymentMethodOptionsP24> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsP24({this.SetupFutureUsage});
    SessionPaymentMethodOptionsP24.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsP24";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsPaynow extends StripeEntity1<SessionPaymentMethodOptionsPaynow> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsPaynow({this.SetupFutureUsage});
    SessionPaymentMethodOptionsPaynow.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsPaynow";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsPix extends StripeEntity1<SessionPaymentMethodOptionsPix> implements IConvertible
{
    int? ExpiresAfterSeconds;

    SessionPaymentMethodOptionsPix({this.ExpiresAfterSeconds});
    SessionPaymentMethodOptionsPix.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ExpiresAfterSeconds = json['ExpiresAfterSeconds'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ExpiresAfterSeconds': ExpiresAfterSeconds
    });

    getTypeName() => "SessionPaymentMethodOptionsPix";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsSepaDebit extends StripeEntity1<SessionPaymentMethodOptionsSepaDebit> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsSepaDebit({this.SetupFutureUsage});
    SessionPaymentMethodOptionsSepaDebit.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsSepaDebit";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsSofort extends StripeEntity1<SessionPaymentMethodOptionsSofort> implements IConvertible
{
    String? SetupFutureUsage;

    SessionPaymentMethodOptionsSofort({this.SetupFutureUsage});
    SessionPaymentMethodOptionsSofort.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        SetupFutureUsage = json['SetupFutureUsage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'SetupFutureUsage': SetupFutureUsage
    });

    getTypeName() => "SessionPaymentMethodOptionsSofort";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsUsBankAccountFinancialConnections extends StripeEntity1<SessionPaymentMethodOptionsUsBankAccountFinancialConnections> implements IConvertible
{
    List<String>? Permissions;
    String? ReturnUrl;

    SessionPaymentMethodOptionsUsBankAccountFinancialConnections({this.Permissions,this.ReturnUrl});
    SessionPaymentMethodOptionsUsBankAccountFinancialConnections.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Permissions = JsonConverters.fromJson(json['Permissions'],'List<String>',context!);
        ReturnUrl = json['ReturnUrl'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Permissions': JsonConverters.toJson(Permissions,'List<String>',context!),
        'ReturnUrl': ReturnUrl
    });

    getTypeName() => "SessionPaymentMethodOptionsUsBankAccountFinancialConnections";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptionsUsBankAccount extends StripeEntity1<SessionPaymentMethodOptionsUsBankAccount> implements IConvertible
{
    SessionPaymentMethodOptionsUsBankAccountFinancialConnections? FinancialConnections;
    String? SetupFutureUsage;
    String? VerificationMethod;

    SessionPaymentMethodOptionsUsBankAccount({this.FinancialConnections,this.SetupFutureUsage,this.VerificationMethod});
    SessionPaymentMethodOptionsUsBankAccount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        FinancialConnections = JsonConverters.fromJson(json['FinancialConnections'],'SessionPaymentMethodOptionsUsBankAccountFinancialConnections',context!);
        SetupFutureUsage = json['SetupFutureUsage'];
        VerificationMethod = json['VerificationMethod'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'FinancialConnections': JsonConverters.toJson(FinancialConnections,'SessionPaymentMethodOptionsUsBankAccountFinancialConnections',context!),
        'SetupFutureUsage': SetupFutureUsage,
        'VerificationMethod': VerificationMethod
    });

    getTypeName() => "SessionPaymentMethodOptionsUsBankAccount";
    TypeContext? context = _ctx;
}

class SessionPaymentMethodOptions extends StripeEntity1<SessionPaymentMethodOptions> implements IConvertible
{
    SessionPaymentMethodOptionsAcssDebit? AcssDebit;
    SessionPaymentMethodOptionsAffirm? Affirm;
    SessionPaymentMethodOptionsAfterpayClearpay? AfterpayClearpay;
    SessionPaymentMethodOptionsAlipay? Alipay;
    SessionPaymentMethodOptionsAuBecsDebit? AuBecsDebit;
    SessionPaymentMethodOptionsBacsDebit? BacsDebit;
    SessionPaymentMethodOptionsBancontact? Bancontact;
    SessionPaymentMethodOptionsBoleto? Boleto;
    SessionPaymentMethodOptionsCard? Card;
    SessionPaymentMethodOptionsCustomerBalance? CustomerBalance;
    SessionPaymentMethodOptionsEps? Eps;
    SessionPaymentMethodOptionsFpx? Fpx;
    SessionPaymentMethodOptionsGiropay? Giropay;
    SessionPaymentMethodOptionsGrabpay? Grabpay;
    SessionPaymentMethodOptionsIdeal? Ideal;
    SessionPaymentMethodOptionsKlarna? Klarna;
    SessionPaymentMethodOptionsKonbini? Konbini;
    SessionPaymentMethodOptionsOxxo? Oxxo;
    SessionPaymentMethodOptionsP24? P24;
    SessionPaymentMethodOptionsPaynow? Paynow;
    SessionPaymentMethodOptionsPix? Pix;
    SessionPaymentMethodOptionsSepaDebit? SepaDebit;
    SessionPaymentMethodOptionsSofort? Sofort;
    SessionPaymentMethodOptionsUsBankAccount? UsBankAccount;

    SessionPaymentMethodOptions({this.AcssDebit,this.Affirm,this.AfterpayClearpay,this.Alipay,this.AuBecsDebit,this.BacsDebit,this.Bancontact,this.Boleto,this.Card,this.CustomerBalance,this.Eps,this.Fpx,this.Giropay,this.Grabpay,this.Ideal,this.Klarna,this.Konbini,this.Oxxo,this.P24,this.Paynow,this.Pix,this.SepaDebit,this.Sofort,this.UsBankAccount});
    SessionPaymentMethodOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AcssDebit = JsonConverters.fromJson(json['AcssDebit'],'SessionPaymentMethodOptionsAcssDebit',context!);
        Affirm = JsonConverters.fromJson(json['Affirm'],'SessionPaymentMethodOptionsAffirm',context!);
        AfterpayClearpay = JsonConverters.fromJson(json['AfterpayClearpay'],'SessionPaymentMethodOptionsAfterpayClearpay',context!);
        Alipay = JsonConverters.fromJson(json['Alipay'],'SessionPaymentMethodOptionsAlipay',context!);
        AuBecsDebit = JsonConverters.fromJson(json['AuBecsDebit'],'SessionPaymentMethodOptionsAuBecsDebit',context!);
        BacsDebit = JsonConverters.fromJson(json['BacsDebit'],'SessionPaymentMethodOptionsBacsDebit',context!);
        Bancontact = JsonConverters.fromJson(json['Bancontact'],'SessionPaymentMethodOptionsBancontact',context!);
        Boleto = JsonConverters.fromJson(json['Boleto'],'SessionPaymentMethodOptionsBoleto',context!);
        Card = JsonConverters.fromJson(json['Card'],'SessionPaymentMethodOptionsCard',context!);
        CustomerBalance = JsonConverters.fromJson(json['CustomerBalance'],'SessionPaymentMethodOptionsCustomerBalance',context!);
        Eps = JsonConverters.fromJson(json['Eps'],'SessionPaymentMethodOptionsEps',context!);
        Fpx = JsonConverters.fromJson(json['Fpx'],'SessionPaymentMethodOptionsFpx',context!);
        Giropay = JsonConverters.fromJson(json['Giropay'],'SessionPaymentMethodOptionsGiropay',context!);
        Grabpay = JsonConverters.fromJson(json['Grabpay'],'SessionPaymentMethodOptionsGrabpay',context!);
        Ideal = JsonConverters.fromJson(json['Ideal'],'SessionPaymentMethodOptionsIdeal',context!);
        Klarna = JsonConverters.fromJson(json['Klarna'],'SessionPaymentMethodOptionsKlarna',context!);
        Konbini = JsonConverters.fromJson(json['Konbini'],'SessionPaymentMethodOptionsKonbini',context!);
        Oxxo = JsonConverters.fromJson(json['Oxxo'],'SessionPaymentMethodOptionsOxxo',context!);
        P24 = JsonConverters.fromJson(json['P24'],'SessionPaymentMethodOptionsP24',context!);
        Paynow = JsonConverters.fromJson(json['Paynow'],'SessionPaymentMethodOptionsPaynow',context!);
        Pix = JsonConverters.fromJson(json['Pix'],'SessionPaymentMethodOptionsPix',context!);
        SepaDebit = JsonConverters.fromJson(json['SepaDebit'],'SessionPaymentMethodOptionsSepaDebit',context!);
        Sofort = JsonConverters.fromJson(json['Sofort'],'SessionPaymentMethodOptionsSofort',context!);
        UsBankAccount = JsonConverters.fromJson(json['UsBankAccount'],'SessionPaymentMethodOptionsUsBankAccount',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AcssDebit': JsonConverters.toJson(AcssDebit,'SessionPaymentMethodOptionsAcssDebit',context!),
        'Affirm': JsonConverters.toJson(Affirm,'SessionPaymentMethodOptionsAffirm',context!),
        'AfterpayClearpay': JsonConverters.toJson(AfterpayClearpay,'SessionPaymentMethodOptionsAfterpayClearpay',context!),
        'Alipay': JsonConverters.toJson(Alipay,'SessionPaymentMethodOptionsAlipay',context!),
        'AuBecsDebit': JsonConverters.toJson(AuBecsDebit,'SessionPaymentMethodOptionsAuBecsDebit',context!),
        'BacsDebit': JsonConverters.toJson(BacsDebit,'SessionPaymentMethodOptionsBacsDebit',context!),
        'Bancontact': JsonConverters.toJson(Bancontact,'SessionPaymentMethodOptionsBancontact',context!),
        'Boleto': JsonConverters.toJson(Boleto,'SessionPaymentMethodOptionsBoleto',context!),
        'Card': JsonConverters.toJson(Card,'SessionPaymentMethodOptionsCard',context!),
        'CustomerBalance': JsonConverters.toJson(CustomerBalance,'SessionPaymentMethodOptionsCustomerBalance',context!),
        'Eps': JsonConverters.toJson(Eps,'SessionPaymentMethodOptionsEps',context!),
        'Fpx': JsonConverters.toJson(Fpx,'SessionPaymentMethodOptionsFpx',context!),
        'Giropay': JsonConverters.toJson(Giropay,'SessionPaymentMethodOptionsGiropay',context!),
        'Grabpay': JsonConverters.toJson(Grabpay,'SessionPaymentMethodOptionsGrabpay',context!),
        'Ideal': JsonConverters.toJson(Ideal,'SessionPaymentMethodOptionsIdeal',context!),
        'Klarna': JsonConverters.toJson(Klarna,'SessionPaymentMethodOptionsKlarna',context!),
        'Konbini': JsonConverters.toJson(Konbini,'SessionPaymentMethodOptionsKonbini',context!),
        'Oxxo': JsonConverters.toJson(Oxxo,'SessionPaymentMethodOptionsOxxo',context!),
        'P24': JsonConverters.toJson(P24,'SessionPaymentMethodOptionsP24',context!),
        'Paynow': JsonConverters.toJson(Paynow,'SessionPaymentMethodOptionsPaynow',context!),
        'Pix': JsonConverters.toJson(Pix,'SessionPaymentMethodOptionsPix',context!),
        'SepaDebit': JsonConverters.toJson(SepaDebit,'SessionPaymentMethodOptionsSepaDebit',context!),
        'Sofort': JsonConverters.toJson(Sofort,'SessionPaymentMethodOptionsSofort',context!),
        'UsBankAccount': JsonConverters.toJson(UsBankAccount,'SessionPaymentMethodOptionsUsBankAccount',context!)
    });

    getTypeName() => "SessionPaymentMethodOptions";
    TypeContext? context = _ctx;
}

class SessionPhoneNumberCollection extends StripeEntity1<SessionPhoneNumberCollection> implements IConvertible
{
    bool? Enabled;

    SessionPhoneNumberCollection({this.Enabled});
    SessionPhoneNumberCollection.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Enabled = json['Enabled'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Enabled': Enabled
    });

    getTypeName() => "SessionPhoneNumberCollection";
    TypeContext? context = _ctx;
}

class SessionShippingAddressCollection extends StripeEntity1<SessionShippingAddressCollection> implements IConvertible
{
    List<String>? AllowedCountries;

    SessionShippingAddressCollection({this.AllowedCountries});
    SessionShippingAddressCollection.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AllowedCountries = JsonConverters.fromJson(json['AllowedCountries'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AllowedCountries': JsonConverters.toJson(AllowedCountries,'List<String>',context!)
    });

    getTypeName() => "SessionShippingAddressCollection";
    TypeContext? context = _ctx;
}

class SessionShippingCostTax extends StripeEntity1<SessionShippingCostTax> implements IConvertible
{
    int? Amount;
    TaxRate? Rate;

    SessionShippingCostTax({this.Amount,this.Rate});
    SessionShippingCostTax.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Amount = json['Amount'];
        Rate = JsonConverters.fromJson(json['Rate'],'TaxRate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Amount': Amount,
        'Rate': JsonConverters.toJson(Rate,'TaxRate',context!)
    });

    getTypeName() => "SessionShippingCostTax";
    TypeContext? context = _ctx;
}

class SessionShippingCost extends StripeEntity1<SessionShippingCost> implements IConvertible
{
    int? AmountSubtotal;
    int? AmountTax;
    int? AmountTotal;
    List<SessionShippingCostTax>? Taxes;

    SessionShippingCost({this.AmountSubtotal,this.AmountTax,this.AmountTotal,this.Taxes});
    SessionShippingCost.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AmountSubtotal = json['AmountSubtotal'];
        AmountTax = json['AmountTax'];
        AmountTotal = json['AmountTotal'];
        Taxes = JsonConverters.fromJson(json['Taxes'],'List<SessionShippingCostTax>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AmountSubtotal': AmountSubtotal,
        'AmountTax': AmountTax,
        'AmountTotal': AmountTotal,
        'Taxes': JsonConverters.toJson(Taxes,'List<SessionShippingCostTax>',context!)
    });

    getTypeName() => "SessionShippingCost";
    TypeContext? context = _ctx;
}

class SessionShippingDetails extends StripeEntity1<SessionShippingDetails> implements IConvertible
{
    Address? Address;
    String? Carrier;
    String? Name;
    String? Phone;
    String? TrackingNumber;

    SessionShippingDetails({this.Address,this.Carrier,this.Name,this.Phone,this.TrackingNumber});
    SessionShippingDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        Carrier = json['Carrier'];
        Name = json['Name'];
        Phone = json['Phone'];
        TrackingNumber = json['TrackingNumber'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'Carrier': Carrier,
        'Name': Name,
        'Phone': Phone,
        'TrackingNumber': TrackingNumber
    });

    getTypeName() => "SessionShippingDetails";
    TypeContext? context = _ctx;
}

class SessionShippingOption extends StripeEntity1<SessionShippingOption> implements IConvertible
{
    int? ShippingAmount;

    SessionShippingOption({this.ShippingAmount});
    SessionShippingOption.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ShippingAmount = json['ShippingAmount'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ShippingAmount': ShippingAmount
    });

    getTypeName() => "SessionShippingOption";
    TypeContext? context = _ctx;
}

class SessionTaxIdCollection extends StripeEntity1<SessionTaxIdCollection> implements IConvertible
{
    bool? Enabled;

    SessionTaxIdCollection({this.Enabled});
    SessionTaxIdCollection.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Enabled = json['Enabled'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Enabled': Enabled
    });

    getTypeName() => "SessionTaxIdCollection";
    TypeContext? context = _ctx;
}

class SessionTotalDetailsBreakdownDiscount extends StripeEntity1<SessionTotalDetailsBreakdownDiscount> implements IConvertible
{
    int? Amount;
    Discount? Discount;

    SessionTotalDetailsBreakdownDiscount({this.Amount,this.Discount});
    SessionTotalDetailsBreakdownDiscount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Amount = json['Amount'];
        Discount = JsonConverters.fromJson(json['Discount'],'Discount',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Amount': Amount,
        'Discount': JsonConverters.toJson(Discount,'Discount',context!)
    });

    getTypeName() => "SessionTotalDetailsBreakdownDiscount";
    TypeContext? context = _ctx;
}

class SessionTotalDetailsBreakdownTax extends StripeEntity1<SessionTotalDetailsBreakdownTax> implements IConvertible
{
    int? Amount;
    TaxRate? Rate;

    SessionTotalDetailsBreakdownTax({this.Amount,this.Rate});
    SessionTotalDetailsBreakdownTax.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Amount = json['Amount'];
        Rate = JsonConverters.fromJson(json['Rate'],'TaxRate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Amount': Amount,
        'Rate': JsonConverters.toJson(Rate,'TaxRate',context!)
    });

    getTypeName() => "SessionTotalDetailsBreakdownTax";
    TypeContext? context = _ctx;
}

class SessionTotalDetailsBreakdown extends StripeEntity1<SessionTotalDetailsBreakdown> implements IConvertible
{
    List<SessionTotalDetailsBreakdownDiscount>? Discounts;
    List<SessionTotalDetailsBreakdownTax>? Taxes;

    SessionTotalDetailsBreakdown({this.Discounts,this.Taxes});
    SessionTotalDetailsBreakdown.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Discounts = JsonConverters.fromJson(json['Discounts'],'List<SessionTotalDetailsBreakdownDiscount>',context!);
        Taxes = JsonConverters.fromJson(json['Taxes'],'List<SessionTotalDetailsBreakdownTax>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Discounts': JsonConverters.toJson(Discounts,'List<SessionTotalDetailsBreakdownDiscount>',context!),
        'Taxes': JsonConverters.toJson(Taxes,'List<SessionTotalDetailsBreakdownTax>',context!)
    });

    getTypeName() => "SessionTotalDetailsBreakdown";
    TypeContext? context = _ctx;
}

class SessionTotalDetails extends StripeEntity1<SessionTotalDetails> implements IConvertible
{
    int? AmountDiscount;
    int? AmountShipping;
    int? AmountTax;
    SessionTotalDetailsBreakdown? Breakdown;

    SessionTotalDetails({this.AmountDiscount,this.AmountShipping,this.AmountTax,this.Breakdown});
    SessionTotalDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        AmountDiscount = json['AmountDiscount'];
        AmountShipping = json['AmountShipping'];
        AmountTax = json['AmountTax'];
        Breakdown = JsonConverters.fromJson(json['Breakdown'],'SessionTotalDetailsBreakdown',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'AmountDiscount': AmountDiscount,
        'AmountShipping': AmountShipping,
        'AmountTax': AmountTax,
        'Breakdown': JsonConverters.toJson(Breakdown,'SessionTotalDetailsBreakdown',context!)
    });

    getTypeName() => "SessionTotalDetails";
    TypeContext? context = _ctx;
}

class Session extends StripeEntity1<Session> implements IHasId, IHasMetadata, IHasObject, IConvertible
{
    String? Id;
    String? Object;
    SessionAfterExpiration? AfterExpiration;
    bool? AllowPromotionCodes;
    int? AmountSubtotal;
    int? AmountTotal;
    SessionAutomaticTax? AutomaticTax;
    String? BillingAddressCollection;
    String? CancelUrl;
    String? ClientReferenceId;
    SessionConsent? Consent;
    SessionConsentCollection? ConsentCollection;
    DateTime? Created;
    String? Currency;
    List<SessionCustomField>? CustomFields;
    SessionCustomText? CustomText;
    String? CustomerCreation;
    SessionCustomerDetails? CustomerDetails;
    String? CustomerEmail;
    DateTime? ExpiresAt;
    SessionInvoiceCreation? InvoiceCreation;
    StripeList<LineItem>? LineItems;
    bool? Livemode;
    String? Locale;
    Map<String,String?>? Metadata;
    String? Mode;
    String? PaymentMethodCollection;
    SessionPaymentMethodOptions? PaymentMethodOptions;
    List<String>? PaymentMethodTypes;
    String? PaymentStatus;
    SessionPhoneNumberCollection? PhoneNumberCollection;
    String? RecoveredFrom;
    SessionShippingAddressCollection? ShippingAddressCollection;
    SessionShippingCost? ShippingCost;
    SessionShippingDetails? ShippingDetails;
    List<SessionShippingOption>? ShippingOptions;
    String? Status;
    String? SubmitType;
    String? SuccessUrl;
    SessionTaxIdCollection? TaxIdCollection;
    SessionTotalDetails? TotalDetails;
    String? Url;

    Session({this.Id,this.Object,this.AfterExpiration,this.AllowPromotionCodes,this.AmountSubtotal,this.AmountTotal,this.AutomaticTax,this.BillingAddressCollection,this.CancelUrl,this.ClientReferenceId,this.Consent,this.ConsentCollection,this.Created,this.Currency,this.CustomFields,this.CustomText,this.CustomerCreation,this.CustomerDetails,this.CustomerEmail,this.ExpiresAt,this.InvoiceCreation,this.LineItems,this.Livemode,this.Locale,this.Metadata,this.Mode,this.PaymentMethodCollection,this.PaymentMethodOptions,this.PaymentMethodTypes,this.PaymentStatus,this.PhoneNumberCollection,this.RecoveredFrom,this.ShippingAddressCollection,this.ShippingCost,this.ShippingDetails,this.ShippingOptions,this.Status,this.SubmitType,this.SuccessUrl,this.TaxIdCollection,this.TotalDetails,this.Url});
    Session.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Id = json['Id'];
        Object = json['Object'];
        AfterExpiration = JsonConverters.fromJson(json['AfterExpiration'],'SessionAfterExpiration',context!);
        AllowPromotionCodes = json['AllowPromotionCodes'];
        AmountSubtotal = json['AmountSubtotal'];
        AmountTotal = json['AmountTotal'];
        AutomaticTax = JsonConverters.fromJson(json['AutomaticTax'],'SessionAutomaticTax',context!);
        BillingAddressCollection = json['BillingAddressCollection'];
        CancelUrl = json['CancelUrl'];
        ClientReferenceId = json['ClientReferenceId'];
        Consent = JsonConverters.fromJson(json['Consent'],'SessionConsent',context!);
        ConsentCollection = JsonConverters.fromJson(json['ConsentCollection'],'SessionConsentCollection',context!);
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Currency = json['Currency'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<SessionCustomField>',context!);
        CustomText = JsonConverters.fromJson(json['CustomText'],'SessionCustomText',context!);
        CustomerCreation = json['CustomerCreation'];
        CustomerDetails = JsonConverters.fromJson(json['CustomerDetails'],'SessionCustomerDetails',context!);
        CustomerEmail = json['CustomerEmail'];
        ExpiresAt = JsonConverters.fromJson(json['ExpiresAt'],'DateTime',context!);
        InvoiceCreation = JsonConverters.fromJson(json['InvoiceCreation'],'SessionInvoiceCreation',context!);
        LineItems = JsonConverters.fromJson(json['LineItems'],'StripeList<LineItem>',context!);
        Livemode = json['Livemode'];
        Locale = json['Locale'];
        Metadata = JsonConverters.toStringMap(json['Metadata']);
        Mode = json['Mode'];
        PaymentMethodCollection = json['PaymentMethodCollection'];
        PaymentMethodOptions = JsonConverters.fromJson(json['PaymentMethodOptions'],'SessionPaymentMethodOptions',context!);
        PaymentMethodTypes = JsonConverters.fromJson(json['PaymentMethodTypes'],'List<String>',context!);
        PaymentStatus = json['PaymentStatus'];
        PhoneNumberCollection = JsonConverters.fromJson(json['PhoneNumberCollection'],'SessionPhoneNumberCollection',context!);
        RecoveredFrom = json['RecoveredFrom'];
        ShippingAddressCollection = JsonConverters.fromJson(json['ShippingAddressCollection'],'SessionShippingAddressCollection',context!);
        ShippingCost = JsonConverters.fromJson(json['ShippingCost'],'SessionShippingCost',context!);
        ShippingDetails = JsonConverters.fromJson(json['ShippingDetails'],'SessionShippingDetails',context!);
        ShippingOptions = JsonConverters.fromJson(json['ShippingOptions'],'List<SessionShippingOption>',context!);
        Status = json['Status'];
        SubmitType = json['SubmitType'];
        SuccessUrl = json['SuccessUrl'];
        TaxIdCollection = JsonConverters.fromJson(json['TaxIdCollection'],'SessionTaxIdCollection',context!);
        TotalDetails = JsonConverters.fromJson(json['TotalDetails'],'SessionTotalDetails',context!);
        Url = json['Url'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Id': Id,
        'Object': Object,
        'AfterExpiration': JsonConverters.toJson(AfterExpiration,'SessionAfterExpiration',context!),
        'AllowPromotionCodes': AllowPromotionCodes,
        'AmountSubtotal': AmountSubtotal,
        'AmountTotal': AmountTotal,
        'AutomaticTax': JsonConverters.toJson(AutomaticTax,'SessionAutomaticTax',context!),
        'BillingAddressCollection': BillingAddressCollection,
        'CancelUrl': CancelUrl,
        'ClientReferenceId': ClientReferenceId,
        'Consent': JsonConverters.toJson(Consent,'SessionConsent',context!),
        'ConsentCollection': JsonConverters.toJson(ConsentCollection,'SessionConsentCollection',context!),
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Currency': Currency,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<SessionCustomField>',context!),
        'CustomText': JsonConverters.toJson(CustomText,'SessionCustomText',context!),
        'CustomerCreation': CustomerCreation,
        'CustomerDetails': JsonConverters.toJson(CustomerDetails,'SessionCustomerDetails',context!),
        'CustomerEmail': CustomerEmail,
        'ExpiresAt': JsonConverters.toJson(ExpiresAt,'DateTime',context!),
        'InvoiceCreation': JsonConverters.toJson(InvoiceCreation,'SessionInvoiceCreation',context!),
        'LineItems': JsonConverters.toJson(LineItems,'StripeList<LineItem>',context!),
        'Livemode': Livemode,
        'Locale': Locale,
        'Metadata': Metadata,
        'Mode': Mode,
        'PaymentMethodCollection': PaymentMethodCollection,
        'PaymentMethodOptions': JsonConverters.toJson(PaymentMethodOptions,'SessionPaymentMethodOptions',context!),
        'PaymentMethodTypes': JsonConverters.toJson(PaymentMethodTypes,'List<String>',context!),
        'PaymentStatus': PaymentStatus,
        'PhoneNumberCollection': JsonConverters.toJson(PhoneNumberCollection,'SessionPhoneNumberCollection',context!),
        'RecoveredFrom': RecoveredFrom,
        'ShippingAddressCollection': JsonConverters.toJson(ShippingAddressCollection,'SessionShippingAddressCollection',context!),
        'ShippingCost': JsonConverters.toJson(ShippingCost,'SessionShippingCost',context!),
        'ShippingDetails': JsonConverters.toJson(ShippingDetails,'SessionShippingDetails',context!),
        'ShippingOptions': JsonConverters.toJson(ShippingOptions,'List<SessionShippingOption>',context!),
        'Status': Status,
        'SubmitType': SubmitType,
        'SuccessUrl': SuccessUrl,
        'TaxIdCollection': JsonConverters.toJson(TaxIdCollection,'SessionTaxIdCollection',context!),
        'TotalDetails': JsonConverters.toJson(TotalDetails,'SessionTotalDetails',context!),
        'Url': Url
    });

    getTypeName() => "Session";
    TypeContext? context = _ctx;
}

class GetStripeSession implements IConvertible
{
    String? Id;

    GetStripeSession({this.Id});
    GetStripeSession.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id
    };

    getTypeName() => "GetStripeSession";
    TypeContext? context = _ctx;
}

class StripeList<T> extends StripeEntity1<StripeList<T>> implements IHasObject, IConvertible
{
    StripeList();
    StripeList.fromJson(Map<String, dynamic> json) : super.fromJson(json);
    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson();
    getTypeName() => "StripeList<$T>";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'duengageapi.uat.scadsoftware.com', types: <String, TypeInfo> {
    'StripeEntity': TypeInfo(TypeOf.AbstractClass),
    'StripeEntity1<T>': TypeInfo(TypeOf.GenericDef,create:() => StripeEntity1()),
    'SessionAfterExpirationRecovery': TypeInfo(TypeOf.Class, create:() => SessionAfterExpirationRecovery()),
    'SessionAfterExpiration': TypeInfo(TypeOf.Class, create:() => SessionAfterExpiration()),
    'SessionAutomaticTax': TypeInfo(TypeOf.Class, create:() => SessionAutomaticTax()),
    'SessionConsent': TypeInfo(TypeOf.Class, create:() => SessionConsent()),
    'SessionConsentCollection': TypeInfo(TypeOf.Class, create:() => SessionConsentCollection()),
    'SessionCustomFieldDropdownOption': TypeInfo(TypeOf.Class, create:() => SessionCustomFieldDropdownOption()),
    'SessionCustomFieldDropdown': TypeInfo(TypeOf.Class, create:() => SessionCustomFieldDropdown()),
    'List<SessionCustomFieldDropdownOption>': TypeInfo(TypeOf.Class, create:() => <SessionCustomFieldDropdownOption>[]),
    'SessionCustomFieldLabel': TypeInfo(TypeOf.Class, create:() => SessionCustomFieldLabel()),
    'SessionCustomFieldNumeric': TypeInfo(TypeOf.Class, create:() => SessionCustomFieldNumeric()),
    'SessionCustomFieldText': TypeInfo(TypeOf.Class, create:() => SessionCustomFieldText()),
    'SessionCustomField': TypeInfo(TypeOf.Class, create:() => SessionCustomField()),
    'SessionCustomTextShippingAddress': TypeInfo(TypeOf.Class, create:() => SessionCustomTextShippingAddress()),
    'SessionCustomTextSubmit': TypeInfo(TypeOf.Class, create:() => SessionCustomTextSubmit()),
    'SessionCustomText': TypeInfo(TypeOf.Class, create:() => SessionCustomText()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'SessionCustomerDetailsTaxId': TypeInfo(TypeOf.Class, create:() => SessionCustomerDetailsTaxId()),
    'SessionCustomerDetails': TypeInfo(TypeOf.Class, create:() => SessionCustomerDetails()),
    'List<SessionCustomerDetailsTaxId>': TypeInfo(TypeOf.Class, create:() => <SessionCustomerDetailsTaxId>[]),
    'SessionInvoiceCreationInvoiceDataCustomField': TypeInfo(TypeOf.Class, create:() => SessionInvoiceCreationInvoiceDataCustomField()),
    'SessionInvoiceCreationInvoiceDataRenderingOptions': TypeInfo(TypeOf.Class, create:() => SessionInvoiceCreationInvoiceDataRenderingOptions()),
    'SessionInvoiceCreationInvoiceData': TypeInfo(TypeOf.Class, create:() => SessionInvoiceCreationInvoiceData()),
    'List<SessionInvoiceCreationInvoiceDataCustomField>': TypeInfo(TypeOf.Class, create:() => <SessionInvoiceCreationInvoiceDataCustomField>[]),
    'SessionInvoiceCreation': TypeInfo(TypeOf.Class, create:() => SessionInvoiceCreation()),
    'CouponAppliesTo': TypeInfo(TypeOf.Class, create:() => CouponAppliesTo()),
    'CouponCurrencyOptions': TypeInfo(TypeOf.Class, create:() => CouponCurrencyOptions()),
    'Coupon': TypeInfo(TypeOf.Class, create:() => Coupon()),
    'Map<String,CouponCurrencyOptions?>': TypeInfo(TypeOf.Class, create:() => Map<String,CouponCurrencyOptions?>()),
    'Discount': TypeInfo(TypeOf.Class, create:() => Discount()),
    'LineItemDiscount': TypeInfo(TypeOf.Class, create:() => LineItemDiscount()),
    'PriceCurrencyOptionsCustomUnitAmount': TypeInfo(TypeOf.Class, create:() => PriceCurrencyOptionsCustomUnitAmount()),
    'PriceCurrencyOptionsTier': TypeInfo(TypeOf.Class, create:() => PriceCurrencyOptionsTier()),
    'PriceCurrencyOptions': TypeInfo(TypeOf.Class, create:() => PriceCurrencyOptions()),
    'List<PriceCurrencyOptionsTier>': TypeInfo(TypeOf.Class, create:() => <PriceCurrencyOptionsTier>[]),
    'PriceCustomUnitAmount': TypeInfo(TypeOf.Class, create:() => PriceCustomUnitAmount()),
    'PriceRecurring': TypeInfo(TypeOf.Class, create:() => PriceRecurring()),
    'PriceTier': TypeInfo(TypeOf.Class, create:() => PriceTier()),
    'PriceTransformQuantity': TypeInfo(TypeOf.Class, create:() => PriceTransformQuantity()),
    'Price': TypeInfo(TypeOf.Class, create:() => Price()),
    'Map<String,PriceCurrencyOptions?>': TypeInfo(TypeOf.Class, create:() => Map<String,PriceCurrencyOptions?>()),
    'List<PriceTier>': TypeInfo(TypeOf.Class, create:() => <PriceTier>[]),
    'TaxRate': TypeInfo(TypeOf.Class, create:() => TaxRate()),
    'LineItemTax': TypeInfo(TypeOf.Class, create:() => LineItemTax()),
    'LineItem': TypeInfo(TypeOf.Class, create:() => LineItem()),
    'List<LineItemDiscount>': TypeInfo(TypeOf.Class, create:() => <LineItemDiscount>[]),
    'List<LineItemTax>': TypeInfo(TypeOf.Class, create:() => <LineItemTax>[]),
    'SessionPaymentMethodOptionsAcssDebitMandateOptions': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAcssDebitMandateOptions()),
    'SessionPaymentMethodOptionsAcssDebit': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAcssDebit()),
    'SessionPaymentMethodOptionsAffirm': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAffirm()),
    'SessionPaymentMethodOptionsAfterpayClearpay': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAfterpayClearpay()),
    'SessionPaymentMethodOptionsAlipay': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAlipay()),
    'SessionPaymentMethodOptionsAuBecsDebit': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsAuBecsDebit()),
    'SessionPaymentMethodOptionsBacsDebit': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsBacsDebit()),
    'SessionPaymentMethodOptionsBancontact': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsBancontact()),
    'SessionPaymentMethodOptionsBoleto': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsBoleto()),
    'SessionPaymentMethodOptionsCardInstallments': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsCardInstallments()),
    'SessionPaymentMethodOptionsCard': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsCard()),
    'SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer()),
    'SessionPaymentMethodOptionsCustomerBalanceBankTransfer': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsCustomerBalanceBankTransfer()),
    'SessionPaymentMethodOptionsCustomerBalance': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsCustomerBalance()),
    'SessionPaymentMethodOptionsEps': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsEps()),
    'SessionPaymentMethodOptionsFpx': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsFpx()),
    'SessionPaymentMethodOptionsGiropay': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsGiropay()),
    'SessionPaymentMethodOptionsGrabpay': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsGrabpay()),
    'SessionPaymentMethodOptionsIdeal': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsIdeal()),
    'SessionPaymentMethodOptionsKlarna': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsKlarna()),
    'SessionPaymentMethodOptionsKonbini': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsKonbini()),
    'SessionPaymentMethodOptionsOxxo': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsOxxo()),
    'SessionPaymentMethodOptionsP24': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsP24()),
    'SessionPaymentMethodOptionsPaynow': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsPaynow()),
    'SessionPaymentMethodOptionsPix': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsPix()),
    'SessionPaymentMethodOptionsSepaDebit': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsSepaDebit()),
    'SessionPaymentMethodOptionsSofort': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsSofort()),
    'SessionPaymentMethodOptionsUsBankAccountFinancialConnections': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsUsBankAccountFinancialConnections()),
    'SessionPaymentMethodOptionsUsBankAccount': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptionsUsBankAccount()),
    'SessionPaymentMethodOptions': TypeInfo(TypeOf.Class, create:() => SessionPaymentMethodOptions()),
    'SessionPhoneNumberCollection': TypeInfo(TypeOf.Class, create:() => SessionPhoneNumberCollection()),
    'SessionShippingAddressCollection': TypeInfo(TypeOf.Class, create:() => SessionShippingAddressCollection()),
    'SessionShippingCostTax': TypeInfo(TypeOf.Class, create:() => SessionShippingCostTax()),
    'SessionShippingCost': TypeInfo(TypeOf.Class, create:() => SessionShippingCost()),
    'List<SessionShippingCostTax>': TypeInfo(TypeOf.Class, create:() => <SessionShippingCostTax>[]),
    'SessionShippingDetails': TypeInfo(TypeOf.Class, create:() => SessionShippingDetails()),
    'SessionShippingOption': TypeInfo(TypeOf.Class, create:() => SessionShippingOption()),
    'SessionTaxIdCollection': TypeInfo(TypeOf.Class, create:() => SessionTaxIdCollection()),
    'SessionTotalDetailsBreakdownDiscount': TypeInfo(TypeOf.Class, create:() => SessionTotalDetailsBreakdownDiscount()),
    'SessionTotalDetailsBreakdownTax': TypeInfo(TypeOf.Class, create:() => SessionTotalDetailsBreakdownTax()),
    'SessionTotalDetailsBreakdown': TypeInfo(TypeOf.Class, create:() => SessionTotalDetailsBreakdown()),
    'List<SessionTotalDetailsBreakdownDiscount>': TypeInfo(TypeOf.Class, create:() => <SessionTotalDetailsBreakdownDiscount>[]),
    'List<SessionTotalDetailsBreakdownTax>': TypeInfo(TypeOf.Class, create:() => <SessionTotalDetailsBreakdownTax>[]),
    'SessionTotalDetails': TypeInfo(TypeOf.Class, create:() => SessionTotalDetails()),
    'Session': TypeInfo(TypeOf.Class, create:() => Session()),
    'List<SessionCustomField>': TypeInfo(TypeOf.Class, create:() => <SessionCustomField>[]),
    'StripeList<LineItem>': TypeInfo(TypeOf.Class, create:() => StripeList<LineItem>()),
    'List<SessionShippingOption>': TypeInfo(TypeOf.Class, create:() => <SessionShippingOption>[]),
    'GetStripeSession': TypeInfo(TypeOf.Class, create:() => GetStripeSession()),
    'StripeList<T>': TypeInfo(TypeOf.GenericDef,create:() => StripeList()),
});

Dart GetStripeSession DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /stripe-session/{Id} HTTP/1.1 
Host: duengageapi.uat.scadsoftware.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Id":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{Unable to show example output for type 'Session' using the custom 'csv' filter}Exception has been thrown by the target of an invocation.