BokaMera.API.Host

<back to all web services

BookingQuery

The following routes are available for this service:
GET/bookingsFind booked events for currently logged in userThis service is used to get bookings for the current user, the result will be paged if the query returns a to large set of values.
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
open class BookingQuery : QueryDb<Booking, BookingQueryResponse>()
{
    /**
    * Query for specific Booked Resources, default is all resources
    */
    @DataMember(Name="BookedResourceIds")
    @SerializedName("BookedResourceIds")
    @ApiMember(Description="Query for specific Booked Resources, default is all resources", ParameterType="query")
    open var BookingResourceRelationResourceIds:ArrayList<Int>? = null

    /**
    * Query for specific Booked Resource types, default is all resource types
    */
    @DataMember(Name="BookedResourceTypeIds")
    @SerializedName("BookedResourceTypeIds")
    @ApiMember(Description="Query for specific Booked Resource types, default is all resource types", ParameterType="query")
    open var BookingResourceRelationResourceTypeIds:ArrayList<Int>? = null

    /**
    * The company id, if empty will use the company id for the user you are logged in with.
    */
    @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    open var CompanyId:UUID? = null

    /**
    * Id of the booking
    */
    @ApiMember(Description="Id of the booking", ParameterType="path")
    open var Id:Int? = null

    /**
    * The cancellation code of the booking, can be used if you want to get a booking without being authenticated
    */
    @ApiMember(DataType="string", Description="The cancellation code of the booking, can be used if you want to get a booking without being authenticated", ParameterType="query")
    open var CancellationCode:String? = null

    /**
    * Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339
    */
    @ApiMember(DataType="dateTime", Description="Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")
    open var BookingStart:Date? = null

    /**
    * End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339
    */
    @ApiMember(DataType="dateTime", Description="End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")
    open var BookingEnd:Date? = null

    /**
    * Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339
    */
    @ApiMember(DataType="dateTime", Description="Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")
    open var CreatedFrom:Date? = null

    /**
    * End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339
    */
    @ApiMember(DataType="dateTime", Description="End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")
    open var CreatedTo:Date? = null

    /**
    * Set to true if you want to include the bookings for the company you are logged in as administrator on, if false only bookings for the logged in user will be retrieved. Only administrators are allowed to do this.
    */
    @ApiMember(DataType="boolean", Description="Set to true if you want to include the bookings for the company you are logged in as administrator on, if false only bookings for the logged in user will be retrieved. Only administrators are allowed to do this.", ParameterType="query")
    open var CompanyBookings:Boolean? = null

    /**
    * Query for specific services.
    */
    @ApiMember(Description="Query for specific services.", ParameterType="query")
    open var ServiceIds:ArrayList<Int>? = null

    /**
    * Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all.
    */
    @ApiMember(Description="Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all.", ParameterType="query")
    open var StatusIds:ArrayList<Int>? = null

    /**
    * Query for specific customer
    */
    @ApiMember(Description="Query for specific customer", ParameterType="query")
    open var CustomerId:UUID? = null

    /**
    * If you want to include the external references for the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the external references for the booking", ParameterType="query")
    open var IncludeExternalReferences:Boolean? = null

    /**
    * If you want to include the connected resource types and resources
    */
    @ApiMember(DataType="boolean", Description="If you want to include the connected resource types and resources", ParameterType="query")
    open var IncludeCustomFields:Boolean? = null

    /**
    * If you want to include the connected custom fields
    */
    @ApiMember(DataType="boolean", Description="If you want to include the connected custom fields", ParameterType="query")
    open var IncludeCustomFieldValues:Boolean? = null

    /**
    * If you want to include the booked resources
    */
    @ApiMember(DataType="boolean", Description="If you want to include the booked resources", ParameterType="query")
    open var IncludeBookedResourceTypes:Boolean? = null

    /**
    * If you want to include the company information for the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the company information for the booking", ParameterType="query")
    open var IncludeCompanyInformation:Boolean? = null

    /**
    * If you want to include the service information for the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query")
    open var IncludeServiceInformation:Boolean? = null

    /**
    * If you want to include the customer information for the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")
    open var IncludeCustomerInformation:Boolean? = null

    /**
    * If you want to include invoice address specific to this booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include invoice address specific to this booking", ParameterType="query")
    open var IncludeInvoiceAddress:Boolean? = null

    /**
    * If you want to include the log of all events on the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the log of all events on the booking", ParameterType="query")
    open var IncludeLog:Boolean? = null

    /**
    * If you want to include the payment log on the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the payment log on the booking", ParameterType="query")
    open var IncludePaymentLog:Boolean? = null

    /**
    * If you want to include the checkouts for payson
    */
    @ApiMember(DataType="boolean", Description="If you want to include the checkouts for payson", ParameterType="query")
    open var IncludeCheckoutLog:Boolean? = null

    /**
    * If you want to include the quantity and price information on the booking
    */
    @ApiMember(DataType="boolean", Description="If you want to include the quantity and price information on the booking", ParameterType="query")
    open var IncludeQuantityInformation:Boolean? = null

    /**
    * If you want to include google calendar sync status
    */
    @ApiMember(DataType="boolean", Description="If you want to include google calendar sync status", ParameterType="query")
    open var IncludeCalendarExportStatus:Boolean? = null

    /**
    * If you want to include booking status information
    */
    @ApiMember(DataType="boolean", Description="If you want to include booking status information", ParameterType="query")
    open var IncludeStatusInformation:Boolean? = null

    /**
    * The max limit of records you want to retrieve, default is 100
    */
    @ApiMember(DataType="int", Description="The max limit of records you want to retrieve, default is 100", ParameterType="query")
    open var MaxLimit:Int? = null

    open var ResponseStatus:ResponseStatus? = null
}

open class QueryDb<From, Into> : QueryBase()
{
}

@DataContract
open class QueryBase
{
    /**
    * Skip over a given number of elements in a sequence and then return the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?skip=10&orderBy=Id</code>
    */
    @DataMember(Order=1)
    open var Skip:Int? = null

    /**
    * Return a given number of elements in a sequence and then skip over the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?take=20</code>
    */
    @DataMember(Order=2)
    open var Take:Int? = null

    /**
    * Comma separated list of fields to order by. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderBy=Id,-Age,FirstName</code>
    */
    @DataMember(Order=3)
    open var OrderBy:String? = null

    /**
    * Comma separated list of fields to order by in descending order. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderByDesc=Id,-Age,FirstName</code>
    */
    @DataMember(Order=4)
    open var OrderByDesc:String? = null

    /**
    * Include any of the aggregates <code>AVG, COUNT, FIRST, LAST, MAX, MIN, SUM</code> in your result set. The results will be returned in the meta field.<br/><br/><strong>Example:</strong><br/><code>?include=COUNT(*) as Total</code><br/><br/>or multiple fields with<br/><code>?include=Count(*) Total, Min(Age), AVG(Age) AverageAge</code><br/></br>or unique with<br/><code>?include=COUNT(DISTINCT LivingStatus) as UniqueStatus</code>
    */
    @DataMember(Order=5)
    open var Include:String? = null

    @DataMember(Order=6)
    open var Fields:String? = null

    @DataMember(Order=7)
    open var Meta:HashMap<String,String>? = null
}

open class Booking : PayableEntity(), IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
{
    @Ignore()
    open var Service:Service? = null

    @Ignore()
    open var Log:ArrayList<BookingLog>? = null

    @Ignore()
    open var CheckoutLogs:ArrayList<PaymentDetails>? = null

    @Ignore()
    open var Prices:ArrayList<BookingPrice>? = null

    @Ignore()
    open var Status:BookingStatusEnum? = null

    @Ignore()
    open var IsReserved:Boolean? = null

    @Ignore()
    open var StatusName:String? = null

    open var BookingStatus:BookingStatus? = null
    @Ignore()
    open var TotalPrice:Double? = null

    @Ignore()
    open var TotalSpots:Int? = null

    @Ignore()
    open var Resources:IList<Resource>? = null

    @Ignore()
    open var ExternalReferences:IList<ExternalReference>? = null

    @Ignore()
    open var BookedResources:IList<BookedResourceType>? = null

    @Ignore()
    override var CustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    override var CustomFieldsData:IList<CustomFieldDataResponse>? = null

    @Ignore()
    open var DeterministicId:UUID? = null

    @Ignore()
    open var Active:Boolean? = null

    @Ignore()
    open var LastTimeToUnBook:Date? = null

    @Ignore()
    open var PriceMappings:ArrayList<PriceMapping>? = null

    @Ignore()
    override var InternalReferenceId:String? = null

    open var Id:Int? = null
    @Required()
    open var CustomerId:UUID? = null

    @Required()
    open var ServiceId:Int? = null

    @Required()
    open var StatusId:Int? = null

    open var UnbookedOn:Date? = null
    open var UnbookedComments:String? = null
    open var BookedComments:String? = null
    @Required()
    open var BookedBy:String? = null

    open var UnBookedBy:String? = null
    @Required()
    open var SendSmsReminder:Boolean? = null

    @Required()
    open var SendEmailReminder:Boolean? = null

    @Required()
    open var SendSmsConfirmation:Boolean? = null

    open var RebateCode:String? = null
    open var Comments:String? = null
    open var IpAddress:String? = null
    @Required()
    open var NumberOfBookedSpots:Int? = null

    open var CommentsToCustomer:String? = null
    open var PaymentExpiration:Date? = null
    @Required()
    open var SendEmailConfirmation:Boolean? = null

    open var CancellationCode:String? = null
    open var ModifiedDate:Date? = null
    open var RatingCode:String? = null
    override var TextField1:String? = null
    override var TextField2:String? = null
    override var TextField3:String? = null
    override var TextField4:String? = null
    override var TextField5:String? = null
    override var TextField6:String? = null
    override var TextField7:String? = null
    override var TextField8:String? = null
    override var TextField9:String? = null
    override var TextField10:String? = null
    override var TextField11:String? = null
    override var TextField12:String? = null
    override var TextField13:String? = null
    override var TextField14:String? = null
    override var TextField15:String? = null
    override var TextField16:String? = null
    override var TextField17:String? = null
    override var TextField18:String? = null
    override var TextField19:String? = null
    override var TextField20:String? = null
    @Required()
    override var From:Date? = null

    @Required()
    override var To:Date? = null

    open var ArticleInvoiceAddressId:UUID? = null
}

open class PayableEntity : BaseModel()
{
    @Ignore()
    open var DbFactory:IDbConnectionFactory? = null

    @Ignore()
    open var ArticlePaymentSettings:ArticlePaymentSettings? = null

    @Ignore()
    open var QvicklyPaymentManager:IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCustomCheckoutData, QvicklyCustomCheckoutData>? = null

    @Ignore()
    open var Payson2PaymentManager:IBokameraPaymentManager<Payson2CheckoutResponse, Payson2CheckoutResponse, Payson2CheckoutResponse>? = null

    @Ignore()
    open var StripePaymentManager:IBokameraPaymentManager<StripeCreateCheckoutQuery, CustomCheckoutData, CustomCheckoutData>? = null

    @Ignore()
    open var PaysonPaymentCheckout1:IPaysonPaymentCheckout1? = null

    @Ignore()
    open var Logger:ILogger<PayableEntity>? = null

    @Ignore()
    open var CacheProvider:CacheDataProvider? = null

    @Ignore()
    open var ServicesNames:String? = null

    @Ignore()
    open var InternalReferenceId:String? = null

    @Ignore()
    open var PaymentLog:ArrayList<PaymentLog>? = null

    @Ignore()
    open var ArticleType:ArticleType? = null

    open var CompanyId:UUID? = null
    @Required()
    open var UpdatedDate:Date? = null

    @Required()
    open var CreatedDate:Date? = null

    open var PriceVat:BigDecimal? = null
    @References(Type=Currency::class)
    open var CurrencyId:String? = null

    open var CurrencyInfo:Currency? = null
    @Ignore()
    open var Customer:Customer? = null

    @Ignore()
    open var Customers:ArrayList<Customer>? = null

    @Ignore()
    open var Company:Company? = null

    @Ignore()
    open var Services:ArrayList<Service>? = null

    @Ignore()
    open var Article:Article? = null

    @Ignore()
    open var InvoiceAddress:ArticleInvoiceAddress? = null
}

open class BaseModel
{
}

interface IDbConnectionFactory
{
}

open class ArticlePaymentSettings
{
    open var WeeksBeforeArticleIsCancelled:String? = null
}

interface IBokameraPaymentManager<TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse>
{
}

open class InitCheckoutRequestBody
{
    open var credentials:Credentials? = null
    @SerializedName("data") open var Data:InitCheckoutData? = null
    open var function:String? = null
}

open class Credentials
{
    open var hash:String? = null
    open var id:String? = null
    open var version:String? = null
    open var client:String? = null
    open var serverdata:ServerData? = null
    open var time:String? = null
    open var test:String? = null
    open var language:String? = null
}

open class ServerData
{
    open var HTTP_HOST:String? = null
    open var HTTP_CONNECTION:String? = null
    open var HTTP_CACHE_CONTROL:String? = null
    open var HTTP_ACCEPT:String? = null
    open var HTTP_USER_AGENT:String? = null
    open var HTTP_ACCEPT_ENCODING:String? = null
    open var HTTP_ACCEPT_LANGUAGE:String? = null
    open var PATH:String? = null
    open var SERVER_SOFTWARE:String? = null
    open var SERVER_NAME:String? = null
    open var SERVER_ADDR:String? = null
    open var SERVER_PORT:String? = null
    open var REMOTE_ADDR:String? = null
    open var REMOTE_PORT:String? = null
    open var GATEWAY_INTERFACE:String? = null
    open var SERVER_PROTOCOL:String? = null
    open var REQUEST_METHOD:String? = null
    open var QUERY_STRING:String? = null
    open var REQUEST_TIME:String? = null
}

open class InitCheckoutData
{
    open var CheckoutData:CheckoutData? = null
    open var PaymentData:CheckoutPaymentData? = null
    open var PaymentInfo:PaymentInfo? = null
    open var Articles:ArrayList<QvicklyArticle>? = null
    open var Cart:Cart? = null
    open var QvicklyCustomer:QvicklyCustomer? = null
}

open class CheckoutData
{
    open var terms:Uri? = null
    open var privacyPolicy:Uri? = null
    open var redirectOnSuccess:String? = null
}

open class CheckoutPaymentData
{
    open var currency:String? = null
    open var language:String? = null
    open var country:String? = null
    open var autoactivate:String? = null
    open var orderid:String? = null
    open var returnmethod:String? = null
    open var accepturl:String? = null
    open var cancelurl:String? = null
    open var callbackurl:Uri? = null
    open var invoice:CheckoutInvoice? = null
}

open class CheckoutInvoice
{
    open var number:String? = null
    open var status:String? = null
}

open class PaymentInfo
{
    open var paymentdate:String? = null
    open var paymentterms:String? = null
    open var yourreference:String? = null
    open var ourreference:String? = null
    open var projectname:String? = null
    open var deliverymethod:String? = null
    open var deliveryterms:String? = null
}

open class QvicklyArticle
{
    open var artnr:String? = null
    open var title:String? = null
    open var quantity:Int? = null
    open var aprice:Int? = null
    open var tax:Int? = null
    open var discount:Int? = null
    open var withouttax:Int? = null
    open var taxrate:Int? = null
}

open class Cart
{
    open var Handling:CartHandling? = null
    open var Total:CartTotal? = null
    open var Shipping:Shipping? = null
}

open class CartHandling
{
    open var withouttax:String? = null
    open var taxrate:String? = null
}

open class CartTotal
{
    open var rounding:BigDecimal? = null
    open var withouttax:Int? = null
    open var tax:Int? = null
    open var withtax:Int? = null
}

open class Shipping
{
    open var firstname:String? = null
    open var lastname:String? = null
    open var company:String? = null
    open var street:String? = null
    open var street2:String? = null
    open var zip:String? = null
    open var city:String? = null
    open var country:String? = null
    open var phone:String? = null
    open var withouttax:String? = null
    open var taxrate:String? = null
}

open class QvicklyCustomer
{
    open var nr:String? = null
    open var pno:String? = null
    open var Billing:CustomerBilling? = null
}

open class CustomerBilling
{
    open var firstname:String? = null
    open var lastname:String? = null
    open var company:String? = null
    open var street:String? = null
    open var street2:String? = null
    open var zip:String? = null
    open var city:String? = null
    open var country:String? = null
    open var phone:String? = null
    open var email:String? = null
}

open class QvicklyCustomCheckoutData
{
    open var QvicklyCheckoutResponse:GetCheckoutResponse? = null
    open var InitCheckoutResponse:InitCheckoutResponse? = null
    open var QvicklyPaymentResponse:QvicklyPaymentResponse? = null
}

open class GetCheckoutResponse
{
    open var credentials:Credentials? = null
    @SerializedName("data") open var Data:Data? = null
}

open class Credentials
{
    open var Hash:String? = null
    open var Logid:String? = null
}

open class Data
{
    open var CheckoutData:CheckoutData? = null
    open var PaymentData:CheckoutPaymentData? = null
    open var Articles:ArrayList<QvicklyArticle>? = null
}

open class InitCheckoutResponse
{
    open var Number:Int? = null
    open var Status:String? = null
    open var OrderId:String? = null
    open var Url:String? = null
}

open class QvicklyPaymentResponse
{
    open var PaymentData:QvikclyPaymentData? = null
    open var PaymentInfo:PaymentInfo? = null
    open var Card:Card? = null
    open var Settlement:Settlement? = null
    open var QvicklyCustomer:QvicklyCustomer? = null
    open var Articles:ArrayList<QvicklyArticle>? = null
    open var Cart:Cart? = null
}

open class QvikclyPaymentData
{
    open var method:String? = null
    open var paymentplanid:String? = null
    open var currency:String? = null
    open var country:String? = null
    open var language:String? = null
    open var autoactivate:String? = null
    open var orderid:String? = null
    open var status:String? = null
    open var paymentid_related:String? = null
    open var url:String? = null
}

open class Card
{
    open var promptname:String? = null
    open var recurring:String? = null
    open var recurringnr:String? = null
    open var accepturl:String? = null
    open var cancelurl:String? = null
    open var callbackurl:String? = null
    open var returnmethod:String? = null
}

open class Settlement
{
    open var number:Int? = null
    open var date:String? = null
}

open class Payson2CheckoutResponse
{
    open var Id:UUID? = null
    open var ExpirationTime:Date? = null
    open var Snippet:String? = null
    open var Status:Payson2CheckoutStatus? = null
    open var Customer:Customer? = null
    open var Order:Order? = null
    open var Merchant:Merchant? = null
    open var Gui:Gui? = null
    open var History:History? = null
    open var PurchaseId:Int? = null
}

enum class Payson2CheckoutStatus
{
    None,
    Created,
    FormsFilled,
    ReadyToPay,
    ProcessingPayment,
    ReadyToShip,
    Shipped,
    PaidToAccount,
    Canceled,
    Credited,
    Expired,
    Denied,
}

open class Customer
{
    open var City:String? = null
    open var CountryCode:String? = null
    open var IdentityNumber:String? = null
    open var Email:String? = null
    open var FirstName:String? = null
    open var LastName:String? = null
    open var Phone:String? = null
    open var PostalCode:String? = null
    open var Street:String? = null
    open var Reference:String? = null
    open var Type:CustomerType? = null
}

enum class CustomerType
{
    Person,
    Business,
}

open class Order
{
    open var Currency:Currency? = null
    open var TotalFeeExcludingTax:BigDecimal? = null
    open var TotalFeeIncludingTax:BigDecimal? = null
    open var TotalPriceExcludingTax:BigDecimal? = null
    open var TotalPriceIncludingTax:BigDecimal? = null
    open var TotalTaxAmount:BigDecimal? = null
    open var TotalCreditedAmount:BigDecimal? = null
    open var Items:IList<Item>? = null
}

enum class Currency(val value:Int)
{
    Sek(1),
    Eur(2),
}

open class Item
{
    open var ItemId:UUID? = null
    open var DiscountRate:BigDecimal? = null
    open var Ean:String? = null
    open var ImageUri:Uri? = null
    open var Name:String? = null
    open var Quantity:BigDecimal? = null
    open var Reference:String? = null
    open var TaxRate:BigDecimal? = null
    open var TotalPriceExcludingTax:BigDecimal? = null
    open var TotalPriceIncludingTax:BigDecimal? = null
    open var TotalTaxAmount:BigDecimal? = null
    open var CreditedAmount:BigDecimal? = null
    open var Type:ItemType? = null
    open var UnitPrice:BigDecimal? = null
    open var Uri:Uri? = null
}

enum class ItemType
{
    Physical,
    Service,
    Fee,
    Discount,
}

open class Merchant
{
    open var CheckoutUri:String? = null
    open var ConfirmationUri:String? = null
    open var NotificationUri:Uri? = null
    open var ValidationUri:Uri? = null
    open var TermsUri:Uri? = null
    open var Reference:String? = null
    open var PartnerId:String? = null
}

open class Gui
{
    open var ColorScheme:ColorScheme? = null
    open var Locale:String? = null
    open var RequestPhone:Boolean? = null
    open var PhoneOptional:Boolean? = null
}

enum class ColorScheme
{
    White,
    Blue,
    Gray,
    GrayTextLogos,
    BlueTextLogos,
    WhiteTextLogos,
    WhiteNoFooter,
    GrayNoFooter,
    BlueNoFooter,
}

open class History
{
    open var Created:Date? = null
    open var ReadyToPay:Date? = null
    open var ReadyToShip:Date? = null
    open var Shipped:Date? = null
    open var PaidToAccount:Date? = null
    open var Canceled:Date? = null
    open var Expired:Date? = null
    open var Denied:Date? = null
}

open class StripeCreateCheckoutQuery
{
    open var CheckoutData:StripeCreatePaymentOptions? = null
    open var RequestOptions:RequestOptions? = null
}

open class StripeCreatePaymentOptions
{
    open var SessionCreateOptions:SessionCreateOptions? = null
    open var PaymentIntentCreateOptions:PaymentIntentCreateOptions? = null
    open var CustomerCreateOptions:CustomerCreateOptions? = null
}

open class SessionCreateOptions : BaseOptions(), IHasMetadata
{
    open var AdaptivePricing:SessionAdaptivePricingOptions? = null
    open var AfterExpiration:SessionAfterExpirationOptions? = null
    open var AllowPromotionCodes:Boolean? = null
    open var AutomaticTax:SessionAutomaticTaxOptions? = null
    open var BillingAddressCollection:String? = null
    open var CancelUrl:String? = null
    open var ClientReferenceId:String? = null
    open var ConsentCollection:SessionConsentCollectionOptions? = null
    open var Currency:String? = null
    open var CustomFields:ArrayList<SessionCustomFieldOptions>? = null
    open var CustomText:SessionCustomTextOptions? = null
    open var Customer:String? = null
    open var CustomerCreation:String? = null
    open var CustomerEmail:String? = null
    open var CustomerUpdate:SessionCustomerUpdateOptions? = null
    open var Discounts:ArrayList<SessionDiscountOptions>? = null
    open var ExpiresAt:Date? = null
    open var InvoiceCreation:SessionInvoiceCreationOptions? = null
    open var LineItems:ArrayList<SessionLineItemOptions>? = null
    open var Locale:String? = null
    override var Metadata:HashMap<String,String>? = null
    open var Mode:String? = null
    open var OptionalItems:ArrayList<SessionOptionalItemOptions>? = null
    open var PaymentIntentData:SessionPaymentIntentDataOptions? = null
    open var PaymentMethodCollection:String? = null
    open var PaymentMethodConfiguration:String? = null
    open var PaymentMethodData:SessionPaymentMethodDataOptions? = null
    open var PaymentMethodOptions:SessionPaymentMethodOptionsOptions? = null
    open var PaymentMethodTypes:ArrayList<String>? = null
    open var Permissions:SessionPermissionsOptions? = null
    open var PhoneNumberCollection:SessionPhoneNumberCollectionOptions? = null
    open var RedirectOnCompletion:String? = null
    open var ReturnUrl:String? = null
    open var SavedPaymentMethodOptions:SessionSavedPaymentMethodOptionsOptions? = null
    open var SetupIntentData:SessionSetupIntentDataOptions? = null
    open var ShippingAddressCollection:SessionShippingAddressCollectionOptions? = null
    open var ShippingOptions:ArrayList<SessionShippingOptionOptions>? = null
    open var SubmitType:String? = null
    open var SubscriptionData:SessionSubscriptionDataOptions? = null
    open var SuccessUrl:String? = null
    open var TaxIdCollection:SessionTaxIdCollectionOptions? = null
    open var UiMode:String? = null
}

open class BaseOptions : INestedOptions
{
    open var ExtraParams:HashMap<String,Object>? = null
}

open class SessionAdaptivePricingOptions : INestedOptions
{
    open var Enabled:Boolean? = null
}

open class SessionAfterExpirationOptions : INestedOptions
{
    open var Recovery:SessionAfterExpirationRecoveryOptions? = null
}

open class SessionAfterExpirationRecoveryOptions : INestedOptions
{
    open var AllowPromotionCodes:Boolean? = null
    open var Enabled:Boolean? = null
}

open class SessionAutomaticTaxOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var Liability:SessionAutomaticTaxLiabilityOptions? = null
}

open class SessionAutomaticTaxLiabilityOptions : INestedOptions
{
    open var Account:String? = null
    open var Type:String? = null
}

open class SessionConsentCollectionOptions : INestedOptions
{
    open var PaymentMethodReuseAgreement:SessionConsentCollectionPaymentMethodReuseAgreementOptions? = null
    open var Promotions:String? = null
    open var TermsOfService:String? = null
}

open class SessionConsentCollectionPaymentMethodReuseAgreementOptions : INestedOptions
{
    open var Position:String? = null
}

open class SessionCustomFieldOptions : INestedOptions
{
    open var Dropdown:SessionCustomFieldDropdownOptions? = null
    open var Key:String? = null
    open var Label:SessionCustomFieldLabelOptions? = null
    open var Numeric:SessionCustomFieldNumericOptions? = null
    open var Optional:Boolean? = null
    open var Text:SessionCustomFieldTextOptions? = null
    open var Type:String? = null
}

open class SessionCustomFieldDropdownOptions : INestedOptions
{
    open var DefaultValue:String? = null
    open var Options:ArrayList<SessionCustomFieldDropdownOptionOptions>? = null
}

open class SessionCustomFieldDropdownOptionOptions : INestedOptions
{
    open var Label:String? = null
    open var Value:String? = null
}

open class SessionCustomFieldLabelOptions : INestedOptions
{
    open var Custom:String? = null
    open var Type:String? = null
}

open class SessionCustomFieldNumericOptions : INestedOptions
{
    open var DefaultValue:String? = null
    open var MaximumLength:Long? = null
    open var MinimumLength:Long? = null
}

open class SessionCustomFieldTextOptions : INestedOptions
{
    open var DefaultValue:String? = null
    open var MaximumLength:Long? = null
    open var MinimumLength:Long? = null
}

open class SessionCustomTextOptions : INestedOptions
{
    open var AfterSubmit:SessionCustomTextAfterSubmitOptions? = null
    open var ShippingAddress:SessionCustomTextShippingAddressOptions? = null
    open var Submit:SessionCustomTextSubmitOptions? = null
    open var TermsOfServiceAcceptance:SessionCustomTextTermsOfServiceAcceptanceOptions? = null
}

open class SessionCustomTextAfterSubmitOptions : INestedOptions
{
    open var Message:String? = null
}

open class SessionCustomTextShippingAddressOptions : INestedOptions
{
    open var Message:String? = null
}

open class SessionCustomTextSubmitOptions : INestedOptions
{
    open var Message:String? = null
}

open class SessionCustomTextTermsOfServiceAcceptanceOptions : INestedOptions
{
    open var Message:String? = null
}

open class SessionCustomerUpdateOptions : INestedOptions
{
    open var Address:String? = null
    open var Name:String? = null
    open var Shipping:String? = null
}

open class SessionDiscountOptions : INestedOptions
{
    open var Coupon:String? = null
    open var PromotionCode:String? = null
}

open class SessionInvoiceCreationOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var InvoiceData:SessionInvoiceCreationInvoiceDataOptions? = null
}

open class SessionInvoiceCreationInvoiceDataOptions : INestedOptions, IHasMetadata
{
    open var AccountTaxIds:ArrayList<String>? = null
    open var CustomFields:ArrayList<SessionInvoiceCreationInvoiceDataCustomFieldOptions>? = null
    open var Description:String? = null
    open var Footer:String? = null
    open var Issuer:SessionInvoiceCreationInvoiceDataIssuerOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var RenderingOptions:SessionInvoiceCreationInvoiceDataRenderingOptionsOptions? = null
}

open class SessionInvoiceCreationInvoiceDataCustomFieldOptions : INestedOptions
{
    open var Name:String? = null
    open var Value:String? = null
}

open class SessionInvoiceCreationInvoiceDataIssuerOptions : INestedOptions
{
    open var Account:String? = null
    open var Type:String? = null
}

open class SessionInvoiceCreationInvoiceDataRenderingOptionsOptions : INestedOptions
{
    open var AmountTaxDisplay:String? = null
}

open class SessionLineItemOptions : INestedOptions
{
    open var AdjustableQuantity:SessionLineItemAdjustableQuantityOptions? = null
    open var DynamicTaxRates:ArrayList<String>? = null
    open var Price:String? = null
    open var PriceData:SessionLineItemPriceDataOptions? = null
    open var Quantity:Long? = null
    open var TaxRates:ArrayList<String>? = null
}

open class SessionLineItemAdjustableQuantityOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var Maximum:Long? = null
    open var Minimum:Long? = null
}

open class SessionLineItemPriceDataOptions : INestedOptions
{
    open var Currency:String? = null
    open var Product:String? = null
    open var ProductData:SessionLineItemPriceDataProductDataOptions? = null
    open var Recurring:SessionLineItemPriceDataRecurringOptions? = null
    open var TaxBehavior:String? = null
    open var UnitAmount:Long? = null
    open var UnitAmountDecimal:BigDecimal? = null
}

open class SessionLineItemPriceDataProductDataOptions : INestedOptions, IHasMetadata
{
    open var Description:String? = null
    open var Images:ArrayList<String>? = null
    override var Metadata:HashMap<String,String>? = null
    open var Name:String? = null
    open var TaxCode:String? = null
}

open class SessionLineItemPriceDataRecurringOptions : INestedOptions
{
    open var Interval:String? = null
    open var IntervalCount:Long? = null
}

open class SessionOptionalItemOptions : INestedOptions
{
    open var AdjustableQuantity:SessionOptionalItemAdjustableQuantityOptions? = null
    open var Price:String? = null
    open var Quantity:Long? = null
}

open class SessionOptionalItemAdjustableQuantityOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var Maximum:Long? = null
    open var Minimum:Long? = null
}

open class SessionPaymentIntentDataOptions : INestedOptions, IHasMetadata
{
    open var ApplicationFeeAmount:Long? = null
    open var CaptureMethod:String? = null
    open var Description:String? = null
    override var Metadata:HashMap<String,String>? = null
    open var OnBehalfOf:String? = null
    open var ReceiptEmail:String? = null
    open var SetupFutureUsage:String? = null
    open var Shipping:ChargeShippingOptions? = null
    open var StatementDescriptor:String? = null
    open var StatementDescriptorSuffix:String? = null
    open var TransferData:SessionPaymentIntentDataTransferDataOptions? = null
    open var TransferGroup:String? = null
}

open class ChargeShippingOptions : INestedOptions
{
    open var Address:AddressOptions? = null
    open var Carrier:String? = null
    open var Name:String? = null
    open var Phone:String? = null
    open var TrackingNumber:String? = null
}

open class AddressOptions : INestedOptions
{
    open var City:String? = null
    open var Country:String? = null
    open var Line1:String? = null
    open var Line2:String? = null
    open var PostalCode:String? = null
    open var State:String? = null
}

open class SessionPaymentIntentDataTransferDataOptions : INestedOptions
{
    open var Amount:Long? = null
    open var Destination:String? = null
}

open class SessionPaymentMethodDataOptions : INestedOptions
{
    open var AllowRedisplay:String? = null
}

open class SessionPaymentMethodOptionsOptions : INestedOptions
{
    open var AcssDebit:SessionPaymentMethodOptionsAcssDebitOptions? = null
    open var Affirm:SessionPaymentMethodOptionsAffirmOptions? = null
    open var AfterpayClearpay:SessionPaymentMethodOptionsAfterpayClearpayOptions? = null
    open var Alipay:SessionPaymentMethodOptionsAlipayOptions? = null
    open var AmazonPay:SessionPaymentMethodOptionsAmazonPayOptions? = null
    open var AuBecsDebit:SessionPaymentMethodOptionsAuBecsDebitOptions? = null
    open var BacsDebit:SessionPaymentMethodOptionsBacsDebitOptions? = null
    open var Bancontact:SessionPaymentMethodOptionsBancontactOptions? = null
    open var Boleto:SessionPaymentMethodOptionsBoletoOptions? = null
    open var Card:SessionPaymentMethodOptionsCardOptions? = null
    open var Cashapp:SessionPaymentMethodOptionsCashappOptions? = null
    open var CustomerBalance:SessionPaymentMethodOptionsCustomerBalanceOptions? = null
    open var Eps:SessionPaymentMethodOptionsEpsOptions? = null
    open var Fpx:SessionPaymentMethodOptionsFpxOptions? = null
    open var Giropay:SessionPaymentMethodOptionsGiropayOptions? = null
    open var Grabpay:SessionPaymentMethodOptionsGrabpayOptions? = null
    open var Ideal:SessionPaymentMethodOptionsIdealOptions? = null
    open var KakaoPay:SessionPaymentMethodOptionsKakaoPayOptions? = null
    open var Klarna:SessionPaymentMethodOptionsKlarnaOptions? = null
    open var Konbini:SessionPaymentMethodOptionsKonbiniOptions? = null
    open var KrCard:SessionPaymentMethodOptionsKrCardOptions? = null
    open var Link:SessionPaymentMethodOptionsLinkOptions? = null
    open var Mobilepay:SessionPaymentMethodOptionsMobilepayOptions? = null
    open var Multibanco:SessionPaymentMethodOptionsMultibancoOptions? = null
    open var NaverPay:SessionPaymentMethodOptionsNaverPayOptions? = null
    open var Oxxo:SessionPaymentMethodOptionsOxxoOptions? = null
    open var P24:SessionPaymentMethodOptionsP24Options? = null
    open var PayByBank:SessionPaymentMethodOptionsPayByBankOptions? = null
    open var Payco:SessionPaymentMethodOptionsPaycoOptions? = null
    open var Paynow:SessionPaymentMethodOptionsPaynowOptions? = null
    open var Paypal:SessionPaymentMethodOptionsPaypalOptions? = null
    open var Pix:SessionPaymentMethodOptionsPixOptions? = null
    open var RevolutPay:SessionPaymentMethodOptionsRevolutPayOptions? = null
    open var SamsungPay:SessionPaymentMethodOptionsSamsungPayOptions? = null
    open var SepaDebit:SessionPaymentMethodOptionsSepaDebitOptions? = null
    open var Sofort:SessionPaymentMethodOptionsSofortOptions? = null
    open var Swish:SessionPaymentMethodOptionsSwishOptions? = null
    open var UsBankAccount:SessionPaymentMethodOptionsUsBankAccountOptions? = null
    open var WechatPay:SessionPaymentMethodOptionsWechatPayOptions? = null
}

open class SessionPaymentMethodOptionsAcssDebitOptions : INestedOptions
{
    open var Currency:String? = null
    open var MandateOptions:SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions : INestedOptions
{
    open var CustomMandateUrl:String? = null
    open var DefaultFor:ArrayList<String>? = null
    open var IntervalDescription:String? = null
    open var PaymentSchedule:String? = null
    open var TransactionType:String? = null
}

open class SessionPaymentMethodOptionsAffirmOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAfterpayClearpayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAlipayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAmazonPayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAuBecsDebitOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsBacsDebitOptions : INestedOptions
{
    open var MandateOptions:SessionPaymentMethodOptionsBacsDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsBacsDebitMandateOptionsOptions : INestedOptions
{
    open var ReferencePrefix:String? = null
}

open class SessionPaymentMethodOptionsBancontactOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsBoletoOptions : INestedOptions
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCardOptions : INestedOptions
{
    open var Installments:SessionPaymentMethodOptionsCardInstallmentsOptions? = null
    open var RequestExtendedAuthorization:String? = null
    open var RequestIncrementalAuthorization:String? = null
    open var RequestMulticapture:String? = null
    open var RequestOvercapture:String? = null
    open var RequestThreeDSecure:String? = null
    open var Restrictions:SessionPaymentMethodOptionsCardRestrictionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var StatementDescriptorSuffixKana:String? = null
    open var StatementDescriptorSuffixKanji:String? = null
}

open class SessionPaymentMethodOptionsCardInstallmentsOptions : INestedOptions
{
    open var Enabled:Boolean? = null
}

open class SessionPaymentMethodOptionsCardRestrictionsOptions : INestedOptions
{
    open var BrandsBlocked:ArrayList<String>? = null
}

open class SessionPaymentMethodOptionsCashappOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalanceOptions : INestedOptions
{
    open var BankTransfer:SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions? = null
    open var FundingType:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions : INestedOptions
{
    open var EuBankTransfer:SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions? = null
    open var RequestedAddressTypes:ArrayList<String>? = null
    open var Type:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions : INestedOptions
{
    open var Country:String? = null
}

open class SessionPaymentMethodOptionsEpsOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsFpxOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsGiropayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsGrabpayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsIdealOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKakaoPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKlarnaOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKonbiniOptions : INestedOptions
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKrCardOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsLinkOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsMobilepayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsMultibancoOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsNaverPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsOxxoOptions : INestedOptions
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsP24Options : INestedOptions
{
    open var SetupFutureUsage:String? = null
    open var TosShownAndAccepted:Boolean? = null
}

open class SessionPaymentMethodOptionsPayByBankOptions : INestedOptions
{
}

open class SessionPaymentMethodOptionsPaycoOptions : INestedOptions
{
    open var CaptureMethod:String? = null
}

open class SessionPaymentMethodOptionsPaynowOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsPaypalOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var Reference:String? = null
    open var RiskCorrelationId:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsPixOptions : INestedOptions
{
    open var ExpiresAfterSeconds:Long? = null
}

open class SessionPaymentMethodOptionsRevolutPayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsSamsungPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
}

open class SessionPaymentMethodOptionsSepaDebitOptions : INestedOptions
{
    open var MandateOptions:SessionPaymentMethodOptionsSepaDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsSepaDebitMandateOptionsOptions : INestedOptions
{
    open var ReferencePrefix:String? = null
}

open class SessionPaymentMethodOptionsSofortOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsSwishOptions : INestedOptions
{
    open var Reference:String? = null
}

open class SessionPaymentMethodOptionsUsBankAccountOptions : INestedOptions
{
    open var FinancialConnections:SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions : INestedOptions
{
    open var Permissions:ArrayList<String>? = null
    open var Prefetch:ArrayList<String>? = null
}

open class SessionPaymentMethodOptionsWechatPayOptions : INestedOptions
{
    open var AppId:String? = null
    open var Client:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPermissionsOptions : INestedOptions
{
    open var UpdateShippingDetails:String? = null
}

open class SessionPhoneNumberCollectionOptions : INestedOptions
{
    open var Enabled:Boolean? = null
}

open class SessionSavedPaymentMethodOptionsOptions : INestedOptions
{
    open var AllowRedisplayFilters:ArrayList<String>? = null
    open var PaymentMethodSave:String? = null
}

open class SessionSetupIntentDataOptions : INestedOptions, IHasMetadata
{
    open var Description:String? = null
    override var Metadata:HashMap<String,String>? = null
    open var OnBehalfOf:String? = null
}

open class SessionShippingAddressCollectionOptions : INestedOptions
{
    open var AllowedCountries:ArrayList<String>? = null
}

open class SessionShippingOptionOptions : INestedOptions
{
    open var ShippingRate:String? = null
    open var ShippingRateData:SessionShippingOptionShippingRateDataOptions? = null
}

open class SessionShippingOptionShippingRateDataOptions : INestedOptions, IHasMetadata
{
    open var DeliveryEstimate:SessionShippingOptionShippingRateDataDeliveryEstimateOptions? = null
    open var DisplayName:String? = null
    open var FixedAmount:SessionShippingOptionShippingRateDataFixedAmountOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var TaxBehavior:String? = null
    open var TaxCode:String? = null
    open var Type:String? = null
}

open class SessionShippingOptionShippingRateDataDeliveryEstimateOptions : INestedOptions
{
    open var Maximum:SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions? = null
    open var Minimum:SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions? = null
}

open class SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions : INestedOptions
{
    open var Unit:String? = null
    open var Value:Long? = null
}

open class SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions : INestedOptions
{
    open var Unit:String? = null
    open var Value:Long? = null
}

open class SessionShippingOptionShippingRateDataFixedAmountOptions : INestedOptions
{
    open var Amount:Long? = null
    open var Currency:String? = null
    open var CurrencyOptions:HashMap<String,SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions>? = null
}

open class SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions : INestedOptions
{
    open var Amount:Long? = null
    open var TaxBehavior:String? = null
}

open class SessionSubscriptionDataOptions : INestedOptions, IHasMetadata
{
    open var ApplicationFeePercent:BigDecimal? = null
    open var BillingCycleAnchor:Date? = null
    open var DefaultTaxRates:ArrayList<String>? = null
    open var Description:String? = null
    open var InvoiceSettings:SessionSubscriptionDataInvoiceSettingsOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var OnBehalfOf:String? = null
    open var ProrationBehavior:String? = null
    open var TransferData:SessionSubscriptionDataTransferDataOptions? = null
    open var TrialEnd:Date? = null
    open var TrialPeriodDays:Long? = null
    open var TrialSettings:SessionSubscriptionDataTrialSettingsOptions? = null
}

open class SessionSubscriptionDataInvoiceSettingsOptions : INestedOptions
{
    open var Issuer:SessionSubscriptionDataInvoiceSettingsIssuerOptions? = null
}

open class SessionSubscriptionDataInvoiceSettingsIssuerOptions : INestedOptions
{
    open var Account:String? = null
    open var Type:String? = null
}

open class SessionSubscriptionDataTransferDataOptions : INestedOptions
{
    open var AmountPercent:BigDecimal? = null
    open var Destination:String? = null
}

open class SessionSubscriptionDataTrialSettingsOptions : INestedOptions
{
    open var EndBehavior:SessionSubscriptionDataTrialSettingsEndBehaviorOptions? = null
}

open class SessionSubscriptionDataTrialSettingsEndBehaviorOptions : INestedOptions
{
    open var MissingPaymentMethod:String? = null
}

open class SessionTaxIdCollectionOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var Required:String? = null
}

open class PaymentIntentCreateOptions : BaseOptions(), IHasMetadata
{
    open var Amount:Long? = null
    open var ApplicationFeeAmount:Long? = null
    open var AutomaticPaymentMethods:PaymentIntentAutomaticPaymentMethodsOptions? = null
    open var CaptureMethod:String? = null
    open var Confirm:Boolean? = null
    open var ConfirmationMethod:String? = null
    open var ConfirmationToken:String? = null
    open var Currency:String? = null
    open var Customer:String? = null
    open var Description:String? = null
    open var ErrorOnRequiresAction:Boolean? = null
    open var Mandate:String? = null
    open var MandateData:PaymentIntentMandateDataOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var OffSession:Boolean? = null
    open var OnBehalfOf:String? = null
    open var PaymentMethod:String? = null
    open var PaymentMethodConfiguration:String? = null
    open var PaymentMethodData:PaymentIntentPaymentMethodDataOptions? = null
    open var PaymentMethodOptions:PaymentIntentPaymentMethodOptionsOptions? = null
    open var PaymentMethodTypes:ArrayList<String>? = null
    open var RadarOptions:PaymentIntentRadarOptionsOptions? = null
    open var ReceiptEmail:String? = null
    open var ReturnUrl:String? = null
    open var SetupFutureUsage:String? = null
    open var Shipping:ChargeShippingOptions? = null
    open var StatementDescriptor:String? = null
    open var StatementDescriptorSuffix:String? = null
    open var TransferData:PaymentIntentTransferDataOptions? = null
    open var TransferGroup:String? = null
    open var UseStripeSdk:Boolean? = null
}

open class PaymentIntentAutomaticPaymentMethodsOptions : INestedOptions
{
    open var AllowRedirects:String? = null
    open var Enabled:Boolean? = null
}

open class PaymentIntentMandateDataOptions : INestedOptions
{
    open var CustomerAcceptance:PaymentIntentMandateDataCustomerAcceptanceOptions? = null
}

open class PaymentIntentMandateDataCustomerAcceptanceOptions : INestedOptions
{
    open var AcceptedAt:Date? = null
    open var Offline:PaymentIntentMandateDataCustomerAcceptanceOfflineOptions? = null
    open var Online:PaymentIntentMandateDataCustomerAcceptanceOnlineOptions? = null
    open var Type:String? = null
}

open class PaymentIntentMandateDataCustomerAcceptanceOfflineOptions : INestedOptions
{
}

open class PaymentIntentMandateDataCustomerAcceptanceOnlineOptions : INestedOptions
{
    open var IpAddress:String? = null
    open var UserAgent:String? = null
}

open class PaymentIntentPaymentMethodDataOptions : INestedOptions, IHasMetadata
{
    open var AcssDebit:PaymentIntentPaymentMethodDataAcssDebitOptions? = null
    open var Affirm:PaymentIntentPaymentMethodDataAffirmOptions? = null
    open var AfterpayClearpay:PaymentIntentPaymentMethodDataAfterpayClearpayOptions? = null
    open var Alipay:PaymentIntentPaymentMethodDataAlipayOptions? = null
    open var AllowRedisplay:String? = null
    open var Alma:PaymentIntentPaymentMethodDataAlmaOptions? = null
    open var AmazonPay:PaymentIntentPaymentMethodDataAmazonPayOptions? = null
    open var AuBecsDebit:PaymentIntentPaymentMethodDataAuBecsDebitOptions? = null
    open var BacsDebit:PaymentIntentPaymentMethodDataBacsDebitOptions? = null
    open var Bancontact:PaymentIntentPaymentMethodDataBancontactOptions? = null
    open var Billie:PaymentIntentPaymentMethodDataBillieOptions? = null
    open var BillingDetails:PaymentIntentPaymentMethodDataBillingDetailsOptions? = null
    open var Blik:PaymentIntentPaymentMethodDataBlikOptions? = null
    open var Boleto:PaymentIntentPaymentMethodDataBoletoOptions? = null
    open var Cashapp:PaymentIntentPaymentMethodDataCashappOptions? = null
    open var CustomerBalance:PaymentIntentPaymentMethodDataCustomerBalanceOptions? = null
    open var Eps:PaymentIntentPaymentMethodDataEpsOptions? = null
    open var Fpx:PaymentIntentPaymentMethodDataFpxOptions? = null
    open var Giropay:PaymentIntentPaymentMethodDataGiropayOptions? = null
    open var Grabpay:PaymentIntentPaymentMethodDataGrabpayOptions? = null
    open var Ideal:PaymentIntentPaymentMethodDataIdealOptions? = null
    open var InteracPresent:PaymentIntentPaymentMethodDataInteracPresentOptions? = null
    open var KakaoPay:PaymentIntentPaymentMethodDataKakaoPayOptions? = null
    open var Klarna:PaymentIntentPaymentMethodDataKlarnaOptions? = null
    open var Konbini:PaymentIntentPaymentMethodDataKonbiniOptions? = null
    open var KrCard:PaymentIntentPaymentMethodDataKrCardOptions? = null
    open var Link:PaymentIntentPaymentMethodDataLinkOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var Mobilepay:PaymentIntentPaymentMethodDataMobilepayOptions? = null
    open var Multibanco:PaymentIntentPaymentMethodDataMultibancoOptions? = null
    open var NaverPay:PaymentIntentPaymentMethodDataNaverPayOptions? = null
    open var NzBankAccount:PaymentIntentPaymentMethodDataNzBankAccountOptions? = null
    open var Oxxo:PaymentIntentPaymentMethodDataOxxoOptions? = null
    open var P24:PaymentIntentPaymentMethodDataP24Options? = null
    open var PayByBank:PaymentIntentPaymentMethodDataPayByBankOptions? = null
    open var Payco:PaymentIntentPaymentMethodDataPaycoOptions? = null
    open var Paynow:PaymentIntentPaymentMethodDataPaynowOptions? = null
    open var Paypal:PaymentIntentPaymentMethodDataPaypalOptions? = null
    open var Pix:PaymentIntentPaymentMethodDataPixOptions? = null
    open var Promptpay:PaymentIntentPaymentMethodDataPromptpayOptions? = null
    open var RadarOptions:PaymentIntentPaymentMethodDataRadarOptionsOptions? = null
    open var RevolutPay:PaymentIntentPaymentMethodDataRevolutPayOptions? = null
    open var SamsungPay:PaymentIntentPaymentMethodDataSamsungPayOptions? = null
    open var Satispay:PaymentIntentPaymentMethodDataSatispayOptions? = null
    open var SepaDebit:PaymentIntentPaymentMethodDataSepaDebitOptions? = null
    open var Sofort:PaymentIntentPaymentMethodDataSofortOptions? = null
    open var Swish:PaymentIntentPaymentMethodDataSwishOptions? = null
    open var Twint:PaymentIntentPaymentMethodDataTwintOptions? = null
    open var Type:String? = null
    open var UsBankAccount:PaymentIntentPaymentMethodDataUsBankAccountOptions? = null
    open var WechatPay:PaymentIntentPaymentMethodDataWechatPayOptions? = null
    open var Zip:PaymentIntentPaymentMethodDataZipOptions? = null
}

open class PaymentIntentPaymentMethodDataAcssDebitOptions : INestedOptions
{
    open var AccountNumber:String? = null
    open var InstitutionNumber:String? = null
    open var TransitNumber:String? = null
}

open class PaymentIntentPaymentMethodDataAffirmOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataAfterpayClearpayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataAlipayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataAlmaOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataAmazonPayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataAuBecsDebitOptions : INestedOptions
{
    open var AccountNumber:String? = null
    open var BsbNumber:String? = null
}

open class PaymentIntentPaymentMethodDataBacsDebitOptions : INestedOptions
{
    open var AccountNumber:String? = null
    open var SortCode:String? = null
}

open class PaymentIntentPaymentMethodDataBancontactOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataBillieOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataBillingDetailsOptions : INestedOptions
{
    open var Address:AddressOptions? = null
    open var Email:String? = null
    open var Name:String? = null
    open var Phone:String? = null
}

open class PaymentIntentPaymentMethodDataBlikOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataBoletoOptions : INestedOptions
{
    open var TaxId:String? = null
}

open class PaymentIntentPaymentMethodDataCashappOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataCustomerBalanceOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataEpsOptions : INestedOptions
{
    open var Bank:String? = null
}

open class PaymentIntentPaymentMethodDataFpxOptions : INestedOptions
{
    open var AccountHolderType:String? = null
    open var Bank:String? = null
}

open class PaymentIntentPaymentMethodDataGiropayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataGrabpayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataIdealOptions : INestedOptions
{
    open var Bank:String? = null
}

open class PaymentIntentPaymentMethodDataInteracPresentOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataKakaoPayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataKlarnaOptions : INestedOptions
{
    open var Dob:DobOptions? = null
}

open class DobOptions : INestedOptions
{
    open var Day:Long? = null
    open var Month:Long? = null
    open var Year:Long? = null
}

open class PaymentIntentPaymentMethodDataKonbiniOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataKrCardOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataLinkOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataMobilepayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataMultibancoOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataNaverPayOptions : INestedOptions
{
    open var Funding:String? = null
}

open class PaymentIntentPaymentMethodDataNzBankAccountOptions : INestedOptions
{
    open var AccountHolderName:String? = null
    open var AccountNumber:String? = null
    open var BankCode:String? = null
    open var BranchCode:String? = null
    open var Reference:String? = null
    open var Suffix:String? = null
}

open class PaymentIntentPaymentMethodDataOxxoOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataP24Options : INestedOptions
{
    open var Bank:String? = null
}

open class PaymentIntentPaymentMethodDataPayByBankOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataPaycoOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataPaynowOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataPaypalOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataPixOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataPromptpayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataRadarOptionsOptions : INestedOptions
{
    open var Session:String? = null
}

open class PaymentIntentPaymentMethodDataRevolutPayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataSamsungPayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataSatispayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataSepaDebitOptions : INestedOptions
{
    open var Iban:String? = null
}

open class PaymentIntentPaymentMethodDataSofortOptions : INestedOptions
{
    open var Country:String? = null
}

open class PaymentIntentPaymentMethodDataSwishOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataTwintOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataUsBankAccountOptions : INestedOptions
{
    open var AccountHolderType:String? = null
    open var AccountNumber:String? = null
    open var AccountType:String? = null
    open var FinancialConnectionsAccount:String? = null
    open var RoutingNumber:String? = null
}

open class PaymentIntentPaymentMethodDataWechatPayOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodDataZipOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodOptionsOptions : INestedOptions
{
    open var AcssDebit:PaymentIntentPaymentMethodOptionsAcssDebitOptions? = null
    open var Affirm:PaymentIntentPaymentMethodOptionsAffirmOptions? = null
    open var AfterpayClearpay:PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions? = null
    open var Alipay:PaymentIntentPaymentMethodOptionsAlipayOptions? = null
    open var Alma:PaymentIntentPaymentMethodOptionsAlmaOptions? = null
    open var AmazonPay:PaymentIntentPaymentMethodOptionsAmazonPayOptions? = null
    open var AuBecsDebit:PaymentIntentPaymentMethodOptionsAuBecsDebitOptions? = null
    open var BacsDebit:PaymentIntentPaymentMethodOptionsBacsDebitOptions? = null
    open var Bancontact:PaymentIntentPaymentMethodOptionsBancontactOptions? = null
    open var Blik:PaymentIntentPaymentMethodOptionsBlikOptions? = null
    open var Boleto:PaymentIntentPaymentMethodOptionsBoletoOptions? = null
    open var Card:PaymentIntentPaymentMethodOptionsCardOptions? = null
    open var CardPresent:PaymentIntentPaymentMethodOptionsCardPresentOptions? = null
    open var Cashapp:PaymentIntentPaymentMethodOptionsCashappOptions? = null
    open var CustomerBalance:PaymentIntentPaymentMethodOptionsCustomerBalanceOptions? = null
    open var Eps:PaymentIntentPaymentMethodOptionsEpsOptions? = null
    open var Fpx:PaymentIntentPaymentMethodOptionsFpxOptions? = null
    open var Giropay:PaymentIntentPaymentMethodOptionsGiropayOptions? = null
    open var Grabpay:PaymentIntentPaymentMethodOptionsGrabpayOptions? = null
    open var Ideal:PaymentIntentPaymentMethodOptionsIdealOptions? = null
    open var InteracPresent:PaymentIntentPaymentMethodOptionsInteracPresentOptions? = null
    open var KakaoPay:PaymentIntentPaymentMethodOptionsKakaoPayOptions? = null
    open var Klarna:PaymentIntentPaymentMethodOptionsKlarnaOptions? = null
    open var Konbini:PaymentIntentPaymentMethodOptionsKonbiniOptions? = null
    open var KrCard:PaymentIntentPaymentMethodOptionsKrCardOptions? = null
    open var Link:PaymentIntentPaymentMethodOptionsLinkOptions? = null
    open var Mobilepay:PaymentIntentPaymentMethodOptionsMobilepayOptions? = null
    open var Multibanco:PaymentIntentPaymentMethodOptionsMultibancoOptions? = null
    open var NaverPay:PaymentIntentPaymentMethodOptionsNaverPayOptions? = null
    open var NzBankAccount:PaymentIntentPaymentMethodOptionsNzBankAccountOptions? = null
    open var Oxxo:PaymentIntentPaymentMethodOptionsOxxoOptions? = null
    open var P24:PaymentIntentPaymentMethodOptionsP24Options? = null
    open var PayByBank:PaymentIntentPaymentMethodOptionsPayByBankOptions? = null
    open var Payco:PaymentIntentPaymentMethodOptionsPaycoOptions? = null
    open var Paynow:PaymentIntentPaymentMethodOptionsPaynowOptions? = null
    open var Paypal:PaymentIntentPaymentMethodOptionsPaypalOptions? = null
    open var Pix:PaymentIntentPaymentMethodOptionsPixOptions? = null
    open var Promptpay:PaymentIntentPaymentMethodOptionsPromptpayOptions? = null
    open var RevolutPay:PaymentIntentPaymentMethodOptionsRevolutPayOptions? = null
    open var SamsungPay:PaymentIntentPaymentMethodOptionsSamsungPayOptions? = null
    open var SepaDebit:PaymentIntentPaymentMethodOptionsSepaDebitOptions? = null
    open var Sofort:PaymentIntentPaymentMethodOptionsSofortOptions? = null
    open var Swish:PaymentIntentPaymentMethodOptionsSwishOptions? = null
    open var Twint:PaymentIntentPaymentMethodOptionsTwintOptions? = null
    open var UsBankAccount:PaymentIntentPaymentMethodOptionsUsBankAccountOptions? = null
    open var WechatPay:PaymentIntentPaymentMethodOptionsWechatPayOptions? = null
    open var Zip:PaymentIntentPaymentMethodOptionsZipOptions? = null
}

open class PaymentIntentPaymentMethodOptionsAcssDebitOptions : INestedOptions
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions : INestedOptions
{
    open var CustomMandateUrl:String? = null
    open var IntervalDescription:String? = null
    open var PaymentSchedule:String? = null
    open var TransactionType:String? = null
}

open class PaymentIntentPaymentMethodOptionsAffirmOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAlipayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAlmaOptions : INestedOptions
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsAmazonPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAuBecsDebitOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsBacsDebitOptions : INestedOptions
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions : INestedOptions
{
    open var ReferencePrefix:String? = null
}

open class PaymentIntentPaymentMethodOptionsBancontactOptions : INestedOptions
{
    open var PreferredLanguage:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsBlikOptions : INestedOptions
{
    open var Code:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsBoletoOptions : INestedOptions
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCardOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var CvcToken:String? = null
    open var Installments:PaymentIntentPaymentMethodOptionsCardInstallmentsOptions? = null
    open var MandateOptions:PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions? = null
    open var Moto:Boolean? = null
    open var Network:String? = null
    open var RequestExtendedAuthorization:String? = null
    open var RequestIncrementalAuthorization:String? = null
    open var RequestMulticapture:String? = null
    open var RequestOvercapture:String? = null
    open var RequestThreeDSecure:String? = null
    open var RequireCvcRecollection:Boolean? = null
    open var SetupFutureUsage:String? = null
    open var StatementDescriptorSuffixKana:String? = null
    open var StatementDescriptorSuffixKanji:String? = null
    open var ThreeDSecure:PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions? = null
}

open class PaymentIntentPaymentMethodOptionsCardInstallmentsOptions : INestedOptions
{
    open var Enabled:Boolean? = null
    open var Plan:PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions? = null
}

open class PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions : INestedOptions
{
    open var Count:Long? = null
    open var Interval:String? = null
    open var Type:String? = null
}

open class PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions : INestedOptions
{
    open var Amount:Long? = null
    open var AmountType:String? = null
    open var Description:String? = null
    open var EndDate:Date? = null
    open var Interval:String? = null
    open var IntervalCount:Long? = null
    open var Reference:String? = null
    open var StartDate:Date? = null
    open var SupportedTypes:ArrayList<String>? = null
}

open class PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions : INestedOptions
{
    open var AresTransStatus:String? = null
    open var Cryptogram:String? = null
    open var ElectronicCommerceIndicator:String? = null
    open var ExemptionIndicator:String? = null
    open var NetworkOptions:PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions? = null
    open var RequestorChallengeIndicator:String? = null
    open var TransactionId:String? = null
    open var Version:String? = null
}

open class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions : INestedOptions
{
    open var CartesBancaires:PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions? = null
}

open class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions : INestedOptions
{
    open var CbAvalgo:String? = null
    open var CbExemption:String? = null
    open var CbScore:Long? = null
}

open class PaymentIntentPaymentMethodOptionsCardPresentOptions : INestedOptions
{
    open var RequestExtendedAuthorization:Boolean? = null
    open var RequestIncrementalAuthorizationSupport:Boolean? = null
    open var Routing:PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions? = null
}

open class PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions : INestedOptions
{
    open var RequestedPriority:String? = null
}

open class PaymentIntentPaymentMethodOptionsCashappOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalanceOptions : INestedOptions
{
    open var BankTransfer:PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions? = null
    open var FundingType:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions : INestedOptions
{
    open var EuBankTransfer:PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions? = null
    open var RequestedAddressTypes:ArrayList<String>? = null
    open var Type:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions : INestedOptions
{
    open var Country:String? = null
}

open class PaymentIntentPaymentMethodOptionsEpsOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsFpxOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsGiropayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsGrabpayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsIdealOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsInteracPresentOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodOptionsKakaoPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKlarnaOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKonbiniOptions : INestedOptions
{
    open var ConfirmationNumber:String? = null
    open var ExpiresAfterDays:Long? = null
    open var ExpiresAt:Date? = null
    open var ProductDescription:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKrCardOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsLinkOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var PersistentToken:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsMobilepayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsMultibancoOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsNaverPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsNzBankAccountOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsOxxoOptions : INestedOptions
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsP24Options : INestedOptions
{
    open var SetupFutureUsage:String? = null
    open var TosShownAndAccepted:Boolean? = null
}

open class PaymentIntentPaymentMethodOptionsPayByBankOptions : INestedOptions
{
}

open class PaymentIntentPaymentMethodOptionsPaycoOptions : INestedOptions
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsPaynowOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPaypalOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var Reference:String? = null
    open var RiskCorrelationId:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPixOptions : INestedOptions
{
    open var ExpiresAfterSeconds:Long? = null
    open var ExpiresAt:Date? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPromptpayOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsRevolutPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsSamsungPayOptions : INestedOptions
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsSepaDebitOptions : INestedOptions
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions : INestedOptions
{
    open var ReferencePrefix:String? = null
}

open class PaymentIntentPaymentMethodOptionsSofortOptions : INestedOptions
{
    open var PreferredLanguage:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsSwishOptions : INestedOptions
{
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsTwintOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountOptions : INestedOptions
{
    open var FinancialConnections:PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions? = null
    open var MandateOptions:PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions? = null
    open var Networks:PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions? = null
    open var PreferredSettlementSpeed:String? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions : INestedOptions
{
    open var Filters:PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions? = null
    open var Permissions:ArrayList<String>? = null
    open var Prefetch:ArrayList<String>? = null
    open var ReturnUrl:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions : INestedOptions
{
    open var AccountSubcategories:ArrayList<String>? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions : INestedOptions
{
    open var CollectionMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions : INestedOptions
{
    open var Requested:ArrayList<String>? = null
}

open class PaymentIntentPaymentMethodOptionsWechatPayOptions : INestedOptions
{
    open var AppId:String? = null
    open var Client:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsZipOptions : INestedOptions
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentRadarOptionsOptions : INestedOptions
{
    open var Session:String? = null
}

open class PaymentIntentTransferDataOptions : INestedOptions
{
    open var Amount:Long? = null
    open var Destination:String? = null
}

open class CustomerCreateOptions : BaseOptions(), IHasMetadata
{
    open var Address:AddressOptions? = null
    open var Balance:Long? = null
    open var CashBalance:CustomerCashBalanceOptions? = null
    open var Description:String? = null
    open var Email:String? = null
    open var InvoicePrefix:String? = null
    open var InvoiceSettings:CustomerInvoiceSettingsOptions? = null
    override var Metadata:HashMap<String,String>? = null
    open var Name:String? = null
    open var NextInvoiceSequence:Long? = null
    open var PaymentMethod:String? = null
    open var Phone:String? = null
    open var Plan:String? = null
    open var PreferredLocales:ArrayList<String>? = null
    open var Shipping:ShippingOptions? = null
    open var Source:AnyOf_2<String, CardCreateNestedOptions>? = null
    open var Tax:CustomerTaxOptions? = null
    open var TaxExempt:String? = null
    open var TaxIdData:ArrayList<CustomerTaxIdDataOptions>? = null
    open var TestClock:String? = null
    open var Validate:Boolean? = null
}

open class CustomerCashBalanceOptions : INestedOptions
{
    open var Settings:CustomerCashBalanceSettingsOptions? = null
}

open class CustomerCashBalanceSettingsOptions : INestedOptions
{
    open var ReconciliationMode:String? = null
}

open class CustomerInvoiceSettingsOptions : INestedOptions
{
    open var CustomFields:ArrayList<CustomerInvoiceSettingsCustomFieldOptions>? = null
    open var DefaultPaymentMethod:String? = null
    open var Footer:String? = null
    open var RenderingOptions:CustomerInvoiceSettingsRenderingOptionsOptions? = null
}

open class CustomerInvoiceSettingsCustomFieldOptions : INestedOptions
{
    open var Name:String? = null
    open var Value:String? = null
}

open class CustomerInvoiceSettingsRenderingOptionsOptions : INestedOptions
{
    open var AmountTaxDisplay:String? = null
    open var Template:String? = null
}

open class ShippingOptions : INestedOptions
{
    open var Address:AddressOptions? = null
    open var Name:String? = null
    open var Phone:String? = null
}

open class AnyOf_2<T1, T2> : AnyOf()
{
    override var Value:Object? = null
    override var Type:Class? = null
}

open class AnyOf : IAnyOf
{
    override var Value:Object? = null
    override var Type:Class? = null
}

open class CardCreateNestedOptions : INestedOptions, IHasMetadata, IHasObject
{
    open var AddressCity:String? = null
    open var AddressCountry:String? = null
    open var AddressLine1:String? = null
    open var AddressLine2:String? = null
    open var AddressState:String? = null
    open var AddressZip:String? = null
    open var Currency:String? = null
    open var Cvc:String? = null
    open var ExpMonth:Long? = null
    open var ExpYear:Long? = null
    override var Metadata:HashMap<String,String>? = null
    open var Name:String? = null
    open var Number:String? = null
    override var Object:String? = null
}

open class CustomerTaxOptions : INestedOptions
{
    open var IpAddress:String? = null
    open var ValidateLocation:String? = null
}

open class CustomerTaxIdDataOptions : INestedOptions
{
    open var Type:String? = null
    open var Value:String? = null
}

open class RequestOptions
{
    open var ApiKey:String? = null
    open var IdempotencyKey:String? = null
    open var StripeAccount:String? = null
    open var StripeContext:String? = null
}

open class CustomCheckoutData
{
    open var CustomSessionData:CustomSessionData? = null
    open var CustomPaymentIntentData:CustomPaymentIntentData? = null
}

open class CustomSessionData
{
    open var Session:Session? = null
    open var LineItems:ArrayList<LineItem>? = null
    open var PaymentIntent:PaymentIntent? = null
}

open class Session : StripeEntity_1<Session>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var AdaptivePricing:SessionAdaptivePricing? = null
    open var AfterExpiration:SessionAfterExpiration? = null
    open var AllowPromotionCodes:Boolean? = null
    open var AmountSubtotal:Long? = null
    open var AmountTotal:Long? = null
    open var AutomaticTax:SessionAutomaticTax? = null
    open var BillingAddressCollection:String? = null
    open var CancelUrl:String? = null
    open var ClientReferenceId:String? = null
    open var ClientSecret:String? = null
    open var CollectedInformation:SessionCollectedInformation? = null
    open var Consent:SessionConsent? = null
    open var ConsentCollection:SessionConsentCollection? = null
    open var Created:Date? = null
    open var Currency:String? = null
    open var CurrencyConversion:SessionCurrencyConversion? = null
    open var CustomFields:ArrayList<SessionCustomField>? = null
    open var CustomText:SessionCustomText? = null
    open var CustomerCreation:String? = null
    open var CustomerDetails:SessionCustomerDetails? = null
    open var CustomerEmail:String? = null
    open var Discounts:ArrayList<SessionDiscount>? = null
    open var ExpiresAt:Date? = null
    open var InvoiceCreation:SessionInvoiceCreation? = null
    open var LineItems:StripeList<LineItem>? = null
    open var Livemode:Boolean? = null
    open var Locale:String? = null
    override var Metadata:HashMap<String,String>? = null
    open var Mode:String? = null
    open var OptionalItems:ArrayList<SessionOptionalItem>? = null
    open var PaymentMethodCollection:String? = null
    open var PaymentMethodConfigurationDetails:SessionPaymentMethodConfigurationDetails? = null
    open var PaymentMethodOptions:SessionPaymentMethodOptions? = null
    open var PaymentMethodTypes:ArrayList<String>? = null
    open var PaymentStatus:String? = null
    open var Permissions:SessionPermissions? = null
    open var PhoneNumberCollection:SessionPhoneNumberCollection? = null
    open var PresentmentDetails:SessionPresentmentDetails? = null
    open var RecoveredFrom:String? = null
    open var RedirectOnCompletion:String? = null
    open var ReturnUrl:String? = null
    open var SavedPaymentMethodOptions:SessionSavedPaymentMethodOptions? = null
    open var ShippingAddressCollection:SessionShippingAddressCollection? = null
    open var ShippingCost:SessionShippingCost? = null
    open var ShippingOptions:ArrayList<SessionShippingOption>? = null
    open var Status:String? = null
    open var SubmitType:String? = null
    open var SuccessUrl:String? = null
    open var TaxIdCollection:SessionTaxIdCollection? = null
    open var TotalDetails:SessionTotalDetails? = null
    open var UiMode:String? = null
    open var Url:String? = null
}

open class StripeEntity_1<T> : StripeEntity()
{
}

open class StripeEntity : IStripeEntity
{
}

open class SessionAdaptivePricing : StripeEntity_1<SessionAdaptivePricing>()
{
    open var Enabled:Boolean? = null
}

open class SessionAfterExpiration : StripeEntity_1<SessionAfterExpiration>()
{
    open var Recovery:SessionAfterExpirationRecovery? = null
}

open class SessionAfterExpirationRecovery : StripeEntity_1<SessionAfterExpirationRecovery>()
{
    open var AllowPromotionCodes:Boolean? = null
    open var Enabled:Boolean? = null
    open var ExpiresAt:Date? = null
    open var Url:String? = null
}

open class SessionAutomaticTax : StripeEntity_1<SessionAutomaticTax>()
{
    open var Enabled:Boolean? = null
    open var Liability:SessionAutomaticTaxLiability? = null
    open var Status:String? = null
}

open class SessionAutomaticTaxLiability : StripeEntity_1<SessionAutomaticTaxLiability>()
{
    open var Type:String? = null
}

open class SessionCollectedInformation : StripeEntity_1<SessionCollectedInformation>()
{
    open var ShippingDetails:SessionCollectedInformationShippingDetails? = null
}

open class SessionCollectedInformationShippingDetails : StripeEntity_1<SessionCollectedInformationShippingDetails>()
{
    open var Address:Address? = null
    open var Name:String? = null
}

open class Address : StripeEntity_1<Address>()
{
    open var City:String? = null
    open var Country:String? = null
    open var Line1:String? = null
    open var Line2:String? = null
    open var PostalCode:String? = null
    open var State:String? = null
}

open class SessionConsent : StripeEntity_1<SessionConsent>()
{
    open var Promotions:String? = null
    open var TermsOfService:String? = null
}

open class SessionConsentCollection : StripeEntity_1<SessionConsentCollection>()
{
    open var PaymentMethodReuseAgreement:SessionConsentCollectionPaymentMethodReuseAgreement? = null
    open var Promotions:String? = null
    open var TermsOfService:String? = null
}

open class SessionConsentCollectionPaymentMethodReuseAgreement : StripeEntity_1<SessionConsentCollectionPaymentMethodReuseAgreement>()
{
    open var Position:String? = null
}

open class SessionCurrencyConversion : StripeEntity_1<SessionCurrencyConversion>()
{
    open var AmountSubtotal:Long? = null
    open var AmountTotal:Long? = null
    open var FxRate:BigDecimal? = null
    open var SourceCurrency:String? = null
}

open class SessionCustomField : StripeEntity_1<SessionCustomField>()
{
    open var Dropdown:SessionCustomFieldDropdown? = null
    open var Key:String? = null
    open var Label:SessionCustomFieldLabel? = null
    open var Numeric:SessionCustomFieldNumeric? = null
    open var Optional:Boolean? = null
    open var Text:SessionCustomFieldText? = null
    open var Type:String? = null
}

open class SessionCustomFieldDropdown : StripeEntity_1<SessionCustomFieldDropdown>()
{
    open var DefaultValue:String? = null
    open var Options:ArrayList<SessionCustomFieldDropdownOption>? = null
    open var Value:String? = null
}

open class SessionCustomFieldDropdownOption : StripeEntity_1<SessionCustomFieldDropdownOption>()
{
    open var Label:String? = null
    open var Value:String? = null
}

open class SessionCustomFieldLabel : StripeEntity_1<SessionCustomFieldLabel>()
{
    open var Custom:String? = null
    open var Type:String? = null
}

open class SessionCustomFieldNumeric : StripeEntity_1<SessionCustomFieldNumeric>()
{
    open var DefaultValue:String? = null
    open var MaximumLength:Long? = null
    open var MinimumLength:Long? = null
    open var Value:String? = null
}

open class SessionCustomFieldText : StripeEntity_1<SessionCustomFieldText>()
{
    open var DefaultValue:String? = null
    open var MaximumLength:Long? = null
    open var MinimumLength:Long? = null
    open var Value:String? = null
}

open class SessionCustomText : StripeEntity_1<SessionCustomText>()
{
    open var AfterSubmit:SessionCustomTextAfterSubmit? = null
    open var ShippingAddress:SessionCustomTextShippingAddress? = null
    open var Submit:SessionCustomTextSubmit? = null
    open var TermsOfServiceAcceptance:SessionCustomTextTermsOfServiceAcceptance? = null
}

open class SessionCustomTextAfterSubmit : StripeEntity_1<SessionCustomTextAfterSubmit>()
{
    open var Message:String? = null
}

open class SessionCustomTextShippingAddress : StripeEntity_1<SessionCustomTextShippingAddress>()
{
    open var Message:String? = null
}

open class SessionCustomTextSubmit : StripeEntity_1<SessionCustomTextSubmit>()
{
    open var Message:String? = null
}

open class SessionCustomTextTermsOfServiceAcceptance : StripeEntity_1<SessionCustomTextTermsOfServiceAcceptance>()
{
    open var Message:String? = null
}

open class SessionCustomerDetails : StripeEntity_1<SessionCustomerDetails>()
{
    open var Address:Address? = null
    open var Email:String? = null
    open var Name:String? = null
    open var Phone:String? = null
    open var TaxExempt:String? = null
    open var TaxIds:ArrayList<SessionCustomerDetailsTaxId>? = null
}

open class SessionCustomerDetailsTaxId : StripeEntity_1<SessionCustomerDetailsTaxId>()
{
    open var Type:String? = null
    open var Value:String? = null
}

open class SessionDiscount : StripeEntity_1<SessionDiscount>()
{
}

open class SessionInvoiceCreation : StripeEntity_1<SessionInvoiceCreation>()
{
    open var Enabled:Boolean? = null
    open var InvoiceData:SessionInvoiceCreationInvoiceData? = null
}

open class SessionInvoiceCreationInvoiceData : StripeEntity_1<SessionInvoiceCreationInvoiceData>(), IHasMetadata
{
    open var CustomFields:ArrayList<SessionInvoiceCreationInvoiceDataCustomField>? = null
    open var Description:String? = null
    open var Footer:String? = null
    open var Issuer:SessionInvoiceCreationInvoiceDataIssuer? = null
    override var Metadata:HashMap<String,String>? = null
    open var RenderingOptions:SessionInvoiceCreationInvoiceDataRenderingOptions? = null
}

open class SessionInvoiceCreationInvoiceDataCustomField : StripeEntity_1<SessionInvoiceCreationInvoiceDataCustomField>()
{
    open var Name:String? = null
    open var Value:String? = null
}

open class SessionInvoiceCreationInvoiceDataIssuer : StripeEntity_1<SessionInvoiceCreationInvoiceDataIssuer>()
{
    open var Type:String? = null
}

open class SessionInvoiceCreationInvoiceDataRenderingOptions : StripeEntity_1<SessionInvoiceCreationInvoiceDataRenderingOptions>()
{
    open var AmountTaxDisplay:String? = null
}

open class StripeList<T> : StripeEntity_1<StripeList<T>>(), IHasObject
{
}

open class LineItem : StripeEntity_1<LineItem>(), IHasId, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var AmountDiscount:Long? = null
    open var AmountSubtotal:Long? = null
    open var AmountTax:Long? = null
    open var AmountTotal:Long? = null
    open var Currency:String? = null
    open var Description:String? = null
    open var Discounts:ArrayList<LineItemDiscount>? = null
    open var Price:Price? = null
    open var Quantity:Long? = null
    open var Taxes:ArrayList<LineItemTax>? = null
}

open class LineItemDiscount : StripeEntity_1<LineItemDiscount>()
{
    open var Amount:Long? = null
    open var Discount:Discount? = null
}

open class Discount : StripeEntity_1<Discount>(), IHasId, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var CheckoutSession:String? = null
    open var Coupon:Coupon? = null
    open var End:Date? = null
    open var Invoice:String? = null
    open var InvoiceItem:String? = null
    open var Start:Date? = null
    open var Subscription:String? = null
    open var SubscriptionItem:String? = null
}

open class Coupon : StripeEntity_1<Coupon>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var AmountOff:Long? = null
    open var AppliesTo:CouponAppliesTo? = null
    open var Created:Date? = null
    open var Currency:String? = null
    open var CurrencyOptions:HashMap<String,CouponCurrencyOptions>? = null
    open var Duration:String? = null
    open var DurationInMonths:Long? = null
    open var Livemode:Boolean? = null
    open var MaxRedemptions:Long? = null
    override var Metadata:HashMap<String,String>? = null
    open var Name:String? = null
    open var PercentOff:BigDecimal? = null
    open var RedeemBy:Date? = null
    open var TimesRedeemed:Long? = null
    open var Valid:Boolean? = null
}

open class CouponAppliesTo : StripeEntity_1<CouponAppliesTo>()
{
    open var Products:ArrayList<String>? = null
}

open class CouponCurrencyOptions : StripeEntity_1<CouponCurrencyOptions>()
{
    open var AmountOff:Long? = null
}

open class Price : StripeEntity_1<Price>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var Active:Boolean? = null
    open var BillingScheme:String? = null
    open var Created:Date? = null
    open var Currency:String? = null
    open var CurrencyOptions:HashMap<String,PriceCurrencyOptions>? = null
    open var CustomUnitAmount:PriceCustomUnitAmount? = null
    open var Livemode:Boolean? = null
    open var LookupKey:String? = null
    override var Metadata:HashMap<String,String>? = null
    open var Nickname:String? = null
    open var Recurring:PriceRecurring? = null
    open var TaxBehavior:String? = null
    open var Tiers:ArrayList<PriceTier>? = null
    open var TiersMode:String? = null
    open var TransformQuantity:PriceTransformQuantity? = null
    open var Type:String? = null
    open var UnitAmount:Long? = null
    open var UnitAmountDecimal:BigDecimal? = null
}

open class PriceCurrencyOptions : StripeEntity_1<PriceCurrencyOptions>()
{
    open var CustomUnitAmount:PriceCurrencyOptionsCustomUnitAmount? = null
    open var TaxBehavior:String? = null
    open var Tiers:ArrayList<PriceCurrencyOptionsTier>? = null
    open var UnitAmount:Long? = null
    open var UnitAmountDecimal:BigDecimal? = null
}

open class PriceCurrencyOptionsCustomUnitAmount : StripeEntity_1<PriceCurrencyOptionsCustomUnitAmount>()
{
    open var Maximum:Long? = null
    open var Minimum:Long? = null
    open var Preset:Long? = null
}

open class PriceCurrencyOptionsTier : StripeEntity_1<PriceCurrencyOptionsTier>()
{
    open var FlatAmount:Long? = null
    open var FlatAmountDecimal:BigDecimal? = null
    open var UnitAmount:Long? = null
    open var UnitAmountDecimal:BigDecimal? = null
    open var UpTo:Long? = null
}

open class PriceCustomUnitAmount : StripeEntity_1<PriceCustomUnitAmount>()
{
    open var Maximum:Long? = null
    open var Minimum:Long? = null
    open var Preset:Long? = null
}

open class PriceRecurring : StripeEntity_1<PriceRecurring>()
{
    open var Interval:String? = null
    open var IntervalCount:Long? = null
    open var Meter:String? = null
    open var TrialPeriodDays:Long? = null
    open var UsageType:String? = null
}

open class PriceTier : StripeEntity_1<PriceTier>()
{
    open var FlatAmount:Long? = null
    open var FlatAmountDecimal:BigDecimal? = null
    open var UnitAmount:Long? = null
    open var UnitAmountDecimal:BigDecimal? = null
    open var UpTo:Long? = null
}

open class PriceTransformQuantity : StripeEntity_1<PriceTransformQuantity>()
{
    open var DivideBy:Long? = null
    open var Round:String? = null
}

open class LineItemTax : StripeEntity_1<LineItemTax>()
{
    open var Amount:Long? = null
    open var Rate:TaxRate? = null
    open var TaxabilityReason:String? = null
    open var TaxableAmount:Long? = null
}

open class TaxRate : StripeEntity_1<TaxRate>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var Active:Boolean? = null
    open var Country:String? = null
    open var Created:Date? = null
    open var Description:String? = null
    open var DisplayName:String? = null
    open var EffectivePercentage:BigDecimal? = null
    open var FlatAmount:TaxRateFlatAmount? = null
    open var Inclusive:Boolean? = null
    open var Jurisdiction:String? = null
    open var JurisdictionLevel:String? = null
    open var Livemode:Boolean? = null
    override var Metadata:HashMap<String,String>? = null
    open var Percentage:BigDecimal? = null
    open var RateType:String? = null
    open var State:String? = null
    open var TaxType:String? = null
}

open class TaxRateFlatAmount : StripeEntity_1<TaxRateFlatAmount>()
{
    open var Amount:Long? = null
    open var Currency:String? = null
}

open class SessionOptionalItem : StripeEntity_1<SessionOptionalItem>()
{
    open var AdjustableQuantity:SessionOptionalItemAdjustableQuantity? = null
    open var Price:String? = null
    open var Quantity:Long? = null
}

open class SessionOptionalItemAdjustableQuantity : StripeEntity_1<SessionOptionalItemAdjustableQuantity>()
{
    open var Enabled:Boolean? = null
    open var Maximum:Long? = null
    open var Minimum:Long? = null
}

open class SessionPaymentMethodConfigurationDetails : StripeEntity_1<SessionPaymentMethodConfigurationDetails>(), IHasId
{
    override var Id:String? = null
    open var Parent:String? = null
}

open class SessionPaymentMethodOptions : StripeEntity_1<SessionPaymentMethodOptions>()
{
    open var AcssDebit:SessionPaymentMethodOptionsAcssDebit? = null
    open var Affirm:SessionPaymentMethodOptionsAffirm? = null
    open var AfterpayClearpay:SessionPaymentMethodOptionsAfterpayClearpay? = null
    open var Alipay:SessionPaymentMethodOptionsAlipay? = null
    open var AmazonPay:SessionPaymentMethodOptionsAmazonPay? = null
    open var AuBecsDebit:SessionPaymentMethodOptionsAuBecsDebit? = null
    open var BacsDebit:SessionPaymentMethodOptionsBacsDebit? = null
    open var Bancontact:SessionPaymentMethodOptionsBancontact? = null
    open var Boleto:SessionPaymentMethodOptionsBoleto? = null
    open var Card:SessionPaymentMethodOptionsCard? = null
    open var Cashapp:SessionPaymentMethodOptionsCashapp? = null
    open var CustomerBalance:SessionPaymentMethodOptionsCustomerBalance? = null
    open var Eps:SessionPaymentMethodOptionsEps? = null
    open var Fpx:SessionPaymentMethodOptionsFpx? = null
    open var Giropay:SessionPaymentMethodOptionsGiropay? = null
    open var Grabpay:SessionPaymentMethodOptionsGrabpay? = null
    open var Ideal:SessionPaymentMethodOptionsIdeal? = null
    open var KakaoPay:SessionPaymentMethodOptionsKakaoPay? = null
    open var Klarna:SessionPaymentMethodOptionsKlarna? = null
    open var Konbini:SessionPaymentMethodOptionsKonbini? = null
    open var KrCard:SessionPaymentMethodOptionsKrCard? = null
    open var Link:SessionPaymentMethodOptionsLink? = null
    open var Mobilepay:SessionPaymentMethodOptionsMobilepay? = null
    open var Multibanco:SessionPaymentMethodOptionsMultibanco? = null
    open var NaverPay:SessionPaymentMethodOptionsNaverPay? = null
    open var Oxxo:SessionPaymentMethodOptionsOxxo? = null
    open var P24:SessionPaymentMethodOptionsP24? = null
    open var Payco:SessionPaymentMethodOptionsPayco? = null
    open var Paynow:SessionPaymentMethodOptionsPaynow? = null
    open var Paypal:SessionPaymentMethodOptionsPaypal? = null
    open var Pix:SessionPaymentMethodOptionsPix? = null
    open var RevolutPay:SessionPaymentMethodOptionsRevolutPay? = null
    open var SamsungPay:SessionPaymentMethodOptionsSamsungPay? = null
    open var SepaDebit:SessionPaymentMethodOptionsSepaDebit? = null
    open var Sofort:SessionPaymentMethodOptionsSofort? = null
    open var Swish:SessionPaymentMethodOptionsSwish? = null
    open var UsBankAccount:SessionPaymentMethodOptionsUsBankAccount? = null
}

open class SessionPaymentMethodOptionsAcssDebit : StripeEntity_1<SessionPaymentMethodOptionsAcssDebit>()
{
    open var Currency:String? = null
    open var MandateOptions:SessionPaymentMethodOptionsAcssDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class SessionPaymentMethodOptionsAcssDebitMandateOptions : StripeEntity_1<SessionPaymentMethodOptionsAcssDebitMandateOptions>()
{
    open var CustomMandateUrl:String? = null
    open var DefaultFor:ArrayList<String>? = null
    open var IntervalDescription:String? = null
    open var PaymentSchedule:String? = null
    open var TransactionType:String? = null
}

open class SessionPaymentMethodOptionsAffirm : StripeEntity_1<SessionPaymentMethodOptionsAffirm>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAfterpayClearpay : StripeEntity_1<SessionPaymentMethodOptionsAfterpayClearpay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAlipay : StripeEntity_1<SessionPaymentMethodOptionsAlipay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAmazonPay : StripeEntity_1<SessionPaymentMethodOptionsAmazonPay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsAuBecsDebit : StripeEntity_1<SessionPaymentMethodOptionsAuBecsDebit>()
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsBacsDebit : StripeEntity_1<SessionPaymentMethodOptionsBacsDebit>()
{
    open var MandateOptions:SessionPaymentMethodOptionsBacsDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsBacsDebitMandateOptions : StripeEntity_1<SessionPaymentMethodOptionsBacsDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class SessionPaymentMethodOptionsBancontact : StripeEntity_1<SessionPaymentMethodOptionsBancontact>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsBoleto : StripeEntity_1<SessionPaymentMethodOptionsBoleto>()
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCard : StripeEntity_1<SessionPaymentMethodOptionsCard>()
{
    open var Installments:SessionPaymentMethodOptionsCardInstallments? = null
    open var RequestExtendedAuthorization:String? = null
    open var RequestIncrementalAuthorization:String? = null
    open var RequestMulticapture:String? = null
    open var RequestOvercapture:String? = null
    open var RequestThreeDSecure:String? = null
    open var Restrictions:SessionPaymentMethodOptionsCardRestrictions? = null
    open var SetupFutureUsage:String? = null
    open var StatementDescriptorSuffixKana:String? = null
    open var StatementDescriptorSuffixKanji:String? = null
}

open class SessionPaymentMethodOptionsCardInstallments : StripeEntity_1<SessionPaymentMethodOptionsCardInstallments>()
{
    open var Enabled:Boolean? = null
}

open class SessionPaymentMethodOptionsCardRestrictions : StripeEntity_1<SessionPaymentMethodOptionsCardRestrictions>()
{
    open var BrandsBlocked:ArrayList<String>? = null
}

open class SessionPaymentMethodOptionsCashapp : StripeEntity_1<SessionPaymentMethodOptionsCashapp>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalance : StripeEntity_1<SessionPaymentMethodOptionsCustomerBalance>()
{
    open var BankTransfer:SessionPaymentMethodOptionsCustomerBalanceBankTransfer? = null
    open var FundingType:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalanceBankTransfer : StripeEntity_1<SessionPaymentMethodOptionsCustomerBalanceBankTransfer>()
{
    open var EuBankTransfer:SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer? = null
    open var RequestedAddressTypes:ArrayList<String>? = null
    open var Type:String? = null
}

open class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer : StripeEntity_1<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>()
{
    open var Country:String? = null
}

open class SessionPaymentMethodOptionsEps : StripeEntity_1<SessionPaymentMethodOptionsEps>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsFpx : StripeEntity_1<SessionPaymentMethodOptionsFpx>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsGiropay : StripeEntity_1<SessionPaymentMethodOptionsGiropay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsGrabpay : StripeEntity_1<SessionPaymentMethodOptionsGrabpay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsIdeal : StripeEntity_1<SessionPaymentMethodOptionsIdeal>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKakaoPay : StripeEntity_1<SessionPaymentMethodOptionsKakaoPay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKlarna : StripeEntity_1<SessionPaymentMethodOptionsKlarna>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKonbini : StripeEntity_1<SessionPaymentMethodOptionsKonbini>()
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsKrCard : StripeEntity_1<SessionPaymentMethodOptionsKrCard>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsLink : StripeEntity_1<SessionPaymentMethodOptionsLink>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsMobilepay : StripeEntity_1<SessionPaymentMethodOptionsMobilepay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsMultibanco : StripeEntity_1<SessionPaymentMethodOptionsMultibanco>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsNaverPay : StripeEntity_1<SessionPaymentMethodOptionsNaverPay>()
{
    open var CaptureMethod:String? = null
}

open class SessionPaymentMethodOptionsOxxo : StripeEntity_1<SessionPaymentMethodOptionsOxxo>()
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsP24 : StripeEntity_1<SessionPaymentMethodOptionsP24>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsPayco : StripeEntity_1<SessionPaymentMethodOptionsPayco>()
{
    open var CaptureMethod:String? = null
}

open class SessionPaymentMethodOptionsPaynow : StripeEntity_1<SessionPaymentMethodOptionsPaynow>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsPaypal : StripeEntity_1<SessionPaymentMethodOptionsPaypal>()
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsPix : StripeEntity_1<SessionPaymentMethodOptionsPix>()
{
    open var ExpiresAfterSeconds:Long? = null
}

open class SessionPaymentMethodOptionsRevolutPay : StripeEntity_1<SessionPaymentMethodOptionsRevolutPay>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsSamsungPay : StripeEntity_1<SessionPaymentMethodOptionsSamsungPay>()
{
    open var CaptureMethod:String? = null
}

open class SessionPaymentMethodOptionsSepaDebit : StripeEntity_1<SessionPaymentMethodOptionsSepaDebit>()
{
    open var MandateOptions:SessionPaymentMethodOptionsSepaDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class SessionPaymentMethodOptionsSepaDebitMandateOptions : StripeEntity_1<SessionPaymentMethodOptionsSepaDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class SessionPaymentMethodOptionsSofort : StripeEntity_1<SessionPaymentMethodOptionsSofort>()
{
    open var SetupFutureUsage:String? = null
}

open class SessionPaymentMethodOptionsSwish : StripeEntity_1<SessionPaymentMethodOptionsSwish>()
{
    open var Reference:String? = null
}

open class SessionPaymentMethodOptionsUsBankAccount : StripeEntity_1<SessionPaymentMethodOptionsUsBankAccount>()
{
    open var FinancialConnections:SessionPaymentMethodOptionsUsBankAccountFinancialConnections? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class SessionPaymentMethodOptionsUsBankAccountFinancialConnections : StripeEntity_1<SessionPaymentMethodOptionsUsBankAccountFinancialConnections>()
{
    open var Filters:SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? = null
    open var Permissions:ArrayList<String>? = null
    open var Prefetch:ArrayList<String>? = null
    open var ReturnUrl:String? = null
}

open class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters : StripeEntity_1<SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>()
{
    open var AccountSubcategories:ArrayList<String>? = null
}

open class SessionPermissions : StripeEntity_1<SessionPermissions>()
{
    open var UpdateShippingDetails:String? = null
}

open class SessionPhoneNumberCollection : StripeEntity_1<SessionPhoneNumberCollection>()
{
    open var Enabled:Boolean? = null
}

open class SessionPresentmentDetails : StripeEntity_1<SessionPresentmentDetails>()
{
    open var PresentmentAmount:Long? = null
    open var PresentmentCurrency:String? = null
}

open class SessionSavedPaymentMethodOptions : StripeEntity_1<SessionSavedPaymentMethodOptions>()
{
    open var AllowRedisplayFilters:ArrayList<String>? = null
    open var PaymentMethodRemove:String? = null
    open var PaymentMethodSave:String? = null
}

open class SessionShippingAddressCollection : StripeEntity_1<SessionShippingAddressCollection>()
{
    open var AllowedCountries:ArrayList<String>? = null
}

open class SessionShippingCost : StripeEntity_1<SessionShippingCost>()
{
    open var AmountSubtotal:Long? = null
    open var AmountTax:Long? = null
    open var AmountTotal:Long? = null
    open var Taxes:ArrayList<SessionShippingCostTax>? = null
}

open class SessionShippingCostTax : StripeEntity_1<SessionShippingCostTax>()
{
    open var Amount:Long? = null
    open var Rate:TaxRate? = null
    open var TaxabilityReason:String? = null
    open var TaxableAmount:Long? = null
}

open class SessionShippingOption : StripeEntity_1<SessionShippingOption>()
{
    open var ShippingAmount:Long? = null
}

open class SessionTaxIdCollection : StripeEntity_1<SessionTaxIdCollection>()
{
    open var Enabled:Boolean? = null
    open var Required:String? = null
}

open class SessionTotalDetails : StripeEntity_1<SessionTotalDetails>()
{
    open var AmountDiscount:Long? = null
    open var AmountShipping:Long? = null
    open var AmountTax:Long? = null
    open var Breakdown:SessionTotalDetailsBreakdown? = null
}

open class SessionTotalDetailsBreakdown : StripeEntity_1<SessionTotalDetailsBreakdown>()
{
    open var Discounts:ArrayList<SessionTotalDetailsBreakdownDiscount>? = null
    open var Taxes:ArrayList<SessionTotalDetailsBreakdownTax>? = null
}

open class SessionTotalDetailsBreakdownDiscount : StripeEntity_1<SessionTotalDetailsBreakdownDiscount>()
{
    open var Amount:Long? = null
    open var Discount:Discount? = null
}

open class SessionTotalDetailsBreakdownTax : StripeEntity_1<SessionTotalDetailsBreakdownTax>()
{
    open var Amount:Long? = null
    open var Rate:TaxRate? = null
    open var TaxabilityReason:String? = null
    open var TaxableAmount:Long? = null
}

open class PaymentIntent : StripeEntity_1<PaymentIntent>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var Amount:Long? = null
    open var AmountCapturable:Long? = null
    open var AmountDetails:PaymentIntentAmountDetails? = null
    open var AmountReceived:Long? = null
    open var ApplicationFeeAmount:Long? = null
    open var AutomaticPaymentMethods:PaymentIntentAutomaticPaymentMethods? = null
    open var CanceledAt:Date? = null
    open var CancellationReason:String? = null
    open var CaptureMethod:String? = null
    open var ClientSecret:String? = null
    open var ConfirmationMethod:String? = null
    open var Created:Date? = null
    open var Currency:String? = null
    open var Description:String? = null
    open var LastPaymentError:StripeError? = null
    open var Livemode:Boolean? = null
    override var Metadata:HashMap<String,String>? = null
    open var NextAction:PaymentIntentNextAction? = null
    open var PaymentMethodConfigurationDetails:PaymentIntentPaymentMethodConfigurationDetails? = null
    open var PaymentMethodOptions:PaymentIntentPaymentMethodOptions? = null
    open var PaymentMethodTypes:ArrayList<String>? = null
    open var PresentmentDetails:PaymentIntentPresentmentDetails? = null
    open var Processing:PaymentIntentProcessing? = null
    open var ReceiptEmail:String? = null
    open var SetupFutureUsage:String? = null
    open var Shipping:Shipping? = null
    open var StatementDescriptor:String? = null
    open var StatementDescriptorSuffix:String? = null
    open var Status:String? = null
    open var TransferData:PaymentIntentTransferData? = null
    open var TransferGroup:String? = null
}

open class PaymentIntentAmountDetails : StripeEntity_1<PaymentIntentAmountDetails>()
{
    open var Tip:PaymentIntentAmountDetailsTip? = null
}

open class PaymentIntentAmountDetailsTip : StripeEntity_1<PaymentIntentAmountDetailsTip>()
{
    open var Amount:Long? = null
}

open class PaymentIntentAutomaticPaymentMethods : StripeEntity_1<PaymentIntentAutomaticPaymentMethods>()
{
    open var AllowRedirects:String? = null
    open var Enabled:Boolean? = null
}

open class StripeError : StripeEntity_1<StripeError>()
{
    open var Charge:String? = null
    open var Code:String? = null
    open var DeclineCode:String? = null
    open var DocUrl:String? = null
    open var Message:String? = null
    open var Param:String? = null
    open var PaymentIntent:PaymentIntent? = null
    open var PaymentMethod:PaymentMethod? = null
    open var PaymentMethodType:String? = null
    open var RequestLogUrl:String? = null
    open var SetupIntent:SetupIntent? = null
    open var Source:IPaymentSource? = null
    open var Type:String? = null
    open var Error:String? = null
    open var ErrorDescription:String? = null
}

open class PaymentMethod : StripeEntity_1<PaymentMethod>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var AcssDebit:PaymentMethodAcssDebit? = null
    open var Affirm:PaymentMethodAffirm? = null
    open var AfterpayClearpay:PaymentMethodAfterpayClearpay? = null
    open var Alipay:PaymentMethodAlipay? = null
    open var AllowRedisplay:String? = null
    open var Alma:PaymentMethodAlma? = null
    open var AmazonPay:PaymentMethodAmazonPay? = null
    open var AuBecsDebit:PaymentMethodAuBecsDebit? = null
    open var BacsDebit:PaymentMethodBacsDebit? = null
    open var Bancontact:PaymentMethodBancontact? = null
    open var Billie:PaymentMethodBillie? = null
    open var BillingDetails:PaymentMethodBillingDetails? = null
    open var Blik:PaymentMethodBlik? = null
    open var Boleto:PaymentMethodBoleto? = null
    open var Card:PaymentMethodCard? = null
    open var CardPresent:PaymentMethodCardPresent? = null
    open var Cashapp:PaymentMethodCashapp? = null
    open var Created:Date? = null
    open var CustomerBalance:PaymentMethodCustomerBalance? = null
    open var Eps:PaymentMethodEps? = null
    open var Fpx:PaymentMethodFpx? = null
    open var Giropay:PaymentMethodGiropay? = null
    open var Grabpay:PaymentMethodGrabpay? = null
    open var Ideal:PaymentMethodIdeal? = null
    open var InteracPresent:PaymentMethodInteracPresent? = null
    open var KakaoPay:PaymentMethodKakaoPay? = null
    open var Klarna:PaymentMethodKlarna? = null
    open var Konbini:PaymentMethodKonbini? = null
    open var KrCard:PaymentMethodKrCard? = null
    open var Link:PaymentMethodLink? = null
    open var Livemode:Boolean? = null
    override var Metadata:HashMap<String,String>? = null
    open var Mobilepay:PaymentMethodMobilepay? = null
    open var Multibanco:PaymentMethodMultibanco? = null
    open var NaverPay:PaymentMethodNaverPay? = null
    open var NzBankAccount:PaymentMethodNzBankAccount? = null
    open var Oxxo:PaymentMethodOxxo? = null
    open var P24:PaymentMethodP24? = null
    open var PayByBank:PaymentMethodPayByBank? = null
    open var Payco:PaymentMethodPayco? = null
    open var Paynow:PaymentMethodPaynow? = null
    open var Paypal:PaymentMethodPaypal? = null
    open var Pix:PaymentMethodPix? = null
    open var Promptpay:PaymentMethodPromptpay? = null
    open var RadarOptions:PaymentMethodRadarOptions? = null
    open var RevolutPay:PaymentMethodRevolutPay? = null
    open var SamsungPay:PaymentMethodSamsungPay? = null
    open var Satispay:PaymentMethodSatispay? = null
    open var SepaDebit:PaymentMethodSepaDebit? = null
    open var Sofort:PaymentMethodSofort? = null
    open var Swish:PaymentMethodSwish? = null
    open var Twint:PaymentMethodTwint? = null
    open var Type:String? = null
    open var UsBankAccount:PaymentMethodUsBankAccount? = null
    open var WechatPay:PaymentMethodWechatPay? = null
    open var Zip:PaymentMethodZip? = null
}

open class PaymentMethodAcssDebit : StripeEntity_1<PaymentMethodAcssDebit>()
{
    open var BankName:String? = null
    open var Fingerprint:String? = null
    open var InstitutionNumber:String? = null
    open var Last4:String? = null
    open var TransitNumber:String? = null
}

open class PaymentMethodAffirm : StripeEntity_1<PaymentMethodAffirm>()
{
}

open class PaymentMethodAfterpayClearpay : StripeEntity_1<PaymentMethodAfterpayClearpay>()
{
}

open class PaymentMethodAlipay : StripeEntity_1<PaymentMethodAlipay>()
{
}

open class PaymentMethodAlma : StripeEntity_1<PaymentMethodAlma>()
{
}

open class PaymentMethodAmazonPay : StripeEntity_1<PaymentMethodAmazonPay>()
{
}

open class PaymentMethodAuBecsDebit : StripeEntity_1<PaymentMethodAuBecsDebit>()
{
    open var BsbNumber:String? = null
    open var Fingerprint:String? = null
    open var Last4:String? = null
}

open class PaymentMethodBacsDebit : StripeEntity_1<PaymentMethodBacsDebit>()
{
    open var Fingerprint:String? = null
    open var Last4:String? = null
    open var SortCode:String? = null
}

open class PaymentMethodBancontact : StripeEntity_1<PaymentMethodBancontact>()
{
}

open class PaymentMethodBillie : StripeEntity_1<PaymentMethodBillie>()
{
}

open class PaymentMethodBillingDetails : StripeEntity_1<PaymentMethodBillingDetails>()
{
    open var Address:Address? = null
    open var Email:String? = null
    open var Name:String? = null
    open var Phone:String? = null
}

open class PaymentMethodBlik : StripeEntity_1<PaymentMethodBlik>()
{
}

open class PaymentMethodBoleto : StripeEntity_1<PaymentMethodBoleto>()
{
    open var TaxId:String? = null
}

open class PaymentMethodCard : StripeEntity_1<PaymentMethodCard>()
{
    open var Brand:String? = null
    open var Checks:PaymentMethodCardChecks? = null
    open var Country:String? = null
    open var Description:String? = null
    open var DisplayBrand:String? = null
    open var ExpMonth:Long? = null
    open var ExpYear:Long? = null
    open var Fingerprint:String? = null
    open var Funding:String? = null
    open var GeneratedFrom:PaymentMethodCardGeneratedFrom? = null
    open var Iin:String? = null
    open var Issuer:String? = null
    open var Last4:String? = null
    open var Networks:PaymentMethodCardNetworks? = null
    open var RegulatedStatus:String? = null
    open var ThreeDSecureUsage:PaymentMethodCardThreeDSecureUsage? = null
    open var Wallet:PaymentMethodCardWallet? = null
}

open class PaymentMethodCardChecks : StripeEntity_1<PaymentMethodCardChecks>()
{
    open var AddressLine1Check:String? = null
    open var AddressPostalCodeCheck:String? = null
    open var CvcCheck:String? = null
}

open class PaymentMethodCardGeneratedFrom : StripeEntity_1<PaymentMethodCardGeneratedFrom>()
{
    open var Charge:String? = null
    open var PaymentMethodDetails:PaymentMethodCardGeneratedFromPaymentMethodDetails? = null
}

open class PaymentMethodCardGeneratedFromPaymentMethodDetails : StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetails>()
{
    open var CardPresent:PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent? = null
    open var Type:String? = null
}

open class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent : StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent>()
{
    open var AmountAuthorized:Long? = null
    open var Brand:String? = null
    open var BrandProduct:String? = null
    open var CaptureBefore:Date? = null
    open var CardholderName:String? = null
    open var Country:String? = null
    open var Description:String? = null
    open var EmvAuthData:String? = null
    open var ExpMonth:Long? = null
    open var ExpYear:Long? = null
    open var Fingerprint:String? = null
    open var Funding:String? = null
    open var GeneratedCard:String? = null
    open var Iin:String? = null
    open var IncrementalAuthorizationSupported:Boolean? = null
    open var Issuer:String? = null
    open var Last4:String? = null
    open var Network:String? = null
    open var NetworkTransactionId:String? = null
    open var Offline:PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline? = null
    open var OvercaptureSupported:Boolean? = null
    open var PreferredLocales:ArrayList<String>? = null
    open var ReadMethod:String? = null
    open var Receipt:PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt? = null
    open var Wallet:PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet? = null
}

open class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline : StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline>()
{
    open var StoredAt:Date? = null
    open var Type:String? = null
}

open class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt : StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt>()
{
    open var AccountType:String? = null
    open var ApplicationCryptogram:String? = null
    open var ApplicationPreferredName:String? = null
    open var AuthorizationCode:String? = null
    open var AuthorizationResponseCode:String? = null
    open var CardholderVerificationMethod:String? = null
    open var DedicatedFileName:String? = null
    open var TerminalVerificationResults:String? = null
    open var TransactionStatusInformation:String? = null
}

open class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet : StripeEntity_1<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet>()
{
    open var Type:String? = null
}

open class PaymentMethodCardNetworks : StripeEntity_1<PaymentMethodCardNetworks>()
{
    open var Available:ArrayList<String>? = null
    open var Preferred:String? = null
}

open class PaymentMethodCardThreeDSecureUsage : StripeEntity_1<PaymentMethodCardThreeDSecureUsage>()
{
    open var Supported:Boolean? = null
}

open class PaymentMethodCardWallet : StripeEntity_1<PaymentMethodCardWallet>()
{
    open var AmexExpressCheckout:PaymentMethodCardWalletAmexExpressCheckout? = null
    open var ApplePay:PaymentMethodCardWalletApplePay? = null
    open var DynamicLast4:String? = null
    open var GooglePay:PaymentMethodCardWalletGooglePay? = null
    open var Link:PaymentMethodCardWalletLink? = null
    open var Masterpass:PaymentMethodCardWalletMasterpass? = null
    open var SamsungPay:PaymentMethodCardWalletSamsungPay? = null
    open var Type:String? = null
    open var VisaCheckout:PaymentMethodCardWalletVisaCheckout? = null
}

open class PaymentMethodCardWalletAmexExpressCheckout : StripeEntity_1<PaymentMethodCardWalletAmexExpressCheckout>()
{
}

open class PaymentMethodCardWalletApplePay : StripeEntity_1<PaymentMethodCardWalletApplePay>()
{
}

open class PaymentMethodCardWalletGooglePay : StripeEntity_1<PaymentMethodCardWalletGooglePay>()
{
}

open class PaymentMethodCardWalletLink : StripeEntity_1<PaymentMethodCardWalletLink>()
{
}

open class PaymentMethodCardWalletMasterpass : StripeEntity_1<PaymentMethodCardWalletMasterpass>()
{
    open var BillingAddress:Address? = null
    open var Email:String? = null
    open var Name:String? = null
    open var ShippingAddress:Address? = null
}

open class PaymentMethodCardWalletSamsungPay : StripeEntity_1<PaymentMethodCardWalletSamsungPay>()
{
}

open class PaymentMethodCardWalletVisaCheckout : StripeEntity_1<PaymentMethodCardWalletVisaCheckout>()
{
    open var BillingAddress:Address? = null
    open var Email:String? = null
    open var Name:String? = null
    open var ShippingAddress:Address? = null
}

open class PaymentMethodCardPresent : StripeEntity_1<PaymentMethodCardPresent>()
{
    open var Brand:String? = null
    open var BrandProduct:String? = null
    open var CardholderName:String? = null
    open var Country:String? = null
    open var Description:String? = null
    open var ExpMonth:Long? = null
    open var ExpYear:Long? = null
    open var Fingerprint:String? = null
    open var Funding:String? = null
    open var Iin:String? = null
    open var Issuer:String? = null
    open var Last4:String? = null
    open var Networks:PaymentMethodCardPresentNetworks? = null
    open var Offline:PaymentMethodCardPresentOffline? = null
    open var PreferredLocales:ArrayList<String>? = null
    open var ReadMethod:String? = null
    open var Wallet:PaymentMethodCardPresentWallet? = null
}

open class PaymentMethodCardPresentNetworks : StripeEntity_1<PaymentMethodCardPresentNetworks>()
{
    open var Available:ArrayList<String>? = null
    open var Preferred:String? = null
}

open class PaymentMethodCardPresentOffline : StripeEntity_1<PaymentMethodCardPresentOffline>()
{
    open var StoredAt:Date? = null
    open var Type:String? = null
}

open class PaymentMethodCardPresentWallet : StripeEntity_1<PaymentMethodCardPresentWallet>()
{
    open var Type:String? = null
}

open class PaymentMethodCashapp : StripeEntity_1<PaymentMethodCashapp>()
{
    open var BuyerId:String? = null
    open var Cashtag:String? = null
}

open class PaymentMethodCustomerBalance : StripeEntity_1<PaymentMethodCustomerBalance>()
{
}

open class PaymentMethodEps : StripeEntity_1<PaymentMethodEps>()
{
    open var Bank:String? = null
}

open class PaymentMethodFpx : StripeEntity_1<PaymentMethodFpx>()
{
    open var AccountHolderType:String? = null
    open var Bank:String? = null
}

open class PaymentMethodGiropay : StripeEntity_1<PaymentMethodGiropay>()
{
}

open class PaymentMethodGrabpay : StripeEntity_1<PaymentMethodGrabpay>()
{
}

open class PaymentMethodIdeal : StripeEntity_1<PaymentMethodIdeal>()
{
    open var Bank:String? = null
    open var Bic:String? = null
}

open class PaymentMethodInteracPresent : StripeEntity_1<PaymentMethodInteracPresent>()
{
    open var Brand:String? = null
    open var CardholderName:String? = null
    open var Country:String? = null
    open var Description:String? = null
    open var ExpMonth:Long? = null
    open var ExpYear:Long? = null
    open var Fingerprint:String? = null
    open var Funding:String? = null
    open var Iin:String? = null
    open var Issuer:String? = null
    open var Last4:String? = null
    open var Networks:PaymentMethodInteracPresentNetworks? = null
    open var PreferredLocales:ArrayList<String>? = null
    open var ReadMethod:String? = null
}

open class PaymentMethodInteracPresentNetworks : StripeEntity_1<PaymentMethodInteracPresentNetworks>()
{
    open var Available:ArrayList<String>? = null
    open var Preferred:String? = null
}

open class PaymentMethodKakaoPay : StripeEntity_1<PaymentMethodKakaoPay>()
{
}

open class PaymentMethodKlarna : StripeEntity_1<PaymentMethodKlarna>()
{
    open var Dob:PaymentMethodKlarnaDob? = null
}

open class PaymentMethodKlarnaDob : StripeEntity_1<PaymentMethodKlarnaDob>()
{
    open var Day:Long? = null
    open var Month:Long? = null
    open var Year:Long? = null
}

open class PaymentMethodKonbini : StripeEntity_1<PaymentMethodKonbini>()
{
}

open class PaymentMethodKrCard : StripeEntity_1<PaymentMethodKrCard>()
{
    open var Brand:String? = null
    open var Last4:String? = null
}

open class PaymentMethodLink : StripeEntity_1<PaymentMethodLink>()
{
    open var Email:String? = null
    open var PersistentToken:String? = null
}

open class PaymentMethodMobilepay : StripeEntity_1<PaymentMethodMobilepay>()
{
}

open class PaymentMethodMultibanco : StripeEntity_1<PaymentMethodMultibanco>()
{
}

open class PaymentMethodNaverPay : StripeEntity_1<PaymentMethodNaverPay>()
{
    open var BuyerId:String? = null
    open var Funding:String? = null
}

open class PaymentMethodNzBankAccount : StripeEntity_1<PaymentMethodNzBankAccount>()
{
    open var AccountHolderName:String? = null
    open var BankCode:String? = null
    open var BankName:String? = null
    open var BranchCode:String? = null
    open var Last4:String? = null
    open var Suffix:String? = null
}

open class PaymentMethodOxxo : StripeEntity_1<PaymentMethodOxxo>()
{
}

open class PaymentMethodP24 : StripeEntity_1<PaymentMethodP24>()
{
    open var Bank:String? = null
}

open class PaymentMethodPayByBank : StripeEntity_1<PaymentMethodPayByBank>()
{
}

open class PaymentMethodPayco : StripeEntity_1<PaymentMethodPayco>()
{
}

open class PaymentMethodPaynow : StripeEntity_1<PaymentMethodPaynow>()
{
}

open class PaymentMethodPaypal : StripeEntity_1<PaymentMethodPaypal>()
{
    open var Country:String? = null
    open var PayerEmail:String? = null
    open var PayerId:String? = null
}

open class PaymentMethodPix : StripeEntity_1<PaymentMethodPix>()
{
}

open class PaymentMethodPromptpay : StripeEntity_1<PaymentMethodPromptpay>()
{
}

open class PaymentMethodRadarOptions : StripeEntity_1<PaymentMethodRadarOptions>()
{
    open var Session:String? = null
}

open class PaymentMethodRevolutPay : StripeEntity_1<PaymentMethodRevolutPay>()
{
}

open class PaymentMethodSamsungPay : StripeEntity_1<PaymentMethodSamsungPay>()
{
}

open class PaymentMethodSatispay : StripeEntity_1<PaymentMethodSatispay>()
{
}

open class PaymentMethodSepaDebit : StripeEntity_1<PaymentMethodSepaDebit>()
{
    open var BankCode:String? = null
    open var BranchCode:String? = null
    open var Country:String? = null
    open var Fingerprint:String? = null
    open var GeneratedFrom:PaymentMethodSepaDebitGeneratedFrom? = null
    open var Last4:String? = null
}

open class PaymentMethodSepaDebitGeneratedFrom : StripeEntity_1<PaymentMethodSepaDebitGeneratedFrom>()
{
}

open class PaymentMethodSofort : StripeEntity_1<PaymentMethodSofort>()
{
    open var Country:String? = null
}

open class PaymentMethodSwish : StripeEntity_1<PaymentMethodSwish>()
{
}

open class PaymentMethodTwint : StripeEntity_1<PaymentMethodTwint>()
{
}

open class PaymentMethodUsBankAccount : StripeEntity_1<PaymentMethodUsBankAccount>()
{
    open var AccountHolderType:String? = null
    open var AccountType:String? = null
    open var BankName:String? = null
    open var FinancialConnectionsAccount:String? = null
    open var Fingerprint:String? = null
    open var Last4:String? = null
    open var Networks:PaymentMethodUsBankAccountNetworks? = null
    open var RoutingNumber:String? = null
    open var StatusDetails:PaymentMethodUsBankAccountStatusDetails? = null
}

open class PaymentMethodUsBankAccountNetworks : StripeEntity_1<PaymentMethodUsBankAccountNetworks>()
{
    open var Preferred:String? = null
    open var Supported:ArrayList<String>? = null
}

open class PaymentMethodUsBankAccountStatusDetails : StripeEntity_1<PaymentMethodUsBankAccountStatusDetails>()
{
    open var Blocked:PaymentMethodUsBankAccountStatusDetailsBlocked? = null
}

open class PaymentMethodUsBankAccountStatusDetailsBlocked : StripeEntity_1<PaymentMethodUsBankAccountStatusDetailsBlocked>()
{
    open var NetworkCode:String? = null
    open var Reason:String? = null
}

open class PaymentMethodWechatPay : StripeEntity_1<PaymentMethodWechatPay>()
{
}

open class PaymentMethodZip : StripeEntity_1<PaymentMethodZip>()
{
}

open class SetupIntent : StripeEntity_1<SetupIntent>(), IHasId, IHasMetadata, IHasObject
{
    override var Id:String? = null
    override var Object:String? = null
    open var AttachToSelf:Boolean? = null
    open var AutomaticPaymentMethods:SetupIntentAutomaticPaymentMethods? = null
    open var CancellationReason:String? = null
    open var ClientSecret:String? = null
    open var Created:Date? = null
    open var Description:String? = null
    open var FlowDirections:ArrayList<String>? = null
    open var LastSetupError:StripeError? = null
    open var Livemode:Boolean? = null
    override var Metadata:HashMap<String,String>? = null
    open var NextAction:SetupIntentNextAction? = null
    open var PaymentMethodConfigurationDetails:SetupIntentPaymentMethodConfigurationDetails? = null
    open var PaymentMethodOptions:SetupIntentPaymentMethodOptions? = null
    open var PaymentMethodTypes:ArrayList<String>? = null
    open var Status:String? = null
    open var Usage:String? = null
}

open class SetupIntentAutomaticPaymentMethods : StripeEntity_1<SetupIntentAutomaticPaymentMethods>()
{
    open var AllowRedirects:String? = null
    open var Enabled:Boolean? = null
}

open class SetupIntentNextAction : StripeEntity_1<SetupIntentNextAction>()
{
    open var CashappHandleRedirectOrDisplayQrCode:SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode? = null
    open var RedirectToUrl:SetupIntentNextActionRedirectToUrl? = null
    open var Type:String? = null
    open var UseStripeSdk:SetupIntentNextActionUseStripeSdk? = null
    open var VerifyWithMicrodeposits:SetupIntentNextActionVerifyWithMicrodeposits? = null
}

open class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode : StripeEntity_1<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode>()
{
    open var HostedInstructionsUrl:String? = null
    open var MobileAuthUrl:String? = null
    open var QrCode:SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode? = null
}

open class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode : StripeEntity_1<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>()
{
    open var ExpiresAt:Date? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class SetupIntentNextActionRedirectToUrl : StripeEntity_1<SetupIntentNextActionRedirectToUrl>()
{
    open var ReturnUrl:String? = null
    open var Url:String? = null
}

open class SetupIntentNextActionUseStripeSdk : StripeEntity_1<SetupIntentNextActionUseStripeSdk>()
{
}

open class SetupIntentNextActionVerifyWithMicrodeposits : StripeEntity_1<SetupIntentNextActionVerifyWithMicrodeposits>()
{
    open var ArrivalDate:Date? = null
    open var HostedVerificationUrl:String? = null
    open var MicrodepositType:String? = null
}

open class SetupIntentPaymentMethodConfigurationDetails : StripeEntity_1<SetupIntentPaymentMethodConfigurationDetails>(), IHasId
{
    override var Id:String? = null
    open var Parent:String? = null
}

open class SetupIntentPaymentMethodOptions : StripeEntity_1<SetupIntentPaymentMethodOptions>()
{
    open var AcssDebit:SetupIntentPaymentMethodOptionsAcssDebit? = null
    open var AmazonPay:SetupIntentPaymentMethodOptionsAmazonPay? = null
    open var BacsDebit:SetupIntentPaymentMethodOptionsBacsDebit? = null
    open var Card:SetupIntentPaymentMethodOptionsCard? = null
    open var CardPresent:SetupIntentPaymentMethodOptionsCardPresent? = null
    open var Link:SetupIntentPaymentMethodOptionsLink? = null
    open var Paypal:SetupIntentPaymentMethodOptionsPaypal? = null
    open var SepaDebit:SetupIntentPaymentMethodOptionsSepaDebit? = null
    open var UsBankAccount:SetupIntentPaymentMethodOptionsUsBankAccount? = null
}

open class SetupIntentPaymentMethodOptionsAcssDebit : StripeEntity_1<SetupIntentPaymentMethodOptionsAcssDebit>()
{
    open var Currency:String? = null
    open var MandateOptions:SetupIntentPaymentMethodOptionsAcssDebitMandateOptions? = null
    open var VerificationMethod:String? = null
}

open class SetupIntentPaymentMethodOptionsAcssDebitMandateOptions : StripeEntity_1<SetupIntentPaymentMethodOptionsAcssDebitMandateOptions>()
{
    open var CustomMandateUrl:String? = null
    open var DefaultFor:ArrayList<String>? = null
    open var IntervalDescription:String? = null
    open var PaymentSchedule:String? = null
    open var TransactionType:String? = null
}

open class SetupIntentPaymentMethodOptionsAmazonPay : StripeEntity_1<SetupIntentPaymentMethodOptionsAmazonPay>()
{
}

open class SetupIntentPaymentMethodOptionsBacsDebit : StripeEntity_1<SetupIntentPaymentMethodOptionsBacsDebit>()
{
    open var MandateOptions:SetupIntentPaymentMethodOptionsBacsDebitMandateOptions? = null
}

open class SetupIntentPaymentMethodOptionsBacsDebitMandateOptions : StripeEntity_1<SetupIntentPaymentMethodOptionsBacsDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class SetupIntentPaymentMethodOptionsCard : StripeEntity_1<SetupIntentPaymentMethodOptionsCard>()
{
    open var MandateOptions:SetupIntentPaymentMethodOptionsCardMandateOptions? = null
    open var Network:String? = null
    open var RequestThreeDSecure:String? = null
}

open class SetupIntentPaymentMethodOptionsCardMandateOptions : StripeEntity_1<SetupIntentPaymentMethodOptionsCardMandateOptions>()
{
    open var Amount:Long? = null
    open var AmountType:String? = null
    open var Currency:String? = null
    open var Description:String? = null
    open var EndDate:Date? = null
    open var Interval:String? = null
    open var IntervalCount:Long? = null
    open var Reference:String? = null
    open var StartDate:Date? = null
    open var SupportedTypes:ArrayList<String>? = null
}

open class SetupIntentPaymentMethodOptionsCardPresent : StripeEntity_1<SetupIntentPaymentMethodOptionsCardPresent>()
{
}

open class SetupIntentPaymentMethodOptionsLink : StripeEntity_1<SetupIntentPaymentMethodOptionsLink>()
{
    open var PersistentToken:String? = null
}

open class SetupIntentPaymentMethodOptionsPaypal : StripeEntity_1<SetupIntentPaymentMethodOptionsPaypal>()
{
    open var BillingAgreementId:String? = null
}

open class SetupIntentPaymentMethodOptionsSepaDebit : StripeEntity_1<SetupIntentPaymentMethodOptionsSepaDebit>()
{
    open var MandateOptions:SetupIntentPaymentMethodOptionsSepaDebitMandateOptions? = null
}

open class SetupIntentPaymentMethodOptionsSepaDebitMandateOptions : StripeEntity_1<SetupIntentPaymentMethodOptionsSepaDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class SetupIntentPaymentMethodOptionsUsBankAccount : StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccount>()
{
    open var FinancialConnections:SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections? = null
    open var MandateOptions:SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions? = null
    open var VerificationMethod:String? = null
}

open class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections : StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections>()
{
    open var Filters:SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? = null
    open var Permissions:ArrayList<String>? = null
    open var Prefetch:ArrayList<String>? = null
    open var ReturnUrl:String? = null
}

open class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters : StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>()
{
    open var AccountSubcategories:ArrayList<String>? = null
}

open class SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions : StripeEntity_1<SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions>()
{
    open var CollectionMethod:String? = null
}

interface IPaymentSource : IStripeEntity, IHasId, IHasObject
{
}

open class PaymentIntentNextAction : StripeEntity_1<PaymentIntentNextAction>()
{
    open var AlipayHandleRedirect:PaymentIntentNextActionAlipayHandleRedirect? = null
    open var BoletoDisplayDetails:PaymentIntentNextActionBoletoDisplayDetails? = null
    open var CardAwaitNotification:PaymentIntentNextActionCardAwaitNotification? = null
    open var CashappHandleRedirectOrDisplayQrCode:PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode? = null
    open var DisplayBankTransferInstructions:PaymentIntentNextActionDisplayBankTransferInstructions? = null
    open var KonbiniDisplayDetails:PaymentIntentNextActionKonbiniDisplayDetails? = null
    open var MultibancoDisplayDetails:PaymentIntentNextActionMultibancoDisplayDetails? = null
    open var OxxoDisplayDetails:PaymentIntentNextActionOxxoDisplayDetails? = null
    open var PaynowDisplayQrCode:PaymentIntentNextActionPaynowDisplayQrCode? = null
    open var PixDisplayQrCode:PaymentIntentNextActionPixDisplayQrCode? = null
    open var PromptpayDisplayQrCode:PaymentIntentNextActionPromptpayDisplayQrCode? = null
    open var RedirectToUrl:PaymentIntentNextActionRedirectToUrl? = null
    open var SwishHandleRedirectOrDisplayQrCode:PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode? = null
    open var Type:String? = null
    open var UseStripeSdk:PaymentIntentNextActionUseStripeSdk? = null
    open var VerifyWithMicrodeposits:PaymentIntentNextActionVerifyWithMicrodeposits? = null
    open var WechatPayDisplayQrCode:PaymentIntentNextActionWechatPayDisplayQrCode? = null
    open var WechatPayRedirectToAndroidApp:PaymentIntentNextActionWechatPayRedirectToAndroidApp? = null
    open var WechatPayRedirectToIosApp:PaymentIntentNextActionWechatPayRedirectToIosApp? = null
}

open class PaymentIntentNextActionAlipayHandleRedirect : StripeEntity_1<PaymentIntentNextActionAlipayHandleRedirect>()
{
    open var NativeData:String? = null
    open var NativeUrl:String? = null
    open var ReturnUrl:String? = null
    open var Url:String? = null
}

open class PaymentIntentNextActionBoletoDisplayDetails : StripeEntity_1<PaymentIntentNextActionBoletoDisplayDetails>()
{
    open var ExpiresAt:Date? = null
    open var HostedVoucherUrl:String? = null
    open var Number:String? = null
    open var Pdf:String? = null
}

open class PaymentIntentNextActionCardAwaitNotification : StripeEntity_1<PaymentIntentNextActionCardAwaitNotification>()
{
    open var ChargeAttemptAt:Date? = null
    open var CustomerApprovalRequired:Boolean? = null
}

open class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode : StripeEntity_1<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>()
{
    open var HostedInstructionsUrl:String? = null
    open var MobileAuthUrl:String? = null
    open var QrCode:PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode? = null
}

open class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode : StripeEntity_1<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>()
{
    open var ExpiresAt:Date? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructions : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructions>()
{
    open var AmountRemaining:Long? = null
    open var Currency:String? = null
    open var FinancialAddresses:ArrayList<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>? = null
    open var HostedInstructionsUrl:String? = null
    open var Reference:String? = null
    open var Type:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>()
{
    open var Aba:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba? = null
    open var Iban:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban? = null
    open var SortCode:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode? = null
    open var Spei:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei? = null
    open var SupportedNetworks:ArrayList<String>? = null
    open var Swift:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift? = null
    open var Type:String? = null
    open var Zengin:PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var AccountNumber:String? = null
    open var AccountType:String? = null
    open var BankAddress:Address? = null
    open var BankName:String? = null
    open var RoutingNumber:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var BankAddress:Address? = null
    open var Bic:String? = null
    open var Country:String? = null
    open var Iban:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var AccountNumber:String? = null
    open var BankAddress:Address? = null
    open var SortCode:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var BankAddress:Address? = null
    open var BankCode:String? = null
    open var BankName:String? = null
    open var Clabe:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var AccountNumber:String? = null
    open var AccountType:String? = null
    open var BankAddress:Address? = null
    open var BankName:String? = null
    open var SwiftCode:String? = null
}

open class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin : StripeEntity_1<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin>()
{
    open var AccountHolderAddress:Address? = null
    open var AccountHolderName:String? = null
    open var AccountNumber:String? = null
    open var AccountType:String? = null
    open var BankAddress:Address? = null
    open var BankCode:String? = null
    open var BankName:String? = null
    open var BranchCode:String? = null
    open var BranchName:String? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetails : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetails>()
{
    open var ExpiresAt:Date? = null
    open var HostedVoucherUrl:String? = null
    open var Stores:PaymentIntentNextActionKonbiniDisplayDetailsStores? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetailsStores : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStores>()
{
    open var Familymart:PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart? = null
    open var Lawson:PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson? = null
    open var Ministop:PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop? = null
    open var Seicomart:PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart>()
{
    open var ConfirmationNumber:String? = null
    open var PaymentCode:String? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson>()
{
    open var ConfirmationNumber:String? = null
    open var PaymentCode:String? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop>()
{
    open var ConfirmationNumber:String? = null
    open var PaymentCode:String? = null
}

open class PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart : StripeEntity_1<PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart>()
{
    open var ConfirmationNumber:String? = null
    open var PaymentCode:String? = null
}

open class PaymentIntentNextActionMultibancoDisplayDetails : StripeEntity_1<PaymentIntentNextActionMultibancoDisplayDetails>()
{
    open var Entity:String? = null
    open var ExpiresAt:Date? = null
    open var HostedVoucherUrl:String? = null
    open var Reference:String? = null
}

open class PaymentIntentNextActionOxxoDisplayDetails : StripeEntity_1<PaymentIntentNextActionOxxoDisplayDetails>()
{
    open var ExpiresAfter:Date? = null
    open var HostedVoucherUrl:String? = null
    open var Number:String? = null
}

open class PaymentIntentNextActionPaynowDisplayQrCode : StripeEntity_1<PaymentIntentNextActionPaynowDisplayQrCode>()
{
    open var Data:String? = null
    open var HostedInstructionsUrl:String? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionPixDisplayQrCode : StripeEntity_1<PaymentIntentNextActionPixDisplayQrCode>()
{
    open var Data:String? = null
    open var ExpiresAt:Date? = null
    open var HostedInstructionsUrl:String? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionPromptpayDisplayQrCode : StripeEntity_1<PaymentIntentNextActionPromptpayDisplayQrCode>()
{
    open var Data:String? = null
    open var HostedInstructionsUrl:String? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionRedirectToUrl : StripeEntity_1<PaymentIntentNextActionRedirectToUrl>()
{
    open var ReturnUrl:String? = null
    open var Url:String? = null
}

open class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode : StripeEntity_1<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode>()
{
    open var HostedInstructionsUrl:String? = null
    open var MobileAuthUrl:String? = null
    open var QrCode:PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode? = null
}

open class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode : StripeEntity_1<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode>()
{
    open var Data:String? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionUseStripeSdk : StripeEntity_1<PaymentIntentNextActionUseStripeSdk>()
{
}

open class PaymentIntentNextActionVerifyWithMicrodeposits : StripeEntity_1<PaymentIntentNextActionVerifyWithMicrodeposits>()
{
    open var ArrivalDate:Date? = null
    open var HostedVerificationUrl:String? = null
    open var MicrodepositType:String? = null
}

open class PaymentIntentNextActionWechatPayDisplayQrCode : StripeEntity_1<PaymentIntentNextActionWechatPayDisplayQrCode>()
{
    open var Data:String? = null
    open var HostedInstructionsUrl:String? = null
    open var ImageDataUrl:String? = null
    open var ImageUrlPng:String? = null
    open var ImageUrlSvg:String? = null
}

open class PaymentIntentNextActionWechatPayRedirectToAndroidApp : StripeEntity_1<PaymentIntentNextActionWechatPayRedirectToAndroidApp>()
{
    open var AppId:String? = null
    open var NonceStr:String? = null
    open var Package:String? = null
    open var PartnerId:String? = null
    open var PrepayId:String? = null
    open var Sign:String? = null
    open var Timestamp:String? = null
}

open class PaymentIntentNextActionWechatPayRedirectToIosApp : StripeEntity_1<PaymentIntentNextActionWechatPayRedirectToIosApp>()
{
    open var NativeUrl:String? = null
}

open class PaymentIntentPaymentMethodConfigurationDetails : StripeEntity_1<PaymentIntentPaymentMethodConfigurationDetails>(), IHasId
{
    override var Id:String? = null
    open var Parent:String? = null
}

open class PaymentIntentPaymentMethodOptions : StripeEntity_1<PaymentIntentPaymentMethodOptions>()
{
    open var AcssDebit:PaymentIntentPaymentMethodOptionsAcssDebit? = null
    open var Affirm:PaymentIntentPaymentMethodOptionsAffirm? = null
    open var AfterpayClearpay:PaymentIntentPaymentMethodOptionsAfterpayClearpay? = null
    open var Alipay:PaymentIntentPaymentMethodOptionsAlipay? = null
    open var Alma:PaymentIntentPaymentMethodOptionsAlma? = null
    open var AmazonPay:PaymentIntentPaymentMethodOptionsAmazonPay? = null
    open var AuBecsDebit:PaymentIntentPaymentMethodOptionsAuBecsDebit? = null
    open var BacsDebit:PaymentIntentPaymentMethodOptionsBacsDebit? = null
    open var Bancontact:PaymentIntentPaymentMethodOptionsBancontact? = null
    open var Blik:PaymentIntentPaymentMethodOptionsBlik? = null
    open var Boleto:PaymentIntentPaymentMethodOptionsBoleto? = null
    open var Card:PaymentIntentPaymentMethodOptionsCard? = null
    open var CardPresent:PaymentIntentPaymentMethodOptionsCardPresent? = null
    open var Cashapp:PaymentIntentPaymentMethodOptionsCashapp? = null
    open var CustomerBalance:PaymentIntentPaymentMethodOptionsCustomerBalance? = null
    open var Eps:PaymentIntentPaymentMethodOptionsEps? = null
    open var Fpx:PaymentIntentPaymentMethodOptionsFpx? = null
    open var Giropay:PaymentIntentPaymentMethodOptionsGiropay? = null
    open var Grabpay:PaymentIntentPaymentMethodOptionsGrabpay? = null
    open var Ideal:PaymentIntentPaymentMethodOptionsIdeal? = null
    open var InteracPresent:PaymentIntentPaymentMethodOptionsInteracPresent? = null
    open var KakaoPay:PaymentIntentPaymentMethodOptionsKakaoPay? = null
    open var Klarna:PaymentIntentPaymentMethodOptionsKlarna? = null
    open var Konbini:PaymentIntentPaymentMethodOptionsKonbini? = null
    open var KrCard:PaymentIntentPaymentMethodOptionsKrCard? = null
    open var Link:PaymentIntentPaymentMethodOptionsLink? = null
    open var Mobilepay:PaymentIntentPaymentMethodOptionsMobilepay? = null
    open var Multibanco:PaymentIntentPaymentMethodOptionsMultibanco? = null
    open var NaverPay:PaymentIntentPaymentMethodOptionsNaverPay? = null
    open var NzBankAccount:PaymentIntentPaymentMethodOptionsNzBankAccount? = null
    open var Oxxo:PaymentIntentPaymentMethodOptionsOxxo? = null
    open var P24:PaymentIntentPaymentMethodOptionsP24? = null
    open var PayByBank:PaymentIntentPaymentMethodOptionsPayByBank? = null
    open var Payco:PaymentIntentPaymentMethodOptionsPayco? = null
    open var Paynow:PaymentIntentPaymentMethodOptionsPaynow? = null
    open var Paypal:PaymentIntentPaymentMethodOptionsPaypal? = null
    open var Pix:PaymentIntentPaymentMethodOptionsPix? = null
    open var Promptpay:PaymentIntentPaymentMethodOptionsPromptpay? = null
    open var RevolutPay:PaymentIntentPaymentMethodOptionsRevolutPay? = null
    open var SamsungPay:PaymentIntentPaymentMethodOptionsSamsungPay? = null
    open var SepaDebit:PaymentIntentPaymentMethodOptionsSepaDebit? = null
    open var Sofort:PaymentIntentPaymentMethodOptionsSofort? = null
    open var Swish:PaymentIntentPaymentMethodOptionsSwish? = null
    open var Twint:PaymentIntentPaymentMethodOptionsTwint? = null
    open var UsBankAccount:PaymentIntentPaymentMethodOptionsUsBankAccount? = null
    open var WechatPay:PaymentIntentPaymentMethodOptionsWechatPay? = null
    open var Zip:PaymentIntentPaymentMethodOptionsZip? = null
}

open class PaymentIntentPaymentMethodOptionsAcssDebit : StripeEntity_1<PaymentIntentPaymentMethodOptionsAcssDebit>()
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions : StripeEntity_1<PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions>()
{
    open var CustomMandateUrl:String? = null
    open var IntervalDescription:String? = null
    open var PaymentSchedule:String? = null
    open var TransactionType:String? = null
}

open class PaymentIntentPaymentMethodOptionsAffirm : StripeEntity_1<PaymentIntentPaymentMethodOptionsAffirm>()
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAfterpayClearpay : StripeEntity_1<PaymentIntentPaymentMethodOptionsAfterpayClearpay>()
{
    open var CaptureMethod:String? = null
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAlipay : StripeEntity_1<PaymentIntentPaymentMethodOptionsAlipay>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAlma : StripeEntity_1<PaymentIntentPaymentMethodOptionsAlma>()
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsAmazonPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsAmazonPay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsAuBecsDebit : StripeEntity_1<PaymentIntentPaymentMethodOptionsAuBecsDebit>()
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsBacsDebit : StripeEntity_1<PaymentIntentPaymentMethodOptionsBacsDebit>()
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions : StripeEntity_1<PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class PaymentIntentPaymentMethodOptionsBancontact : StripeEntity_1<PaymentIntentPaymentMethodOptionsBancontact>()
{
    open var PreferredLanguage:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsBlik : StripeEntity_1<PaymentIntentPaymentMethodOptionsBlik>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsBoleto : StripeEntity_1<PaymentIntentPaymentMethodOptionsBoleto>()
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCard : StripeEntity_1<PaymentIntentPaymentMethodOptionsCard>()
{
    open var CaptureMethod:String? = null
    open var Installments:PaymentIntentPaymentMethodOptionsCardInstallments? = null
    open var MandateOptions:PaymentIntentPaymentMethodOptionsCardMandateOptions? = null
    open var Network:String? = null
    open var RequestExtendedAuthorization:String? = null
    open var RequestIncrementalAuthorization:String? = null
    open var RequestMulticapture:String? = null
    open var RequestOvercapture:String? = null
    open var RequestThreeDSecure:String? = null
    open var RequireCvcRecollection:Boolean? = null
    open var SetupFutureUsage:String? = null
    open var StatementDescriptorSuffixKana:String? = null
    open var StatementDescriptorSuffixKanji:String? = null
}

open class PaymentIntentPaymentMethodOptionsCardInstallments : StripeEntity_1<PaymentIntentPaymentMethodOptionsCardInstallments>()
{
    open var AvailablePlans:ArrayList<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>? = null
    open var Enabled:Boolean? = null
    open var Plan:PaymentIntentPaymentMethodOptionsCardInstallmentsPlan? = null
}

open class PaymentIntentPaymentMethodOptionsCardInstallmentsPlan : StripeEntity_1<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>()
{
    open var Count:Long? = null
    open var Interval:String? = null
    open var Type:String? = null
}

open class PaymentIntentPaymentMethodOptionsCardMandateOptions : StripeEntity_1<PaymentIntentPaymentMethodOptionsCardMandateOptions>()
{
    open var Amount:Long? = null
    open var AmountType:String? = null
    open var Description:String? = null
    open var EndDate:Date? = null
    open var Interval:String? = null
    open var IntervalCount:Long? = null
    open var Reference:String? = null
    open var StartDate:Date? = null
    open var SupportedTypes:ArrayList<String>? = null
}

open class PaymentIntentPaymentMethodOptionsCardPresent : StripeEntity_1<PaymentIntentPaymentMethodOptionsCardPresent>()
{
    open var RequestExtendedAuthorization:Boolean? = null
    open var RequestIncrementalAuthorizationSupport:Boolean? = null
    open var Routing:PaymentIntentPaymentMethodOptionsCardPresentRouting? = null
}

open class PaymentIntentPaymentMethodOptionsCardPresentRouting : StripeEntity_1<PaymentIntentPaymentMethodOptionsCardPresentRouting>()
{
    open var RequestedPriority:String? = null
}

open class PaymentIntentPaymentMethodOptionsCashapp : StripeEntity_1<PaymentIntentPaymentMethodOptionsCashapp>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalance : StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalance>()
{
    open var BankTransfer:PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer? = null
    open var FundingType:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer : StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer>()
{
    open var EuBankTransfer:PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer? = null
    open var RequestedAddressTypes:ArrayList<String>? = null
    open var Type:String? = null
}

open class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer : StripeEntity_1<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>()
{
    open var Country:String? = null
}

open class PaymentIntentPaymentMethodOptionsEps : StripeEntity_1<PaymentIntentPaymentMethodOptionsEps>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsFpx : StripeEntity_1<PaymentIntentPaymentMethodOptionsFpx>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsGiropay : StripeEntity_1<PaymentIntentPaymentMethodOptionsGiropay>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsGrabpay : StripeEntity_1<PaymentIntentPaymentMethodOptionsGrabpay>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsIdeal : StripeEntity_1<PaymentIntentPaymentMethodOptionsIdeal>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsInteracPresent : StripeEntity_1<PaymentIntentPaymentMethodOptionsInteracPresent>()
{
}

open class PaymentIntentPaymentMethodOptionsKakaoPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsKakaoPay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKlarna : StripeEntity_1<PaymentIntentPaymentMethodOptionsKlarna>()
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKonbini : StripeEntity_1<PaymentIntentPaymentMethodOptionsKonbini>()
{
    open var ConfirmationNumber:String? = null
    open var ExpiresAfterDays:Long? = null
    open var ExpiresAt:Date? = null
    open var ProductDescription:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsKrCard : StripeEntity_1<PaymentIntentPaymentMethodOptionsKrCard>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsLink : StripeEntity_1<PaymentIntentPaymentMethodOptionsLink>()
{
    open var CaptureMethod:String? = null
    open var PersistentToken:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsMobilepay : StripeEntity_1<PaymentIntentPaymentMethodOptionsMobilepay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsMultibanco : StripeEntity_1<PaymentIntentPaymentMethodOptionsMultibanco>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsNaverPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsNaverPay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsNzBankAccount : StripeEntity_1<PaymentIntentPaymentMethodOptionsNzBankAccount>()
{
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsOxxo : StripeEntity_1<PaymentIntentPaymentMethodOptionsOxxo>()
{
    open var ExpiresAfterDays:Long? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsP24 : StripeEntity_1<PaymentIntentPaymentMethodOptionsP24>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPayByBank : StripeEntity_1<PaymentIntentPaymentMethodOptionsPayByBank>()
{
}

open class PaymentIntentPaymentMethodOptionsPayco : StripeEntity_1<PaymentIntentPaymentMethodOptionsPayco>()
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsPaynow : StripeEntity_1<PaymentIntentPaymentMethodOptionsPaynow>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPaypal : StripeEntity_1<PaymentIntentPaymentMethodOptionsPaypal>()
{
    open var CaptureMethod:String? = null
    open var PreferredLocale:String? = null
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPix : StripeEntity_1<PaymentIntentPaymentMethodOptionsPix>()
{
    open var ExpiresAfterSeconds:Long? = null
    open var ExpiresAt:Date? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsPromptpay : StripeEntity_1<PaymentIntentPaymentMethodOptionsPromptpay>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsRevolutPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsRevolutPay>()
{
    open var CaptureMethod:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsSamsungPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsSamsungPay>()
{
    open var CaptureMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsSepaDebit : StripeEntity_1<PaymentIntentPaymentMethodOptionsSepaDebit>()
{
    open var MandateOptions:PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
}

open class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions : StripeEntity_1<PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions>()
{
    open var ReferencePrefix:String? = null
}

open class PaymentIntentPaymentMethodOptionsSofort : StripeEntity_1<PaymentIntentPaymentMethodOptionsSofort>()
{
    open var PreferredLanguage:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsSwish : StripeEntity_1<PaymentIntentPaymentMethodOptionsSwish>()
{
    open var Reference:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsTwint : StripeEntity_1<PaymentIntentPaymentMethodOptionsTwint>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccount : StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccount>()
{
    open var FinancialConnections:PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections? = null
    open var MandateOptions:PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions? = null
    open var PreferredSettlementSpeed:String? = null
    open var SetupFutureUsage:String? = null
    open var TargetDate:String? = null
    open var VerificationMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections : StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections>()
{
    open var Filters:PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? = null
    open var Permissions:ArrayList<String>? = null
    open var Prefetch:ArrayList<String>? = null
    open var ReturnUrl:String? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters : StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>()
{
    open var AccountSubcategories:ArrayList<String>? = null
}

open class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions : StripeEntity_1<PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions>()
{
    open var CollectionMethod:String? = null
}

open class PaymentIntentPaymentMethodOptionsWechatPay : StripeEntity_1<PaymentIntentPaymentMethodOptionsWechatPay>()
{
    open var AppId:String? = null
    open var Client:String? = null
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPaymentMethodOptionsZip : StripeEntity_1<PaymentIntentPaymentMethodOptionsZip>()
{
    open var SetupFutureUsage:String? = null
}

open class PaymentIntentPresentmentDetails : StripeEntity_1<PaymentIntentPresentmentDetails>()
{
    open var PresentmentAmount:Long? = null
    open var PresentmentCurrency:String? = null
}

open class PaymentIntentProcessing : StripeEntity_1<PaymentIntentProcessing>()
{
    open var Card:PaymentIntentProcessingCard? = null
    open var Type:String? = null
}

open class PaymentIntentProcessingCard : StripeEntity_1<PaymentIntentProcessingCard>()
{
    open var CustomerNotification:PaymentIntentProcessingCardCustomerNotification? = null
}

open class PaymentIntentProcessingCardCustomerNotification : StripeEntity_1<PaymentIntentProcessingCardCustomerNotification>()
{
    open var ApprovalRequested:Boolean? = null
    open var CompletesAt:Date? = null
}

open class Shipping : StripeEntity_1<Shipping>()
{
    open var Address:Address? = null
    open var Carrier:String? = null
    open var Name:String? = null
    open var Phone:String? = null
    open var TrackingNumber:String? = null
}

open class PaymentIntentTransferData : StripeEntity_1<PaymentIntentTransferData>()
{
    open var Amount:Long? = null
}

open class CustomPaymentIntentData
{
    open var PaymentIntent:PaymentIntent? = null
}

interface IPaysonPaymentCheckout1
{
}

interface ILogger<TCategoryName> : ILogger
{
}

open class CacheDataProvider
{
    open var Dist:DataCacheStore? = null
    open var Static:DataCacheStore? = null
}

open class DataCacheStore
{
}

open class PaymentLog : BaseModel()
{
    @References(Type=Currency::class)
    open var CurrencyId:String? = null

    open var CurrencyInfo:Currency? = null
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var InternalReferenceId:String? = null

    @Required()
    open var ArticleTypeId:Int? = null

    open var PaymentReferenceId:String? = null
    open var PaymentProviderId:Int? = null
    open var OrderItemReferenceId:String? = null
    open var Amount:Double? = null
    open var VAT:BigDecimal? = null
    open var AmountCredited:Double? = null
    open var Comments:String? = null
    @Required()
    open var Created:Date? = null

    @Required()
    open var Updated:Date? = null

    open var ModifiedDate:Date? = null
}

open class Currency : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var CurrencySign:String? = null

    @Required()
    open var Active:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:String? = null
}

open class ArticleType : BaseModel()
{
    open var ArticleTypeId:Int? = null
    @Required()
    open var ArticleTypeName:String? = null

    open var ArticleTypeDescription:String? = null
}

open class Customer : BaseModel(), IUser, ICustomFieldTable
{
    open var IdentityId:Int? = null
    override var Id:UUID? = null
    @Ignore()
    open var CustomerId:UUID? = null

    @Ignore()
    open var AccessKeys:IList<UserAccessKeys>? = null

    override var Email:String? = null
    @Ignore()
    open var ExternalReferences:IList<ExternalReference>? = null

    @Ignore()
    open var InvoiceAddress:IList<InvoiceAddress>? = null

    @Ignore()
    open var MainInvoiceAddress:InvoiceAddress? = null

    @Ignore()
    open var Company:Company? = null

    @Ignore()
    override var CustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    override var CustomFieldsData:IList<CustomFieldDataResponse>? = null

    @Ignore()
    open var Comments:IList<CustomerComment>? = null

    @Ignore()
    open var RebateCodes:IList<RebateCode>? = null

    override var Firstname:String? = null
    @Ignore()
    open var FullName:String? = null

    @Ignore()
    open var ImageUrl:String? = null

    @Required()
    open var Active:Boolean? = null

    open var FacebookUsername:String? = null
    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var IpAddress:String? = null
    open var ModifiedDate:Date? = null
    override var TextField1:String? = null
    override var TextField2:String? = null
    override var TextField3:String? = null
    override var TextField4:String? = null
    override var TextField5:String? = null
    override var TextField6:String? = null
    override var TextField7:String? = null
    override var TextField8:String? = null
    override var TextField9:String? = null
    override var TextField10:String? = null
    override var TextField11:String? = null
    override var TextField12:String? = null
    override var TextField13:String? = null
    override var TextField14:String? = null
    override var TextField15:String? = null
    override var TextField16:String? = null
    override var TextField17:String? = null
    override var TextField18:String? = null
    override var TextField19:String? = null
    override var TextField20:String? = null
    override var UserId:UUID? = null
    override var Lastname:String? = null
    override var Phone:String? = null
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
    @Required()
    open var CompanyId:UUID? = null

    open var SubscribedToNewsletter:Boolean? = null
}

open class UserAccessKeys : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var AccessKeyTypeId:Int? = null

    @Required()
    open var Value:String? = null

    @Required()
    open var CustomerId:UUID? = null

    open var Description:String? = null
    @Required()
    open var Id:UUID? = null
}

open class ExternalReference : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var Id:UUID? = null

    @Required()
    open var OwnerId:UUID? = null

    @Required()
    open var ReferenceType:String? = null

    open var ExternalData:String? = null
    open var CreatedBy:String? = null
    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var ModifiedDate:Date? = null
}

open class InvoiceAddress : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Required()
    open var InvoiceAddressId:UUID? = null

    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
    open var Main:Boolean? = null
    open var UserId:UUID? = null
    open var CustomerId:UUID? = null
    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null
}

open class Company : BaseModel()
{
    @Ignore()
    open var Status:CompanyStatus? = null

    @Ignore()
    open var Active:Boolean? = null

    @Ignore()
    open var CustomerCustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    open var BookingAgreements:String? = null

    @Ignore()
    open var BookingSettings:BookingSettings? = null

    @Ignore()
    open var CompanyType:CompanyType? = null

    @Ignore()
    open var CodeLockSettings:CodeLockSetting? = null

    @Ignore()
    open var PaymentSettings:PaymentSetting? = null

    @Ignore()
    open var Settings:CompanySetting? = null

    @Ignore()
    open var WidgetSettings:HomepageWidgetSetting? = null

    @Ignore()
    open var HomepageSettings:HomepageSetting? = null

    @Ignore()
    open var RatingScore:AverageRatingScore? = null

    @Ignore()
    open var Ratings:ArrayList<Rating>? = null

    @Ignore()
    open var Distance:Double? = null

    @Ignore()
    open var Licenses:ArrayList<License>? = null

    @Ignore()
    open var CompanyUsers:ArrayList<CompanyUser>? = null

    @Ignore()
    open var ActiveLicenses:ArrayList<License>? = null

    @Ignore()
    open var CurrentLicense:License? = null

    @Ignore()
    open var IsFreeAccount:Boolean? = null

    @Ignore()
    open var DefaultLanguage:CultureInfo? = null

    open var Category:CompanyCategory? = null
    @Ignore()
    open var Lat:Double? = null

    @Ignore()
    open var Lon:Double? = null

    @Ignore()
    open var IsFavorite:Boolean? = null

    @Ignore()
    open var ExternalReferences:IList<ExternalReference>? = null

    @Required()
    open var OrganisationNumber:String? = null

    @Required()
    open var StatusId:Int? = null

    @Required()
    open var CategoryId:Int? = null

    @Required()
    open var SitePath:String? = null

    @Required()
    open var Name:String? = null

    open var Street1:String? = null
    open var Street2:String? = null
    open var ZipCode:String? = null
    open var City:String? = null
    open var OpeningHours:String? = null
    open var FaxNumber:String? = null
    @Required()
    open var Email:String? = null

    open var Phone:String? = null
    open var Details:String? = null
    open var LogoType:String? = null
    @Required()
    open var ApprovedByAdmin:Boolean? = null

    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var IpAddress:String? = null
    open var Homepage:String? = null
    open var DomainName:String? = null
    @Required()
    open var CountryId:String? = null

    @Required()
    open var CompanyOwnerId:Int? = null

    open var TypeId:Int? = null
    open var ModifiedDate:Date? = null
    @Required()
    open var Id:UUID? = null

    open var DeletionNotificationDate:Date? = null
}

enum class CompanyStatus(val value:Int)
{
    Registered(1),
    AwaitingApproval(2),
    Approved(3),
    Inactive(4),
    ClosedDown(5),
    NotApproved(6),
}

open class CustomFieldConfig : BaseModel()
{
    @Ignore()
    open var Values:ArrayList<CustomFieldValue>? = null

    open var CustomField:CustomField? = null
    @Ignore()
    open var RegEx:RegEx? = null

    @Ignore()
    open var Services:ArrayList<Service>? = null

    open var CustomFieldServiceRelation:ArrayList<CustomFieldServiceRelation>? = null
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    open var GroupId:Int? = null
    @Required()
    open var FieldId:Int? = null

    @Required()
    open var IconId:Int? = null

    open var RegExId:Int? = null
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Datatype:String? = null

    @Required()
    open var MaxLength:Int? = null

    @Required()
    open var IsPublic:Boolean? = null

    @Required()
    open var IsHidden:Boolean? = null

    @Required()
    open var IsMandatory:Boolean? = null

    open var DefaultValue:String? = null
    open var RegExErrorMessage:String? = null
    open var MandatoryErrorMessage:String? = null
    open var Width:Int? = null
    @Required()
    open var MultipleLineText:Boolean? = null

    open var ModifiedDate:Date? = null
}

open class CustomFieldValue : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var Value:String? = null

    @Required()
    open var Active:Boolean? = null

    open var SortOrder:Short? = null
    open var ModifiedDate:Date? = null
}

open class CustomField : BaseModel()
{
    @Required()
    open var Table:String? = null

    @Required()
    open var Column:String? = null

    @Required()
    open var DataType:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Active:Boolean? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class RegEx : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var RegExCode:String? = null

    open var ErrorMessage:String? = null
    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class Service : BaseModel(), ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    open var ResourceTypes:ArrayList<ResourceType>? = null

    @Ignore()
    open var Resources:ArrayList<Resource>? = null

    @Ignore()
    open var TotalPrice:TotalPriceInformation? = null

    @Ignore()
    open var Prices:ArrayList<ServicePrice>? = null

    @Ignore()
    open var BookingStatusOptions:ArrayList<BookingStatusOptions>? = null

    @Ignore()
    open var IsGroupBooking:Boolean? = null

    @Ignore()
    open var IsMultipleResource:Boolean? = null

    @Ignore()
    open var Settings:BookingSettings? = null

    @Ignore()
    open var PaymentSetting:PaymentSetting? = null

    @Ignore()
    open var BookingCustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    open var CustomerCustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    override var CustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    override var CustomFieldsData:IList<CustomFieldDataResponse>? = null

    @Ignore()
    open var Schedules:IList<ISchedule>? = null

    @Ignore()
    open var CustomerActiveBookings:IList<Booking>? = null

    @Ignore()
    open var ScheduleType:ScheduleType? = null

    @Ignore()
    open var LastTimeToUnbookThreshold:TimeSpan? = null

    @Ignore()
    open var LastTimeToBookThreshold:TimeSpan? = null

    @Ignore()
    open var RatingScore:AverageRatingScore? = null

    @Ignore()
    open var Ratings:ArrayList<Rating>? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var Group:String? = null
    @Required()
    open var Active:Boolean? = null

    @Required()
    open var SortOrder:Int? = null

    @Required()
    open var PauseAfterBooking:Int? = null

    @Required()
    open var UnbookBeforeDays:Int? = null

    @Required()
    open var UnbookBeforeHours:Int? = null

    @Required()
    open var UnbookBeforeMinutes:Int? = null

    @Required()
    open var BookBeforeDays:Int? = null

    @Required()
    open var BookBeforeHours:Int? = null

    @Required()
    open var BookBeforeMinutes:Int? = null

    open var Duration:Int? = null
    open var DurationTypeId:Int? = null
    open var MinDuration:Int? = null
    open var MaxDuration:Int? = null
    open var DurationInterval:Int? = null
    open var TotalSpots:Int? = null
    open var ImageUrl:String? = null
    @Required()
    open var ScheduleTypeId:Int? = null

    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null

    @Required()
    open var OnlyVisibleByAdmin:Boolean? = null

    @Required()
    open var MinNumberOfSpotsPerBooking:Int? = null

    @Required()
    open var MaxNumberOfSpotsPerBooking:Int? = null

    @Required()
    open var MinNumberOfResourcesToBook:Int? = null

    @Required()
    open var MaxNumberOfResourcesToBook:Int? = null

    @Required()
    open var IsPaymentEnabled:Boolean? = null

    @Required()
    open var MaxPaymentTime:Int? = null

    @Required()
    open var LockSpotsToBooking:Boolean? = null

    @Required()
    open var EnableBookingQueue:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var BookingStatusId:Int? = null

    @Required()
    open var EnableCodeLockSync:Boolean? = null

    @Required()
    open var EnableCustomerManualPayment:Boolean? = null

    open var PriceViewTypeId:Int? = null
    override var TextField1:String? = null
    override var TextField2:String? = null
    override var TextField3:String? = null
    override var TextField4:String? = null
    override var TextField5:String? = null
    override var TextField6:String? = null
    override var TextField7:String? = null
    override var TextField8:String? = null
    override var TextField9:String? = null
    override var TextField10:String? = null
    override var TextField11:String? = null
    override var TextField12:String? = null
    override var TextField13:String? = null
    override var TextField14:String? = null
    override var TextField15:String? = null
    override var TextField16:String? = null
    override var TextField17:String? = null
    override var TextField18:String? = null
    override var TextField19:String? = null
    override var TextField20:String? = null
}

open class ResourceType : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    open var SelectableByUser:Boolean? = null

    @Ignore()
    open var Resources:ArrayList<Resource>? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var Name:String? = null

    open var Description:String? = null
    @Required()
    open var Active:Boolean? = null

    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null

    open var ModifiedDate:Date? = null
}

open class Resource : BaseModel(), ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    open var Priority:Int? = null

    @Ignore()
    open var Schedules:IList<ISchedule>? = null

    @Ignore()
    open var Exceptions:IList<ITimeException>? = null

    @Ignore()
    open var Bookings:IList<IBookedTime>? = null

    @Ignore()
    override var CustomFieldsConfig:IList<CustomFieldConfig>? = null

    @Ignore()
    override var CustomFieldsData:IList<CustomFieldDataResponse>? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var Name:String? = null

    @Required()
    open var Active:Boolean? = null

    open var Description:String? = null
    open var ImageUrl:String? = null
    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null

    @Required()
    open var Color:String? = null

    open var Email:String? = null
    open var MobilePhone:String? = null
    open var EmailNotification:Boolean? = null
    open var SMSNotification:Boolean? = null
    @Required()
    open var SendSMSReminder:Boolean? = null

    @Required()
    open var SendEmailReminder:Boolean? = null

    open var ModifiedDate:Date? = null
    open var AccessGroup:String? = null
    override var TextField1:String? = null
    override var TextField2:String? = null
    override var TextField3:String? = null
    override var TextField4:String? = null
    override var TextField5:String? = null
    override var TextField6:String? = null
    override var TextField7:String? = null
    override var TextField8:String? = null
    override var TextField9:String? = null
    override var TextField10:String? = null
    override var TextField11:String? = null
    override var TextField12:String? = null
    override var TextField13:String? = null
    override var TextField14:String? = null
    override var TextField15:String? = null
    override var TextField16:String? = null
    override var TextField17:String? = null
    override var TextField18:String? = null
    override var TextField19:String? = null
    override var TextField20:String? = null
}

interface ISchedule
{
    var CompanyId:UUID?
    var Resources:IList<Resource>?
    var Type:ScheduleType?
    var Active:Boolean?
    var IsResourceSpecific:Boolean?
}

enum class ScheduleType
{
    NotDefined,
    RecurringSchedule,
    DateSchedule,
}

interface ITimeException : IInterval
{
    var Id:Int?
    var ReasonText:String?
    var IsBlock:Boolean?
    var ReasonTextPublic:String?
    var IsRecurring:Boolean?
    var ResourceIds:ArrayList<Int>?
}

interface IBookedTime : IInterval
{
    var Id:Int?
    var ServiceId:Int?
    var BookedSpots:Int?
    var TotalSpots:Int?
    var PauseAfterInMinutes:Int?
    var Status:BookingStatusEnum?
    var StatusId:Int?
    var Customer:BookedCustomer?
}

enum class BookingStatusEnum(val value:Int)
{
    Booked(1),
    Unbooked(2),
    Reserved(3),
    Canceled(4),
    AwaitingPayment(5),
    AwaitingPaymentNoTimeLimit(6),
    Payed(7),
    AwaitingPaymentRequestFromAdmin(8),
    AwaitingPaymentFromProvider(9),
    Invoiced(10),
}

open class BookedCustomer
{
    open var Id:UUID? = null
    open var Firstname:String? = null
    open var Lastname:String? = null
    open var Email:String? = null
    open var Phone:String? = null
    open var FacebookUserName:String? = null
    open var ImageUrl:String? = null
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
}

open class CustomFieldDataResponse
{
    open var Id:Int? = null
    open var Column:String? = null
    open var Name:String? = null
    open var Description:String? = null
    open var Value:String? = null
    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    open var DataType:String? = null
}

open class TotalPriceInformation
{
    open var TotalPrice:Double? = null
    open var TotalVATAmount:Double? = null
    open var TotalRebate:Double? = null
    open var TotalPriceBeforeRebate:Double? = null
    open var AppliedCodes:ArrayList<AppliedRebateCodes>? = null
    open var PriceSign:String? = null
    open var CurrencyId:String? = null
    open var VAT:BigDecimal? = null
}

open class AppliedRebateCodes
{
    open var RebateCodeId:Int? = null
    open var RebateCodeSign:String? = null
    open var RebateCodeValue:Int? = null
    open var RebateAmount:Double? = null
    open var RebateCodeType:RebateCodeType? = null
}

open class RebateCodeType : BaseModel()
{
    @Required()
    open var Name:String? = null

    open var Description:String? = null
    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class ServicePrice : BaseModel(), IInterval
{
    @References(Type=Currency::class)
    open var CurrencyId:String? = null

    open var CurrencyInfo:Currency? = null
    @Ignore()
    open var Service:Service? = null

    @Ignore()
    open var PriceMappings:ArrayList<PriceMapping>? = null

    @Ignore()
    open var isTimeSpecific:Boolean? = null

    @Ignore()
    open var isDaysOfWeekSpecific:Boolean? = null

    open var DayOfWeeks:ArrayList<ServicePriceDayOfWeekRelation>? = null
    @Ignore()
    open var PriceBeforeRebate:Double? = null

    @Ignore()
    open var RebateCodesApplied:ArrayList<RebateCode>? = null

    @Ignore()
    open var PriceText:String? = null

    @Ignore()
    open var OverlappingPrices:ArrayList<ServicePrice>? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var ServiceId:Int? = null

    open var Price:Double? = null
    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    @Required()
    open var FromTime:TimeSpan? = null

    @Required()
    open var ToTime:TimeSpan? = null

    @Required()
    open var VAT:BigDecimal? = null

    open var Category:String? = null
    open var ModifiedDate:Date? = null
    @Required()
    override var From:Date? = null

    @Required()
    override var To:Date? = null

    @Required()
    open var CalculationTypeId:Int? = null
}

open class PriceMapping : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var Id:UUID? = null

    @Required()
    open var ServicePriceId:Int? = null

    open var ReferenceType:String? = null
    open var ExternalReference:String? = null
    @Required()
    open var UpdatedDate:Date? = null

    @Required()
    open var CreatedDate:Date? = null

    open var ModifiedDate:Date? = null
}

open class ServicePriceDayOfWeekRelation : BaseModel()
{
    @Ignore()
    open var DayOfWeek:BokaMeraDayOfWeek? = null

    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var ServicePriceId:Int? = null

    @Required()
    open var DayOfWeekId:Int? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

enum class BokaMeraDayOfWeek(val value:Int)
{
    Monday(1),
    Tuesday(2),
    Wednesday(3),
    Thursday(4),
    Friday(5),
    Saturday(6),
    Sunday(7),
}

open class RebateCode : PayableEntity()
{
    @References(Type=RebateCodeType::class)
    open var RebateCodeTypeId:Int? = null

    open var RebateCodeTypeInfo:RebateCodeType? = null
    @References(Type=RebateCodeStatus::class)
    open var RebateCodeStatusId:Int? = null

    open var RebateCodeStatusInfo:RebateCodeStatus? = null
    open var RebateCodeDayOfWeekRelation:ArrayList<RebateCodeDayOfWeekRelation>? = null
    open var RebateCodeServiceRelation:ArrayList<RebateCodeServiceRelation>? = null
    open var RebateCodeBookingPriceRelation:ArrayList<RebateCodeBookingPriceRelation>? = null
    open var RebateCodeCustomerRelation:ArrayList<RebateCodeCustomerRelation>? = null
    @Ignore()
    open var DaysOfWeek:ArrayList<DaysOfWeek>? = null

    @Ignore()
    open var RebateCodeStatus:RebateCodeStatus? = null

    @Ignore()
    open var RebateCodeType:RebateCodeType? = null

    @Ignore()
    open var Transactions:ArrayList<RebateCodeTransaction>? = null

    @Ignore()
    open var RemainingAmount:Double? = null

    @Ignore()
    open var RemainingUsage:Int? = null

    @Ignore()
    open var CurrentNumberOfUsesPerCustomer:Int? = null

    @Ignore()
    open var IsSpecificByDayOfWeek:Boolean? = null

    @Ignore()
    open var Active:Boolean? = null

    @Ignore()
    open var ActiveByStatus:Boolean? = null

    @Ignore()
    open var RebateCodeCurrencySign:String? = null

    @Ignore()
    open var PaymentReceived:Boolean? = null

    @Ignore()
    override var InternalReferenceId:String? = null

    @Required()
    open var ValidFrom:Date? = null

    @Required()
    open var ValidTo:Date? = null

    @Required()
    open var RebateCodeSign:String? = null

    @Required()
    open var RebateCodeValue:Int? = null

    @Required()
    open var MaxNumberOfUses:Int? = null

    @Required()
    open var MaxNumberOfUsesPerCustomer:Int? = null

    @Required()
    open var NumberOfUsesUsed:Int? = null

    open var PersonalNote:String? = null
    @Required()
    open var CreatedBy:String? = null

    @Required()
    open var UpdatedBy:String? = null

    @Required()
    open var FromTime:TimeSpan? = null

    @Required()
    open var ToTime:TimeSpan? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
    open var ArticleId:Int? = null
}

open class RebateCodeStatus : BaseModel()
{
    @Required()
    open var Name:String? = null

    open var Description:String? = null
    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class RebateCodeDayOfWeekRelation : BaseModel()
{
    @Ignore()
    open var DayOfWeek:BokaMeraDayOfWeek? = null

    @Required()
    open var DayOfWeekId:Int? = null

    @Required()
    open var RebateCodeId:Int? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    open var ModifiedDate:Date? = null
}

open class RebateCodeServiceRelation : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var ServiceId:Int? = null

    @Required()
    open var RebateCodeId:Int? = null

    open var Id:Int? = null
    open var ModifiedDate:Date? = null
}

open class RebateCodeBookingPriceRelation : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var PriceId:Int? = null

    @Required()
    open var RebateCodeId:Int? = null

    open var Id:Int? = null
    open var ModifiedDate:Date? = null
}

open class RebateCodeCustomerRelation : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var CustomerId:UUID? = null

    @Required()
    open var RebateCodeId:Int? = null

    open var Id:Int? = null
    open var ModifiedDate:Date? = null
    open var RebateCodeEmailSentToCustomer:Boolean? = null
    open var MessageToReceiver:String? = null
    open var Buyer:Boolean? = null
}

open class DaysOfWeek : BaseModel()
{
    @Required()
    open var DayOfWeek:String? = null

    @Required()
    open var DayOfWeekTranslation:String? = null

    open var DayOfWeekActive:Boolean? = null
    open var DayOfWeekSortOrder:Short? = null
    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class RebateCodeTransaction : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    open var Booking:Booking? = null

    @Ignore()
    open var RebateCode:RebateCode? = null

    @Ignore()
    open var Customer:Customer? = null

    open var Id:Int? = null
    open var CompanyId:UUID? = null
    open var Note:String? = null
    @Required()
    open var RebateCodeId:Int? = null

    @Required()
    open var Amount:Double? = null

    @Required()
    open var Usage:Int? = null

    open var BookingId:Int? = null
    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null
}

open class BookingStatusOptions
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = null
}

open class BookingSettings : BaseModel()
{
    @References(Type=FreeSpotTexts::class)
    open var FreeSpotTextsId:Int? = null

    @Ignore()
    open var SendEmailConfirmation:Boolean? = null

    @Ignore()
    open var ScheduleViewOptions:ArrayList<ScheduleView>? = null

    @Ignore()
    open var WeekNumberSettingOptions:ArrayList<WeekNumberSetting>? = null

    @Ignore()
    open var BookingTemplateOptions:ArrayList<BookingTemplate>? = null

    @Ignore()
    open var CalendarTypeOptions:ArrayList<CalendarType>? = null

    @Ignore()
    open var FreeSpotTextOptions:ArrayList<FreeSpotTexts>? = null

    @Ignore()
    open var BookingStatusOptions:ArrayList<BookingStatusOptions>? = null

    open var FreeSpotTextsInfo:FreeSpotTexts? = null
    @Ignore()
    open var FreeSpotsTextSingular:String? = null

    @Ignore()
    open var FreeSpotsTextPlural:String? = null

    @Required()
    open var BookingStatusId:Int? = null

    @Required()
    open var ScheduleViewId:Int? = null

    @Required()
    open var BookingTemplateId:Int? = null

    @Required()
    open var CalendarTypeId:Int? = null

    @Required()
    open var AllowBookingOnUnbookedTimes:Boolean? = null

    @Required()
    open var SendEmailReminder:Boolean? = null

    @Required()
    open var SendSmsReminder:Boolean? = null

    @Required()
    open var SendSmsConfirmation:Boolean? = null

    @Required()
    open var EmailReminderTime:Int? = null

    @Required()
    open var SmsReminderTime:Int? = null

    @Required()
    open var SendPushNotification:Boolean? = null

    @Required()
    open var SendPushNotificationReminder:Boolean? = null

    @Required()
    open var PushNotificationReminderTime:Int? = null

    @Required()
    open var MaxActiveBookings:Int? = null

    @Required()
    open var SendNotifications:Boolean? = null

    open var SendNotificationsEmail:String? = null
    @Required()
    open var EnableMobileApp:Boolean? = null

    open var ScheduleStartTime:TimeSpan? = null
    open var ScheduleEndTime:TimeSpan? = null
    open var ReceiptTemplate:String? = null
    @Required()
    open var ScheduleTimeSlotMinutes:Int? = null

    @Required()
    open var ShowFreeTimesLeft:Boolean? = null

    @Required()
    open var EnableICalGroupBookings:Boolean? = null

    open var AgreementTemplate:String? = null
    @Required()
    open var ScheduleShowTimeExeptions:Boolean? = null

    @Required()
    open var EnableBookingsOnSameTime:Boolean? = null

    @Required()
    open var ShowWeekNumberSettingId:Int? = null

    @Required()
    open var EnableShowBookedTimes:Boolean? = null

    @Required()
    open var EnableSendFollowUpMessage:Boolean? = null

    @Required()
    open var FollowUpMessageTime:Int? = null

    open var MessageText:String? = null
    @Required()
    open var ScheduleGroupResources:Boolean? = null

    @Required()
    open var BookSpotUserResponseMinutes:Int? = null

    @Required()
    open var IsBookSpotDirectly:Boolean? = null

    @Required()
    open var BookSpotDirectlyTimeLeftMinutes:Int? = null

    @Required()
    open var SendEmailNotificationQueue:Boolean? = null

    @Required()
    open var SendSMSNotificationQueue:Boolean? = null

    @Required()
    open var SchedulerDisableHorizontalScrolling:Boolean? = null

    @Required()
    open var BookOnlyOnExistingCustomers:Boolean? = null

    @Required()
    open var AutoGenerateUniquePinCode:Boolean? = null

    @Required()
    open var WeightedPrices:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var AutoCreateUserProfile:Boolean? = null

    open var ShowMultipleResourcesAsOne:Boolean? = null
    open var ShowMultiDayAsTime:Boolean? = null
    open var BookingPinCodeRestriction:String? = null
    open var CustomerInvoiceAdressRequired:Boolean? = null
    @Required()
    open var Id:UUID? = null
}

open class ScheduleView : BaseModel()
{
    @Required()
    open var Name:String? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class WeekNumberSetting : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class BookingTemplate : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var UsedByApplication:String? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class CalendarType : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Active:Boolean? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class FreeSpotTexts : BaseModel()
{
    @Required()
    open var TextSingular:String? = null

    @Required()
    open var TextPlural:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class PaymentSetting : BaseModel()
{
    open var AdminPaymentOption:AdminPaymentOptions? = null
    @Ignore()
    open var AdminPaymentOptions:ArrayList<AdminPaymentOptions>? = null

    @Ignore()
    open var PaymentProviderOptions:ArrayList<PaymentProviders>? = null

    @Required()
    open var Enabled:Boolean? = null

    @Required()
    open var InvoiceFee:Int? = null

    @Required()
    open var AllowCreditCardPayment:Boolean? = null

    @Required()
    open var AllowInvoicePayment:Boolean? = null

    @Required()
    open var AllowBankPayment:Boolean? = null

    @Required()
    open var GuaranteeOffered:Boolean? = null

    @Required()
    open var RefundOnCancelBooking:Boolean? = null

    open var DefaultPaymentOptionId:Int? = null
    @Required()
    open var PaymentProviderId:Int? = null

    @Required()
    open var SendPaymentRequestDirectly:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:UUID? = null
}

open class AdminPaymentOptions : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class PaymentProviders : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Category:String? = null

    open var Url:String? = null
    @Required()
    open var Active:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class AverageRatingScore
{
    open var AverageScore:Double? = null
    open var Score1Count:Int? = null
    open var Score2Count:Int? = null
    open var Score3Count:Int? = null
    open var Score4Count:Int? = null
    open var Score5Count:Int? = null
    open var Count:Int? = null
}

open class Rating : BaseModel()
{
    open var ReviewId:UUID? = null
    open var Review:Review? = null
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var BookingId:Int? = null

    @Required()
    open var RatingScore:Int? = null

    @Required()
    open var Status:Int? = null

    @Required()
    open var Created:Date? = null

    @Required()
    open var Updated:Date? = null

    open var ModifiedDate:Date? = null
}

open class Review : BaseModel()
{
    open var ReviewId:UUID? = null
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var Title:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Author:String? = null

    @Required()
    open var Status:Int? = null

    @Required()
    open var Created:Date? = null

    @Required()
    open var Updated:Date? = null

    open var ModifiedDate:Date? = null
    open var ReviewAnswer:String? = null
}

open class CustomFieldServiceRelation : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var CustomFieldConfigId:Int? = null

    @Required()
    open var ServiceId:Int? = null

    open var ModifiedDate:Date? = null
}

open class CompanyType : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class CodeLockSetting : BaseModel()
{
    @Ignore()
    open var CodeLockSystemOptions:ArrayList<CodeLockSystem>? = null

    @Required()
    open var Active:Boolean? = null

    @Required()
    open var CodeLockSystemsId:Int? = null

    @Required()
    open var ValidBeforeMinutes:Int? = null

    @Required()
    open var ValidAfterMinutes:Int? = null

    @Required()
    open var DeleteOldBySchedule:Boolean? = null

    @Required()
    open var Created:Date? = null

    @Required()
    open var Updated:Date? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var SendEmailNotification:Boolean? = null

    @Required()
    open var SendSMSNotification:Boolean? = null

    @Required()
    open var EmailNotificationTime:Short? = null

    @Required()
    open var SMSNotificationTime:Short? = null

    @Required()
    open var Id:UUID? = null
}

open class CodeLockSystem : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Supplier:String? = null

    open var LogoType:String? = null
    @Required()
    open var Description:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class CompanySetting : BaseModel()
{
    @Ignore()
    open var Languages:ArrayList<LanguageResponse>? = null

    @Required()
    open var Active:Boolean? = null

    open var InactiveMessage:String? = null
    @Required()
    open var Searchable:Boolean? = null

    open var GATrackingId:String? = null
    open var FacebookPixelId:String? = null
    @Required()
    open var MultiLanguage:Boolean? = null

    @Required()
    open var EnableAPITranslation:Boolean? = null

    @Required()
    open var DefaultLanguage:String? = null

    open var ModifiedDate:Date? = null
    open var GTMTrackingId:String? = null
    @Required()
    open var ShowOnMarketPlace:Boolean? = null

    open var GoogleAdsConversionId:String? = null
    open var LinkedinTagId:String? = null
    open var GoogleAdsConversionLabel:String? = null
    open var SendCustomerInformationToExternalProviders:Boolean? = null
    @Required()
    open var Id:UUID? = null

    open var IsWebhookFeatureEnabled:Boolean? = null
    open var SmsMessageSendLimit:Int? = null
    open var EmailMessageSendLimit:Int? = null
}

open class LanguageResponse
{
    open var Id:String? = null
    open var Name:String? = null
}

open class HomepageWidgetSetting : BaseModel()
{
    @Ignore()
    open var WidgetServiceLayoutOptions:ArrayList<WidgetServiceLayouts>? = null

    @Ignore()
    open var WidgetTimeLayoutOptions:ArrayList<WidgetTimeLayouts>? = null

    @Ignore()
    open var WidgetBookingLayoutOptions:ArrayList<WidgetBookingLayouts>? = null

    @Ignore()
    open var WidgetBookingMethodOptions:ArrayList<WidgetBookingMethods>? = null

    @Required()
    open var ServiceLayoutId:Int? = null

    @Required()
    open var TimeLayoutId:Int? = null

    @Required()
    open var BookingLayoutId:Int? = null

    @Required()
    open var PrimaryColor:String? = null

    @Required()
    open var ShowServiceImage:Boolean? = null

    @Required()
    open var ShowNextAvailableTime:Boolean? = null

    @Required()
    open var ShowEndTime:Boolean? = null

    open var BookedTimeSlotText:String? = null
    @Required()
    open var DarkTheme:Boolean? = null

    @Required()
    open var ShowRebateCodeField:Boolean? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var EnableCreateAccount:Boolean? = null

    @Required()
    open var EnableLogin:Boolean? = null

    @Required()
    open var EnableDirectBooking:Boolean? = null

    @Required()
    open var EnableFacebookLogin:Boolean? = null

    @Required()
    open var ShowSubscribeToNewsletter:Boolean? = null

    @Required()
    open var Id:UUID? = null
}

open class WidgetServiceLayouts : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Code:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class WidgetTimeLayouts : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Code:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class WidgetBookingLayouts : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Code:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class WidgetBookingMethods : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Code:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class HomepageSetting : BaseModel(), ICompany
{
    @Ignore()
    open var HomepageTemplateOptions:ArrayList<HomepageTemplate>? = null

    @Ignore()
    open var HomepageHeroSectionStyleOptions:ArrayList<HeroSectionStyle>? = null

    @Ignore()
    override var CompanyId:UUID? = null

    open var WelcomePageHeading:String? = null
    open var WelcomePageBody:String? = null
    open var AboutUsPageHeading:String? = null
    open var AboutUsPageBody:String? = null
    @Required()
    open var HomePageTemplateId:Int? = null

    open var ImageUrl:String? = null
    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var HomepageHeading:String? = null
    @Required()
    open var HeroSectionStyleId:Int? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var ShowRating:Boolean? = null

    @Required()
    open var EnableHomepage:Boolean? = null

    @Required()
    open var Id:UUID? = null
}

open class HomepageTemplate : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var ImageUrl:Uri? = null
    @Required()
    open var Premium:Boolean? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class HeroSectionStyle : BaseModel()
{
    @Required()
    open var Name:String? = null

    open var Description:String? = null
    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class License : BaseModel()
{
    open var Type:LicenseType? = null
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var TypeId:Int? = null

    @Required()
    open var ValidFrom:Date? = null

    @Required()
    open var ValidTo:Date? = null

    @Required()
    open var Active:Boolean? = null

    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var ModifiedDate:Date? = null
    open var MetaData:String? = null
}

open class LicenseType : BaseModel()
{
    @Ignore()
    open var LicenseItems:IList<LicenseTypeItem>? = null

    @Ignore()
    open var Prices:IList<LicensePrice>? = null

    @Ignore()
    open var IsFree:Boolean? = null

    @Ignore()
    open var PeriodOfNoticeDays:Int? = null

    @Ignore()
    open var NextLicenseOption:LicenseType? = null

    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var ExtraLicenseOption:Boolean? = null

    open var ModifiedDate:Date? = null
    open var Active:Boolean? = null
    open var Id:Int? = null
}

open class LicenseTypeItem : BaseModel()
{
    @Ignore()
    open var Name:String? = null

    @Ignore()
    open var LicenseType:LicenseType? = null

    @Required()
    open var LicenseTypesId:Int? = null

    @Required()
    open var LicenseItemsId:Int? = null

    @Required()
    open var NumberOfItems:Int? = null

    open var Id:Int? = null
    open var ModifiedDate:Date? = null
}

open class LicensePrice : BaseModel()
{
    @Ignore()
    open var Country:Country? = null

    @Ignore()
    open var MonthlyPayment:Boolean? = null

    @Required()
    open var LicenseTypeId:Int? = null

    @Required()
    open var CountryId:String? = null

    @Required()
    open var Price:Int? = null

    open var ModifiedDate:Date? = null
}

open class Country : BaseModel()
{
    @References(Type=Currency::class)
    open var CurrencyId:String? = null

    open var CurrencyInfo:Currency? = null
    @Required()
    open var Name:String? = null

    open var Culture:String? = null
    open var TimeZone:String? = null
    open var ModifiedDate:Date? = null
    @Required()
    open var Id:String? = null
}

open class CompanyUser : BaseModel(), IUser, IBaseModelCreated, IBaseModelUpdated
{
    open var Resource:Resource? = null
    @Ignore()
    open var Roles:ArrayList<KeyCloakRole>? = null

    @Ignore()
    open var Company:Company? = null

    override var Email:String? = null
    @Ignore()
    open var FullName:String? = null

    open var ResourceId:Int? = null
    open var WorkerId:String? = null
    @Required()
    open var Active:Boolean? = null

    @Required()
    open var IsSuperAdmin:Boolean? = null

    @Required()
    override var CreatedDate:Date? = null

    @Required()
    override var UpdatedDate:Date? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    override var Id:UUID? = null

    override var UserId:UUID? = null
    override var Firstname:String? = null
    override var Lastname:String? = null
    @Required()
    open var SendPushNotification:Boolean? = null

    @Required()
    open var SendPushNotificationReminder:Boolean? = null

    override var Phone:String? = null
}

open class KeyCloakRole
{
    open var Id:UUID? = null
    open var Name:String? = null
}

open class CompanyCategory : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Header:String? = null

    @Required()
    open var Description:String? = null

    open var ImageUrl:Uri? = null
    @Required()
    open var Active:Boolean? = null

    open var SortOrder:Int? = null
    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class CustomerComment : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var CustomerId:UUID? = null

    @Required()
    open var Comments:String? = null

    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    open var ImageUrl:String? = null
    open var ModifiedDate:Date? = null
}

open class Article : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    open var Company:Company? = null
    open var CurrencyInfo:Currency? = null
    open var ArticleServiceRelations:ArrayList<ArticleServiceRelation>? = null
    @Ignore()
    open var ServiceIds:ArrayList<Int>? = null

    @Ignore()
    open var Services:ArrayList<Service>? = null

    @Ignore()
    open var ArticleType:ArticleTypeEnum? = null

    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var Name:String? = null

    @Required()
    open var ArticleTypeId:Int? = null

    open var Description:String? = null
    open var ImageUrl:String? = null
    @Required()
    open var Active:Boolean? = null

    @Required()
    open var Amount:Int? = null

    @Required()
    open var Price:Double? = null

    open var VAT:BigDecimal? = null
    @Required()
    @StringLength(MaximumLength=50)
    open var CurrencyId:String? = null

    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null

    open var ModifiedDate:Date? = null
}

open class ArticleServiceRelation : BaseModel()
{
    @Required()
    open var CompanyId:UUID? = null

    open var Id:Int? = null
    @Required()
    open var ServiceId:Int? = null

    @Required()
    open var ArticleId:Int? = null
}

enum class ArticleTypeEnum(val value:Int)
{
    ServiceArticle(1),
    StandAloneArticle(2),
    RebateCodePunchTicketArticle(3),
    RebateCodeGiftCardArticle(4),
    RebateCodeValueCardArticle(5),
}

open class ArticleInvoiceAddress : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Required()
    open var ArticleInvoiceAddressId:UUID? = null

    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var InternalReferenceId:String? = null

    @Required()
    open var ArticleTypeId:Int? = null

    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
    @Required()
    override var UpdatedDate:Date? = null

    @Required()
    override var CreatedDate:Date? = null
}

open class BookingLog : BaseModel()
{
    @References(Type=BookingLogEventType::class)
    open var EventTypeId:Int? = null

    open var EventType:BookingLogEventType? = null
    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var BookingId:Int? = null

    open var Id:Int? = null
    open var Comments:String? = null
    open var UserId:String? = null
    @Required()
    open var Created:Date? = null

    open var ModifiedDate:Date? = null
}

open class BookingLogEventType : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    open var ModifiedDate:Date? = null
    @Required()
    open var Id:Int? = null
}

open class PaymentDetails : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    open var QvicklyCheckoutSerialized:QvicklyCustomCheckoutData? = null

    @Ignore()
    open var Payson2CheckoutSerialized:Payson2CheckoutResponse? = null

    @Ignore()
    open var StripeCheckoutSerialized:CustomCheckoutData? = null

    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var InternalReferenceId:String? = null

    @Required()
    open var ArticleTypeId:Int? = null

    @Required()
    open var ExternalResponseData:String? = null

    @Required()
    open var ExternalResponseReference:String? = null

    @Required()
    open var PaymentProviderId:Int? = null

    @Required()
    override var CreatedDate:Date? = null

    @Required()
    override var UpdatedDate:Date? = null

    open var ModifiedDate:Date? = null
}

open class BookingPrice : BaseModel()
{
    @References(Type=Currency::class)
    open var CurrencyId:String? = null

    open var ServicePriceId:Int? = null
    open var ServicePrice:ServicePrice? = null
    open var CurrencyInfo:Currency? = null
    @Ignore()
    open var PriceText:String? = null

    @Ignore()
    open var AppliedCodes:ArrayList<AppliedRebateCodes>? = null

    @Ignore()
    open var IsRebate:Boolean? = null

    @Required()
    open var CompanyId:UUID? = null

    @Required()
    open var BookingId:Int? = null

    @Required()
    open var Quantity:Int? = null

    open var Price:Double? = null
    open var VAT:BigDecimal? = null
    open var Category:String? = null
    @Required()
    open var Updated:Date? = null

    @Required()
    open var Created:Date? = null

    @Required()
    open var Invoiced:Boolean? = null

    @Required()
    open var OccupiesSpot:Boolean? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class BookingStatus : BaseModel()
{
    @Required()
    open var Name:String? = null

    @Required()
    open var Description:String? = null

    @Required()
    open var Color:String? = null

    @Required()
    open var Icon:String? = null

    open var ModifiedDate:Date? = null
    open var Id:Int? = null
}

open class BookedResourceType
{
    /**
    * The resource type id
    */
    @ApiMember(Description="The resource type id")
    open var Id:Int? = null

    /**
    * The resource type name
    */
    @ApiMember(Description="The resource type name")
    open var Name:String? = null

    /**
    * The resources inside resource type
    */
    @ApiMember(Description="The resources inside resource type")
    open var Resources:ArrayList<BookedResource>? = null
}

open class BookedResource
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Color:String? = null
    open var ImageUrl:Uri? = null
    open var Email:String? = null
    open var MobilePhone:String? = null
    open var AccessGroup:String? = null
    open var EmailNotification:Boolean? = null
    open var SMSNotification:Boolean? = null
    open var EmailReminder:Boolean? = null
    open var SMSReminder:Boolean? = null
}

open class BookingQueryResponse
{
    open var Id:Int? = null
    open var CompanyId:UUID? = null
    open var From:Date? = null
    open var To:Date? = null
    open var Status:BookingStatusEnum? = null
    open var StatusId:Int? = null
    open var StatusName:String? = null
    open var StatusInfo:BookingStatusQueryResponse? = null
    open var SendEmailReminder:Boolean? = null
    open var SendSmsReminder:Boolean? = null
    open var SendSmsConfirmation:Boolean? = null
    open var SendEmailConfirmation:Boolean? = null
    open var LastTimeToUnBook:Date? = null
    open var CustomFields:ArrayList<CustomFieldConfigData>? = null
    open var CustomFieldValues:ArrayList<CustomFieldDataResponse>? = null
    open var BookedResourceTypes:ArrayList<BookedResourceType>? = null
    open var Company:BookedCompany? = null
    open var Customer:BookedCustomer? = null
    open var Quantities:ArrayList<BookedQuantity>? = null
    open var Service:ServiceInfoResponse? = null
    open var InvoiceAddress:InvoiceAddressResponse? = null
    open var PaymentExpiration:Date? = null
    open var Log:ArrayList<BookingLogQueryResponse>? = null
    open var PaymentLog:ArrayList<BookingPaymentLogQueryResponse>? = null
    open var CheckoutLog:ArrayList<BookingCheckoutQueryResponse>? = null
    open var ExternalReference:ArrayList<ExternalReferenceResponse>? = null
    open var ResponseStatus:ResponseStatus? = null
    open var LengthInMinutes:Int? = null
    open var BookedBy:String? = null
    open var BookedComments:String? = null
    open var UnbookedComments:String? = null
    open var CommentsToCustomer:String? = null
    open var CreatedDate:Date? = null
    open var UpdatedDate:Date? = null
    open var UnbookedOn:Date? = null
    open var CancellationCode:String? = null
    open var RatingCode:String? = null
}

open class BookingStatusQueryResponse
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = null
    open var Icon:String? = null
    open var Color:String? = null
}

open class CustomFieldConfigData
{
    /**
    * Custom field id
    */
    @ApiMember(Description="Custom field id")
    open var Id:Int? = null

    /**
    * Configuration name. Example: 'Number of persons'.
    */
    @ApiMember(Description="Configuration name. Example: 'Number of persons'.")
    open var Name:String? = null

    /**
    * Custom field description. Example: 'For how many persons is this booking?'
    */
    @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")
    open var Description:String? = null

    /**
    * Field width. Example: 20 for 20px
    */
    @ApiMember(Description="Field width. Example: 20 for 20px")
    open var Width:Int? = null

    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    open var DataType:String? = null

    /**
    * Default value of the field. Example: '3'
    */
    @ApiMember(Description="Default value of the field. Example: '3'")
    open var DefaultValue:String? = null

    /**
    * Determines if the field is required to have a value or not
    */
    @ApiMember(Description="Determines if the field is required to have a value or not")
    open var IsMandatory:Boolean? = null

    /**
    * Error message shown to the user if the field data is required but not entered
    */
    @ApiMember(Description="Error message shown to the user if the field data is required but not entered")
    open var MandatoryErrorMessage:String? = null

    /**
    * Max lenght of the field
    */
    @ApiMember(Description="Max lenght of the field")
    open var MaxLength:Int? = null

    /**
    * If the field should have multiple lines
    */
    @ApiMember(Description="If the field should have multiple lines")
    open var MultipleLineText:Boolean? = null

    /**
    * Regular expression used for validation of the field
    */
    @ApiMember(Description="Regular expression used for validation of the field")
    open var RegEx:String? = null

    /**
    * Error message shown if the regular expression validation failed
    */
    @ApiMember(Description="Error message shown if the regular expression validation failed")
    open var RegExErrorMessage:String? = null

    /**
    * The values to select from if Datatype is DropDown for this custom field
    */
    @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")
    open var Values:ArrayList<CustomFieldValueResponse>? = null
}

open class CustomFieldValueResponse
{
    open var Value:String? = null
}

open class BookedCompany
{
    open var Id:UUID? = null
    open var Name:String? = null
    open var LogoType:Uri? = null
    open var Category:String? = null
    open var Street1:String? = null
    open var Street2:String? = null
    open var ZipCode:String? = null
    open var City:String? = null
    open var CountryId:String? = null
    open var Longitude:String? = null
    open var Latitude:String? = null
    open var Phone:String? = null
    open var Email:String? = null
    open var HomePage:String? = null
    open var SitePath:String? = null
    open var IsFavorite:Boolean? = null
    open var PaymentProviderId:Int? = null
}

open class BookedQuantity
{
    /**
    * The quantity Id
    */
    @ApiMember(Description="The quantity Id")
    open var Id:Int? = null

    /**
    * The quantity for booked on this price category
    */
    @ApiMember(Description="The quantity for booked on this price category")
    open var Quantity:Int? = null

    /**
    * The price
    */
    @ApiMember(Description="The price")
    open var Price:Double? = null

    /**
    * The price bofore rebate codes
    */
    @ApiMember(Description="The price bofore rebate codes")
    open var PriceBeforeRebate:Double? = null

    /**
    * The price currency
    */
    @ApiMember(Description="The price currency")
    open var CurrencyId:String? = null

    /**
    * The price sign
    */
    @ApiMember(Description="The price sign")
    open var PriceSign:String? = null

    /**
    * The price category
    */
    @ApiMember(Description="The price category")
    open var Category:String? = null

    /**
    * The price VAT in percent
    */
    @ApiMember(Description="The price VAT in percent")
    open var VAT:BigDecimal? = null

    /**
    * The price text to display
    */
    @ApiMember(Description="The price text to display")
    open var PriceText:String? = null

    /**
    * If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
    */
    @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")
    open var OccupiesSpot:Boolean? = null
}

open class ServiceInfoResponse
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = null
    open var ImageUrl:Uri? = null
    open var LengthInMinutes:Int? = null
    open var MaxNumberOfSpotsPerBooking:Int? = null
    open var MinNumberOfSpotsPerBooking:Int? = null
    open var GroupBooking:GroupBookingSettings? = null
    open var MultipleResource:MultipleResourceSettings? = null
    open var IsGroupBooking:Boolean? = null
    open var IsPaymentEnabled:Boolean? = null
}

open class GroupBookingSettings
{
    open var Active:Boolean? = null
    open var Min:Int? = null
    open var Max:Int? = null
}

open class MultipleResourceSettings
{
    open var Active:Boolean? = null
    open var Min:Int? = null
    open var Max:Int? = null
}

open class InvoiceAddressResponse
{
    open var InvoiceAddressId:UUID? = null
    open var UserId:UUID? = null
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
}

open class BookingLogQueryResponse
{
    /**
    * The booking log id
    */
    @ApiMember(Description="The booking log id")
    open var Id:Int? = null

    /**
    * The booking id
    */
    @ApiMember(Description="The booking id")
    open var BookingId:Int? = null

    /**
    * The type of event
    */
    @ApiMember(Description="The type of event")
    open var EventTypeId:Int? = null

    /**
    * The type of event
    */
    @ApiMember(Description="The type of event")
    open var EventType:BookingLogEventTypeResponse? = null

    /**
    * Comments that could be added to the event log item
    */
    @ApiMember(Description="Comments that could be added to the event log item")
    open var Comments:String? = null

    /**
    * The user created the event
    */
    @ApiMember(Description="The user created the event")
    open var UserName:String? = null

    /**
    * The date when the event occurred
    */
    @ApiMember(Description="The date when the event occurred")
    open var Created:Date? = null
}

open class BookingLogEventTypeResponse
{
    /**
    * The event type id
    */
    @ApiMember(Description="The event type id")
    open var Id:Int? = null

    /**
    * The event type name
    */
    @ApiMember(Description="The event type name")
    open var Name:String? = null

    /**
    * The event type description
    */
    @ApiMember(Description="The event type description")
    open var Description:String? = null
}

open class BookingPaymentLogQueryResponse
{
    /**
    * The booking payment log id
    */
    @ApiMember(Description="The booking payment log id")
    open var Id:Int? = null

    /**
    * The booking id
    */
    @ApiMember(Description="The booking id")
    open var BookingId:Int? = null

    /**
    * The payment reference id
    */
    @ApiMember(Description="The payment reference id")
    open var PaymentReferenceId:String? = null

    /**
    * The payment order item reference id
    */
    @ApiMember(Description="The payment order item reference id")
    open var OrderItemReferenceId:String? = null

    /**
    * The payment reference id
    */
    @ApiMember(Description="The payment reference id")
    open var PaymentProviderId:Int? = null

    /**
    * The payment amount
    */
    @ApiMember(Description="The payment amount")
    open var Amount:Double? = null

    /**
    * The payment VAT in percent
    */
    @ApiMember(Description="The payment VAT in percent")
    open var VAT:BigDecimal? = null

    /**
    * The payment amount that is credited
    */
    @ApiMember(Description="The payment amount that is credited")
    open var AmountCredited:Double? = null

    /**
    * The payment currency id
    */
    @ApiMember(Description="The payment currency id")
    open var CurrencyId:String? = null

    /**
    * The payment currency info
    */
    @ApiMember(Description="The payment currency info")
    open var CurrencyInfo:CurrencyInfoResponse? = null

    /**
    * Comments that could be added to the event log item
    */
    @ApiMember(Description="Comments that could be added to the event log item")
    open var Comments:String? = null

    /**
    * The date when the payment items was created
    */
    @ApiMember(Description="The date when the payment items was created")
    open var Created:Date? = null

    /**
    * The date when the payment items were updated.
    */
    @ApiMember(Description="The date when the payment items were updated.")
    open var Updated:Date? = null
}

open class CurrencyInfoResponse
{
    /**
    * The currency id
    */
    @ApiMember(Description="The currency id")
    open var Id:String? = null

    /**
    * The currency id
    */
    @ApiMember(Description="The currency id")
    open var Name:String? = null

    /**
    * The currency id
    */
    @ApiMember(Description="The currency id")
    open var CurrencySign:String? = null
}

open class BookingCheckoutQueryResponse
{
    /**
    * The checkout id
    */
    @ApiMember(Description="The checkout id")
    open var Id:UUID? = null

    /**
    * The booking id
    */
    @ApiMember(Description="The booking id")
    open var BookingId:Int? = null

    /**
    * The purchase id
    */
    @ApiMember(Description="The purchase id")
    open var PurchaseId:Int? = null

    /**
    * The payment checkout expiration datetime
    */
    @ApiMember(Description="The payment checkout expiration datetime")
    open var ExpirationTime:Date? = null

    /**
    * The payment snippet code
    */
    @ApiMember(Description="The payment snippet code")
    open var Snippet:String? = null

    /**
    * The payment status
    */
    @ApiMember(Description="The payment status")
    open var Status:String? = null

    /**
    * Log message
    */
    @ApiMember(Description="Log message")
    open var Message:String? = null

    /**
    * When the checkout log item was created
    */
    @ApiMember(Description="When the checkout log item was created")
    open var Created:Date? = null

    /**
    * When the checkout log item was updated
    */
    @ApiMember(Description="When the checkout log item was updated")
    open var Updated:Date? = null
}

open class ExternalReferenceResponse
{
    open var CompanyId:UUID? = null
    open var Id:UUID? = null
    open var OwnerId:UUID? = null
    open var ReferenceType:String? = null
    open var ExternalData:String? = null
    open var CreatedBy:String? = null
    open var Updated:Date? = null
    open var Created:Date? = null
}

@DataContract
open class QueryResponse<T>
{
    @DataMember(Order=1)
    open var Offset:Int? = null

    @DataMember(Order=2)
    open var Total:Int? = null

    @DataMember(Order=3)
    open var Results:ArrayList<AccessKeyTypeResponse>? = null

    @DataMember(Order=4)
    open var Meta:HashMap<String,String>? = null

    @DataMember(Order=5)
    open var ResponseStatus:ResponseStatus? = null
}

open class AccessKeyTypeResponse
{
    open var Id:Int? = null
    open var KeyType:String? = null
    open var Description:String? = null
}

Kotlin BookingQuery 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.

GET /bookings HTTP/1.1 
Host: api.bookmore.com 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Offset":0,"Total":0,"Results":[{"Id":0,"Status":"Booked","StatusId":0,"StatusName":"String","StatusInfo":{"Id":0,"Name":"String","Description":"String","Icon":"String","Color":"String"},"SendEmailReminder":false,"SendSmsReminder":false,"SendSmsConfirmation":false,"SendEmailConfirmation":false,"LastTimeToUnBook":"0001-01-01T00:00:00","CustomFields":[{"Id":0,"Name":"String","Description":"String","Width":0,"DataType":"String","DefaultValue":"String","IsMandatory":false,"MandatoryErrorMessage":"String","MaxLength":0,"MultipleLineText":false,"RegEx":"String","RegExErrorMessage":"String","Values":[{"Value":"String"}]}],"CustomFieldValues":[{"Id":0,"Column":"String","Name":"String","Description":"String","Value":"String","DataType":"String"}],"BookedResourceTypes":[{"Id":0,"Name":"String","Resources":[{"Id":0,"Name":"String","Color":"String","Email":"String","MobilePhone":"String","AccessGroup":"String","EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}]}],"Company":{"Name":"String","Category":"String","Street1":"String","Street2":"String","ZipCode":"String","City":"String","CountryId":"String","Longitude":"String","Latitude":"String","Phone":"String","Email":"String","HomePage":"String","SitePath":"String","IsFavorite":false,"PaymentProviderId":0},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","FacebookUserName":"String","ImageUrl":"String","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Quantities":[{"Id":0,"Quantity":0,"Price":0,"PriceBeforeRebate":0,"CurrencyId":"String","PriceSign":"String","Category":"String","VAT":0,"PriceText":"String","OccupiesSpot":false}],"Service":{"Id":0,"Name":"String","Description":"String","LengthInMinutes":0,"MaxNumberOfSpotsPerBooking":0,"MinNumberOfSpotsPerBooking":0,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"IsGroupBooking":false,"IsPaymentEnabled":false},"InvoiceAddress":{"UserId":"00000000-0000-0000-0000-000000000000","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"PaymentExpiration":"0001-01-01T00:00:00","Log":[{"Id":0,"BookingId":0,"EventTypeId":0,"EventType":{"Id":0,"Name":"String","Description":"String"},"Comments":"String","UserName":"String"}],"PaymentLog":[{"Id":0,"BookingId":0,"PaymentReferenceId":"String","OrderItemReferenceId":"String","PaymentProviderId":0,"Amount":0,"VAT":0,"AmountCredited":0,"CurrencyId":"String","CurrencyInfo":{"Id":"String","Name":"String","CurrencySign":"String"},"Comments":"String"}],"CheckoutLog":[{"BookingId":0,"PurchaseId":0,"ExpirationTime":"0001-01-01T00:00:00","Snippet":"String","Status":"String","Message":"String"}],"ExternalReference":[{"ReferenceType":"String","ExternalData":"String","CreatedBy":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"LengthInMinutes":0,"BookedBy":"String","BookedComments":"String","UnbookedComments":"String","CommentsToCustomer":"String","UnbookedOn":"0001-01-01T00:00:00","CancellationCode":"String","RatingCode":"String"}],"Meta":{"String":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}