BokaMera.API.Host

<back to all web services

UpdateService

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
PUT/services/{Id}Update serviceUpdate service to the company for the currently logged in user, only administrators are allowed to add services.
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@ValidateRequest(Validator="IsAuthenticated")
open class UpdateService : ICompany
{
    /**
    * 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.")
    override var CompanyId:UUID? = null

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

    /**
    * The service name
    */
    @ApiMember(Description="The service name")
    open var Name:String? = null

    /**
    * The service description
    */
    @ApiMember(Description="The service description")
    open var Description:String? = null

    /**
    * The service group
    */
    @ApiMember(Description="The service group")
    open var Group:String? = null

    /**
    * If service is active or not
    */
    @ApiMember(Description="If service is active or not")
    open var Active:Boolean? = null

    /**
    * What type of duration should be used for the service.  Normal = 1, Flexible = 2. Flexible means user can select duration.
    */
    @ApiMember(Description="What type of duration should be used for the service.  Normal = 1, Flexible = 2. Flexible means user can select duration.")
    open var DurationTypeId:Int? = null

    /**
    * If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked.
    */
    @ApiMember(Description="If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked.")
    open var BookingStatusId:Int? = null

    /**
    * Pause after each booking on this service in minutes
    */
    @ApiMember(Description="Pause after each booking on this service in minutes")
    open var PauseAfterBooking:Int? = null

    /**
    * Last time to unbook service in days
    */
    @ApiMember(Description="Last time to unbook service in days")
    open var UnbookBeforeDays:Int? = null

    /**
    * Last time to unbook service in hours
    */
    @ApiMember(Description="Last time to unbook service in hours")
    open var UnbookBeforeHours:Int? = null

    /**
    * Last time to unbook service in minutes
    */
    @ApiMember(Description="Last time to unbook service in minutes")
    open var UnbookBeforeMinutes:Int? = null

    /**
    * Last time to book service in days
    */
    @ApiMember(Description="Last time to book service in days")
    open var BookBeforeDays:Int? = null

    /**
    * If you want to allow customers to add themself into a queue if fullybooked. Settings for this is handled in BookingSettings.
    */
    @ApiMember(Description="If you want to allow customers to add themself into a queue if fullybooked. Settings for this is handled in BookingSettings.")
    open var EnableBookingQueue:Boolean? = null

    /**
    * If you want to enable sync to code lock for this service. Settings is handled in CodeLockSettings.
    */
    @ApiMember(Description="If you want to enable sync to code lock for this service. Settings is handled in CodeLockSettings.")
    open var EnableCodeLockSync:Boolean? = null

    /**
    * If you want to allow customer pay manually at the spot etc.
    */
    @ApiMember(Description="If you want to allow customer pay manually at the spot etc.", IsRequired=true)
    open var EnableCustomerManualPayment:Boolean? = null

    /**
    * Last time to book service in hours
    */
    @ApiMember(Description="Last time to book service in hours")
    open var BookBeforeHours:Int? = null

    /**
    * Last time to book service in minutes
    */
    @ApiMember(Description="Last time to book service in minutes")
    open var BookBeforeMinutes:Int? = null

    /**
    * The duration of the service in minutes
    */
    @ApiMember(Description="The duration of the service in minutes")
    open var Duration:Int? = null

    /**
    * When using Duration Intervals then set the Min Duration a customer can book
    */
    @ApiMember(Description="When using Duration Intervals then set the Min Duration a customer can book")
    open var MinDuration:Int? = null

    /**
    * When using Duration Intervals then set the Max Duration a customer can book
    */
    @ApiMember(Description="When using Duration Intervals then set the Max Duration a customer can book")
    open var MaxDuration:Int? = null

    /**
    * The duration interval of the service when allowing customers to book in intervals
    */
    @ApiMember(Description="The duration interval of the service when allowing customers to book in intervals")
    open var DurationInterval:Int? = null

    /**
    * If the service must be payed with reservation cost
    */
    @ApiMember(Description="If the service must be payed with reservation cost")
    open var ShouldPayReservationCost:Boolean? = null

    /**
    * Setting if the service must be payed with full cost
    */
    @ApiMember(Description="Setting if the service must be payed with full cost")
    open var ShouldPayFullCost:Boolean? = null

    /**
    * The number of spots on the service
    */
    @ApiMember(Description="The number of spots on the service")
    open var TotalSpots:Int? = null

    /**
    * If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer.
    */
    @ApiMember(Description="If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer.")
    open var LockSpotsToBooking:Boolean? = null

    /**
    * Price view type
    */
    @ApiMember(Description="Price view type")
    open var PriceViewTypeId:Int? = null

    /**
    * Group booking settings
    */
    @ApiMember(Description="Group booking settings")
    open var GroupBooking:GroupBookingSettings? = null

    /**
    * Multiple resource booking settings
    */
    @ApiMember(Description="Multiple resource booking settings")
    open var MultipleResource:MultipleResourceSettings? = null

    /**
    * SortOrder
    */
    @ApiMember(Description="SortOrder")
    open var SortOrder:Int? = null

    /**
    * If the service only is bookable by admins
    */
    @ApiMember(Description="If the service only is bookable by admins")
    open var OnlyVisibleByAdmin:Boolean? = null

    /**
    * If payson payment should be enabled on the service
    */
    @ApiMember(Description="If payson payment should be enabled on the service")
    open var IsPaymentEnabled:Boolean? = null

    /**
    * Maximum numbers of minutes the booking payment must be completed before automatically umbooked
    */
    @ApiMember(Description="Maximum numbers of minutes the booking payment must be completed before automatically umbooked")
    open var MaxPaymentTime:Int? = null

    /**
    * The service image
    */
    @ApiMember(Description="The service image")
    open var ImageUrl:Uri? = null

    /**
    * The resourcetypes to be added
    */
    @ApiMember(Description="The resourcetypes to be added")
    open var ResourceTypes:ArrayList<AddResourceTypeService>? = null

    /**
    * The schedules to be added
    */
    @ApiMember(Description="The schedules to be added")
    open var Schedules:AddSchedulesToService? = null

    /**
    * If Custom Fields are added to the service, here you will send the id and the value for each custom field to be updated
    */
    @ApiMember(Description="If Custom Fields are added to the service, here you will send the id and the value for each custom field to be updated")
    open var CustomFields:ArrayList<AddCustomField>? = 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 AddResourceTypeService : ICompany
{
    /**
    * 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.")
    override var CompanyId:UUID? = null

    /**
    * The resourcetype id
    */
    @ApiMember(Description="The resourcetype id")
    open var Id:Int? = null

    /**
    * If the resources within the resourcetype should be selectable by customer when creating a booking
    */
    @ApiMember(Description="If the resources within the resourcetype should be selectable by customer when creating a booking")
    open var SelectableByUser:Boolean? = null
}

open class AddSchedulesToService
{
    /**
    * The schedule id
    */
    @ApiMember(Description="The schedule id")
    open var RecurringSchedules:ArrayList<ServiceSchedule>? = null

    open var DateSchedules:ArrayList<ServiceSchedule>? = null
}

open class ServiceSchedule
{
    /**
    * The schedule id
    */
    @ApiMember(Description="The schedule id")
    open var Id:Int? = null
}

open class AddCustomField
{
    open var Id:Int? = null
    open var Value:String? = null
}

open class ServiceQueryResponse
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = null
    open var ImageUrl:Uri? = null
    open var TotalSpots:Int? = null
    /**
    * If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer.
    */
    @ApiMember(Description="If this setting is turned on the remaining spots (if Totalspots > 1) is locked from be booked by another customer.")
    open var LockSpotsToBooking:Boolean? = null

    open var MinNumberOfSpotsPerBooking:Int? = null
    open var MaxNumberOfSpotsPerBooking:Int? = null
    open var MinNumberOfResourcesToBook:Int? = null
    open var MaxNumberOfResourcesToBook:Int? = null
    open var UnbookBeforeDays:Int? = null
    open var UnbookBeforeHours:Int? = null
    open var UnbookBeforeMinutes:Int? = null
    /**
    * What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2
    */
    @ApiMember(Description="What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2")
    open var ScheduleType:ScheduleType? = null

    /**
    * What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2
    */
    @ApiMember(Description="What type of schedule is connected to the service.  RecurringSchedule = 1, DateSchedule = 2")
    open var ScheduleTypeId:Int? = null

    open var BookBeforeDays:Int? = null
    open var BookBeforeHours:Int? = null
    open var BookBeforeMinutes:Int? = null
    open var Group:String? = null
    open var EnableBookingQueue:Boolean? = null
    open var EnableCodeLockSync:Boolean? = null
    open var EnableCustomerManualPayment:Boolean? = null
    open var SortOrder:Int? = null
    open var Active:Boolean? = null
    open var IsGroupBooking:Boolean? = null
    open var GroupBooking:GroupBookingSettings? = null
    open var MultipleResource:MultipleResourceSettings? = null
    open var IsPaymentEnabled:Boolean? = null
    /**
    * Maximum numbers of minutes the booking payment must be completed before automatically unbooked
    */
    @ApiMember(Description="Maximum numbers of minutes the booking payment must be completed before automatically unbooked")
    open var MaxPaymentTime:Int? = null

    /**
    * If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked.
    */
    @ApiMember(Description="If the booking should be either 1 = Booked) or 3 = Reserved. Default is 1 = Booked.")
    open var BookingStatusId:Int? = null

    open var OnlyVisibleByAdmin:Boolean? = null
    open var LengthInMinutes:Int? = null
    open var DurationTypeId:Int? = null
    open var Duration:Int? = null
    open var MinDuration:Int? = null
    open var MaxDuration:Int? = null
    open var DurationInterval:Int? = null
    open var PauseAfterBooking:Int? = null
    open var CustomFields:ArrayList<CustomFieldConfigData>? = null
    open var CustomFieldValues:ArrayList<CustomFieldDataResponse>? = null
    open var BookingCustomFields:ArrayList<CustomFieldConfigData>? = null
    open var CustomerCustomFields:ArrayList<CustomFieldConfigData>? = null
    /**
    * The booking status options to choose from
    */
    @ApiMember(Description="The booking status options to choose from")
    open var BookingStatusOptions:ArrayList<BookingStatusOptionsResponse>? = null

    open var Prices:ArrayList<ServicePriceResponse>? = null
    open var Schedules:ServiceSchedules? = null
    open var RatingSummary:CompanyRatingSummary? = null
    open var Reviews:ArrayList<RatingReviewResponse>? = null
    open var ResourceTypes:ArrayList<ServiceResourceTypeResponse>? = null
    open var ResponseStatus:ResponseStatus? = null
    open var PriceViewTypeId:Int? = null
}

enum class ScheduleType
{
    NotDefined,
    RecurringSchedule,
    DateSchedule,
}

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 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 BookingStatusOptionsResponse
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = null
}

open class ServicePriceResponse
{
    /**
    * The company id
    */
    @ApiMember(Description="The company id")
    open var CompanyId:UUID? = null

    /**
    * The price id
    */
    @ApiMember(Description="The price id")
    open var Id:Int? = null

    /**
    * The service id
    */
    @ApiMember(Description="The service id")
    open var ServiceId:Int? = null

    /**
    * The price
    */
    @ApiMember(Description="The price")
    open var Price:Double? = null

    /**
    * The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day
    */
    @ApiMember(Description="The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day")
    open var CalculationTypeId:Int? = 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 VAT in percent
    */
    @ApiMember(Description="The price VAT in percent")
    open var VAT:BigDecimal? = null

    /**
    * The price category if price has a category
    */
    @ApiMember(Description="The price category if price has a category")
    open var Category:String? = null

    /**
    * The price text to display
    */
    @ApiMember(Description="The price text to display")
    open var PriceText:String? = null

    /**
    * The valid from date for the price.
    */
    @ApiMember(Description="The valid from date for the price.")
    open var From:Date? = null

    /**
    * The valid to date for the price.
    */
    @ApiMember(Description="The valid to date for the price.")
    open var To:Date? = null

    /**
    * If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
    */
    @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
    open var DaysOfWeek:ArrayList<DayOfWeekDto>? = null

    /**
    * If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
    */
    @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
    open var FromTime:TimeSpan? = null

    /**
    * If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.
    */
    @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")
    open var ToTime:TimeSpan? = null

    open var Service:ServiceInfoResponse? = null
    /**
    * If the price is only valid for a specific time span
    */
    @ApiMember(Description="If the price is only valid for a specific time span")
    open var IsTimeSpecific:Boolean? = null

    /**
    * If the price is only valid for specific days of week
    */
    @ApiMember(Description="If the price is only valid for specific days of week")
    open var IsDaysOfWeekSpecific:Boolean? = null
}

open class DayOfWeekDto
{
    open var DayOfWeekId:Int? = null
    open var DotNetDayOfWeekId:Int? = null
    open var DayOfWeek:String? = 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 ServiceSchedules
{
    open var ScheduleType:ScheduleType? = null
    open var RecurringSchedules:ArrayList<ISchedule>? = null
    open var DateSchedules:ArrayList<ISchedule>? = null
}

interface ISchedule
{
    var CompanyId:UUID?
    var Resources:IList<Resource>?
    var Type:ScheduleType?
    var Active:Boolean?
    var IsResourceSpecific:Boolean?
}

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
}

open class BaseModel
{
}

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 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 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 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 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 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
}

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 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 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 BookingStatusOptions
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Description:String? = 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 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 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 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 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 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 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 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 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 CompanyRatingSummary
{
    /**
    * The average rating score
    */
    @ApiMember(Description="The average rating score")
    open var AverageScore:Double? = null

    /**
    * The number of ratings of score 1
    */
    @ApiMember(Description="The number of ratings of score 1")
    open var RatingScore1Count:Int? = null

    /**
    * The number of ratings of score 2
    */
    @ApiMember(Description="The number of ratings of score 2")
    open var RatingScore2Count:Int? = null

    /**
    * The number of ratings of score 3
    */
    @ApiMember(Description="The number of ratings of score 3")
    open var RatingScore3Count:Int? = null

    /**
    * The number of ratings of score 4
    */
    @ApiMember(Description="The number of ratings of score 4")
    open var RaingScore4Count:Int? = null

    /**
    * The number of ratings of score 5
    */
    @ApiMember(Description="The number of ratings of score 5")
    open var RatingScore5Count:Int? = null

    /**
    * The number of ratings
    */
    @ApiMember(Description="The number of ratings")
    open var Count:Int? = null
}

open class RatingReviewResponse
{
    /**
    * The title for the review
    */
    @ApiMember(Description="The title for the review")
    open var Title:String? = null

    /**
    * The description for the review
    */
    @ApiMember(Description="The description for the review")
    open var Description:String? = null

    /**
    * The rating score
    */
    @ApiMember(Description="The rating score")
    open var RatingScore:Int? = null

    /**
    * The review author
    */
    @ApiMember(Description="The review author")
    open var Author:String? = null

    /**
    * The created date
    */
    @ApiMember(Description="The created date")
    open var Created:Date? = null

    /**
    * The review answer from the company
    */
    @ApiMember(Description="The review answer from the company")
    open var ReviewAnswer:String? = null
}

open class ServiceResourceTypeResponse
{
    /**
    * The resourcetype id
    */
    @ApiMember(Description="The resourcetype id")
    open var Id:Int? = null

    /**
    * The resourcetype is selectable by customer
    */
    @ApiMember(Description="The resourcetype is selectable by customer")
    open var SelectableByUser:Boolean? = null

    /**
    * The resourcetype name
    */
    @ApiMember(Description="The resourcetype name")
    open var Name:String? = null

    /**
    * The resourcetype description
    */
    @ApiMember(Description="The resourcetype description")
    open var Description:String? = null

    /**
    * The resources in the resourcetype. Only shows active resources if not admin.
    */
    @ApiMember(Description="The resources in the resourcetype. Only shows active resources if not admin.")
    open var Resources:ArrayList<ServiceResourceTypeResource>? = null
}

open class ServiceResourceTypeResource
{
    /**
    * The resource id
    */
    @ApiMember(Description="The resource id")
    open var Id:Int? = null

    /**
    * The resource name
    */
    @ApiMember(Description="The resource name")
    open var Name:String? = null

    /**
    * The resource description
    */
    @ApiMember(Description="The resource description")
    open var Description:String? = null

    /**
    * The resource email
    */
    @ApiMember(Description="The resource email")
    open var Email:String? = null

    /**
    * The resource phone
    */
    @ApiMember(Description="The resource phone")
    open var Phone:String? = null

    /**
    * The resource color
    */
    @ApiMember(Description="The resource color")
    open var Color:String? = null

    /**
    * The resource image
    */
    @ApiMember(Description="The resource image")
    open var ImageUrl:Uri? = null

    /**
    * The priority of the resource
    */
    @ApiMember(Description="The priority of the resource")
    open var Priority:Int? = null

    /**
    * If the resource want to receive email notifications
    */
    @ApiMember(Description="If the resource want to receive email notifications")
    open var EmailNotification:Boolean? = null

    /**
    * If the resource want to receive sms notifications
    */
    @ApiMember(Description="If the resource want to receive sms notifications")
    open var SMSNotification:Boolean? = null

    /**
    * If the resource want to receive email reminders
    */
    @ApiMember(Description="If the resource want to receive email reminders")
    open var EmailReminder:Boolean? = null

    /**
    * If the resource want to receive sms reminders
    */
    @ApiMember(Description="If the resource want to receive sms reminders")
    open var SMSReminder:Boolean? = null
}

Kotlin UpdateService 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.

PUT /services/{Id} HTTP/1.1 
Host: api.bookmore.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"CompanyId":"00000000-0000-0000-0000-000000000000","Id":0,"Name":"String","Description":"String","Group":"String","Active":false,"DurationTypeId":0,"BookingStatusId":0,"PauseAfterBooking":0,"UnbookBeforeDays":0,"UnbookBeforeHours":0,"UnbookBeforeMinutes":0,"BookBeforeDays":0,"EnableBookingQueue":false,"EnableCodeLockSync":false,"EnableCustomerManualPayment":false,"BookBeforeHours":0,"BookBeforeMinutes":0,"Duration":0,"MinDuration":0,"MaxDuration":0,"DurationInterval":0,"ShouldPayReservationCost":false,"ShouldPayFullCost":false,"TotalSpots":0,"LockSpotsToBooking":false,"PriceViewTypeId":0,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"SortOrder":0,"OnlyVisibleByAdmin":false,"IsPaymentEnabled":false,"MaxPaymentTime":0,"ResourceTypes":[{"CompanyId":"00000000-0000-0000-0000-000000000000","Id":0,"SelectableByUser":false}],"Schedules":{"RecurringSchedules":[{"Id":0}],"DateSchedules":[{"Id":0}]},"CustomFields":[{"Id":0,"Value":"String"}]}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Id":0,"Name":"String","Description":"String","TotalSpots":0,"LockSpotsToBooking":false,"MinNumberOfSpotsPerBooking":0,"MaxNumberOfSpotsPerBooking":0,"MinNumberOfResourcesToBook":0,"MaxNumberOfResourcesToBook":0,"UnbookBeforeDays":0,"UnbookBeforeHours":0,"UnbookBeforeMinutes":0,"ScheduleType":"NotDefined","ScheduleTypeId":0,"BookBeforeDays":0,"BookBeforeHours":0,"BookBeforeMinutes":0,"Group":"String","EnableBookingQueue":false,"EnableCodeLockSync":false,"EnableCustomerManualPayment":false,"SortOrder":0,"Active":false,"IsGroupBooking":false,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"IsPaymentEnabled":false,"MaxPaymentTime":0,"BookingStatusId":0,"OnlyVisibleByAdmin":false,"LengthInMinutes":0,"DurationTypeId":0,"Duration":0,"MinDuration":0,"MaxDuration":0,"DurationInterval":0,"PauseAfterBooking":0,"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"}],"BookingCustomFields":[{"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"}]}],"CustomerCustomFields":[{"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"}]}],"BookingStatusOptions":[{"Id":0,"Name":"String","Description":"String"}],"Prices":[{"Id":0,"ServiceId":0,"Price":0,"CalculationTypeId":0,"CurrencyId":"String","PriceSign":"String","VAT":0,"Category":"String","PriceText":"String","DaysOfWeek":[{"DayOfWeekId":0,"DotNetDayOfWeekId":0,"DayOfWeek":"String"}],"FromTime":"00:00:00","ToTime":"00:00:00","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},"IsTimeSpecific":false,"IsDaysOfWeekSpecific":false}],"Schedules":{"ScheduleType":"NotDefined","RecurringSchedules":[{}],"DateSchedules":[{}]},"RatingSummary":{"AverageScore":0,"RatingScore1Count":0,"RatingScore2Count":0,"RatingScore3Count":0,"RaingScore4Count":0,"RatingScore5Count":0,"Count":0},"Reviews":[{"Title":"String","Description":"String","RatingScore":0,"Author":"String","ReviewAnswer":"String"}],"ResourceTypes":[{"Id":0,"SelectableByUser":false,"Name":"String","Description":"String","Resources":[{"Id":0,"Name":"String","Description":"String","Email":"String","Phone":"String","Color":"String","Priority":0,"EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}]}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"PriceViewTypeId":0}