BokaMera.API.Host

<back to all web services

ResourceTypeQuery

Requires Authentication
The following routes are available for this service:
GET/resourcetypesFind resourcetypes.
import java.math.*
import java.util.*
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
@ValidateRequest(Validator="IsAuthenticated")
open class ResourceTypeQuery : QueryDb<ResourceType, ResourceTypeQueryResponse>()
{
    /**
    * Enter the company and id you want to see the information for a resourcetype, if blank company id and you are an admin, your company id will be used. If blank id, all resources will be shown 
    */
    @ApiMember(Description="Enter the company and id you want to see the information for a resourcetype, if blank company id and you are an admin, your company id will be used. If blank id, all resources will be shown ", IsRequired=true, ParameterType="query")
    var CompanyId:UUID? = null

    /**
    * Enter the id for a resourcetype. If blank id, all resourctypes will be shown 
    */
    @ApiMember(Description="Enter the id for a resourcetype. If blank id, all resourctypes will be shown ", ParameterType="query")
    var Id:Int? = null

    /**
    * Filter on active or deactivated resourcetypes. If blank status, all resourctypes will be shown 
    */
    @ApiMember(Description="Filter on active or deactivated resourcetypes. If blank status, all resourctypes will be shown ", ParameterType="query")
    var Active:Boolean? = null

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

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

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

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

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

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

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

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

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

open class ResourceType : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    var SelectableByUser:Boolean? = null

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

    @Required()
    var CompanyId:UUID? = null

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

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

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    var ModifiedDate:Date? = null
}

open class BaseModel
{
}

open class Resource : BaseModel(), ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    var Priority:Int? = null

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

    @Ignore()
    var Exceptions:IList<ITimeException>? = null

    @Ignore()
    var Bookings:IList<IBookedTime>? = null

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

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

    @Required()
    var CompanyId:UUID? = null

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

    @Required()
    var Active:Boolean? = null

    var Description:String? = null
    var ImageUrl:String? = null
    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    @Required()
    var Color:String? = null

    var Email:String? = null
    var MobilePhone:String? = null
    var EmailNotification:Boolean? = null
    var SMSNotification:Boolean? = null
    @Required()
    var SendSMSReminder:Boolean? = null

    @Required()
    var SendEmailReminder:Boolean? = null

    var ModifiedDate:Date? = null
    var AccessGroup:String? = null
    var TextField1:String? = null
    var TextField2:String? = null
    var TextField3:String? = null
    var TextField4:String? = null
    var TextField5:String? = null
    var TextField6:String? = null
    var TextField7:String? = null
    var TextField8:String? = null
    var TextField9:String? = null
    var TextField10:String? = null
    var TextField11:String? = null
    var TextField12:String? = null
    var TextField13:String? = null
    var TextField14:String? = null
    var TextField15:String? = null
    var TextField16:String? = null
    var TextField17:String? = null
    var TextField18:String? = null
    var TextField19:String? = null
    var TextField20:String? = null
}

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

enum class ScheduleType
{
    NotDefined,
    RecurringSchedule,
    DateSchedule,
}

open interface ITimeException : IInterval
{
    var Id:Int?
    var ReasonText:String?
    var IsBlock:Boolean?
    var ReasonTextPublic:String?
    var IsRecurring:Boolean?
    var ResourceIds:ArrayList<Int>?
}

open 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
{
    var Id:UUID? = null
    var Firstname:String? = null
    var Lastname:String? = null
    var Email:String? = null
    var Phone:String? = null
    var FacebookUserName:String? = null
    var ImageUrl:String? = null
    var CorporateIdentityNumber:String? = null
    var InvoiceAddress1:String? = null
    var InvoiceAddress2:String? = null
    var InvoiceCity:String? = null
    var InvoicePostalCode:String? = null
    var InvoiceCountryCode:String? = null
}

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

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

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

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

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

    @Required()
    var IconId:Int? = null

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

    @Required()
    var Description:String? = null

    @Required()
    var Datatype:String? = null

    @Required()
    var MaxLength:Int? = null

    @Required()
    var IsPublic:Boolean? = null

    @Required()
    var IsHidden:Boolean? = null

    @Required()
    var IsMandatory:Boolean? = null

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

    var ModifiedDate:Date? = null
}

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

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

    @Required()
    var Active:Boolean? = null

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

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

    @Required()
    var Column:String? = null

    @Required()
    var DataType:String? = null

    @Required()
    var Description:String? = null

    @Required()
    var Active:Boolean? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var RegExCode:String? = null

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

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

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

    @Ignore()
    var TotalPrice:TotalPriceInformation? = null

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

    @Ignore()
    var BookingStatusOptions:ArrayList<BookingStatusOptions> = ArrayList<BookingStatusOptions>()

    @Ignore()
    var IsGroupBooking:Boolean? = null

    @Ignore()
    var IsMultipleResource:Boolean? = null

    @Ignore()
    var Settings:BookingSettings? = null

    @Ignore()
    var PaymentSetting:PaymentSetting? = null

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

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

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

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

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

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

    @Ignore()
    var ScheduleType:ScheduleType? = null

    @Ignore()
    var LastTimeToUnbookThreshold:TimeSpan? = null

    @Ignore()
    var LastTimeToBookThreshold:TimeSpan? = null

    @Ignore()
    var RatingScore:AverageRatingScore? = null

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

    @Required()
    var CompanyId:UUID? = null

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

    @Required()
    var Description:String? = null

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

    @Required()
    var SortOrder:Int? = null

    @Required()
    var PauseAfterBooking:Int? = null

    @Required()
    var UnbookBeforeDays:Int? = null

    @Required()
    var UnbookBeforeHours:Int? = null

    @Required()
    var UnbookBeforeMinutes:Int? = null

    @Required()
    var BookBeforeDays:Int? = null

    @Required()
    var BookBeforeHours:Int? = null

    @Required()
    var BookBeforeMinutes:Int? = null

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

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    @Required()
    var OnlyVisibleByAdmin:Boolean? = null

    @Required()
    var MinNumberOfSpotsPerBooking:Int? = null

    @Required()
    var MaxNumberOfSpotsPerBooking:Int? = null

    @Required()
    var MinNumberOfResourcesToBook:Int? = null

    @Required()
    var MaxNumberOfResourcesToBook:Int? = null

    @Required()
    var IsPaymentEnabled:Boolean? = null

    @Required()
    var MaxPaymentTime:Int? = null

    @Required()
    var LockSpotsToBooking:Boolean? = null

    @Required()
    var EnableBookingQueue:Boolean? = null

    var ModifiedDate:Date? = null
    @Required()
    var BookingStatusId:Int? = null

    @Required()
    var EnableCodeLockSync:Boolean? = null

    @Required()
    var EnableCustomerManualPayment:Boolean? = null

    var PriceViewTypeId:Int? = null
    var TextField1:String? = null
    var TextField2:String? = null
    var TextField3:String? = null
    var TextField4:String? = null
    var TextField5:String? = null
    var TextField6:String? = null
    var TextField7:String? = null
    var TextField8:String? = null
    var TextField9:String? = null
    var TextField10:String? = null
    var TextField11:String? = null
    var TextField12:String? = null
    var TextField13:String? = null
    var TextField14:String? = null
    var TextField15:String? = null
    var TextField16:String? = null
    var TextField17:String? = null
    var TextField18:String? = null
    var TextField19:String? = null
    var TextField20:String? = null
}

open class TotalPriceInformation
{
    var TotalPrice:Double? = null
    var TotalVATAmount:Double? = null
    var TotalRebate:Double? = null
    var TotalPriceBeforeRebate:Double? = null
    var AppliedCodes:ArrayList<AppliedRebateCodes> = ArrayList<AppliedRebateCodes>()
    var PriceSign:String? = null
    var CurrencyId:String? = null
    var VAT:BigDecimal? = null
}

open class AppliedRebateCodes
{
    var RebateCodeId:Int? = null
    var RebateCodeSign:String? = null
    var RebateCodeValue:Int? = null
    var RebateAmount:Double? = null
    var RebateCodeType:RebateCodeType? = null
}

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

    var Description:String? = null
    var ModifiedDate:Date? = null
    var Id:Int? = null
}

open class ServicePrice : BaseModel(), IInterval
{
    @References(Currency.class)
    var CurrencyId:String? = null

    var CurrencyInfo:Currency? = null
    @Ignore()
    var Service:Service? = null

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

    @Ignore()
    var isTimeSpecific:Boolean? = null

    @Ignore()
    var isDaysOfWeekSpecific:Boolean? = null

    var DayOfWeeks:ArrayList<ServicePriceDayOfWeekRelation> = ArrayList<ServicePriceDayOfWeekRelation>()
    @Ignore()
    var PriceBeforeRebate:Double? = null

    @Ignore()
    var RebateCodesApplied:ArrayList<RebateCode> = ArrayList<RebateCode>()

    @Ignore()
    var PriceText:String? = null

    @Ignore()
    var OverlappingPrices:ArrayList<ServicePrice> = ArrayList<ServicePrice>()

    @Required()
    var CompanyId:UUID? = null

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

    var Price:Double? = null
    @Required()
    var Updated:Date? = null

    @Required()
    var Created:Date? = null

    @Required()
    var FromTime:TimeSpan? = null

    @Required()
    var ToTime:TimeSpan? = null

    @Required()
    var VAT:BigDecimal? = null

    var Category:String? = null
    var ModifiedDate:Date? = null
    @Required()
    var From:Date? = null

    @Required()
    var To:Date? = null

    @Required()
    var CalculationTypeId:Int? = null
}

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

    @Required()
    var CurrencySign:String? = null

    @Required()
    var Active:Boolean? = null

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

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

    @Required()
    var Id:UUID? = null

    @Required()
    var PriceId:Int? = null

    var ReferenceType:String? = null
    var ExternalReference:String? = null
    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    var ModifiedDate:Date? = null
}

open class ServicePriceDayOfWeekRelation : BaseModel()
{
    @Ignore()
    var DayOfWeek:BokaMeraDayOfWeek? = null

    @Required()
    var CompanyId:UUID? = null

    @Required()
    var ServicePriceId:Int? = null

    @Required()
    var DayOfWeekId:Int? = null

    var ModifiedDate:Date? = null
    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(RebateCodeType.class)
    var RebateCodeTypeId:Int? = null

    var RebateCodeTypeInfo:RebateCodeType? = null
    @References(RebateCodeStatus.class)
    var RebateCodeStatusId:Int? = null

    var RebateCodeStatusInfo:RebateCodeStatus? = null
    @Ignore()
    var Article:Article? = null

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

    var RebateCodeDayOfWeekRelation:ArrayList<RebateCodeDayOfWeekRelation> = ArrayList<RebateCodeDayOfWeekRelation>()
    var RebateCodeServiceRelation:ArrayList<RebateCodeServiceRelation> = ArrayList<RebateCodeServiceRelation>()
    var RebateCodeBookingPriceRelation:ArrayList<RebateCodeBookingPriceRelation> = ArrayList<RebateCodeBookingPriceRelation>()
    var RebateCodeCustomerRelation:ArrayList<RebateCodeCustomerRelation> = ArrayList<RebateCodeCustomerRelation>()
    @Ignore()
    var ServicesNames:String? = null

    @Ignore()
    var DaysOfWeek:ArrayList<DaysOfWeek> = ArrayList<DaysOfWeek>()

    @Ignore()
    var RebateCodeStatus:RebateCodeStatus? = null

    @Ignore()
    var RebateCodeType:RebateCodeType? = null

    @Ignore()
    var Transactions:ArrayList<RebateCodeTransaction> = ArrayList<RebateCodeTransaction>()

    @Ignore()
    var RemainingAmount:Double? = null

    @Ignore()
    var RemainingUsage:Int? = null

    @Ignore()
    var CurrentNumberOfUsesPerCustomer:Int? = null

    @Ignore()
    var IsSpecificByDayOfWeek:Boolean? = null

    @Ignore()
    var Active:Boolean? = null

    @Ignore()
    var ActiveByStatus:Boolean? = null

    @Ignore()
    var RebateCodeCurrencySign:String? = null

    var CurrencyInfo:Currency? = null
    @Ignore()
    var PaymentReceived:Boolean? = null

    @Ignore()
    var InternalReferenceId:String? = null

    @Required()
    var ValidFrom:Date? = null

    @Required()
    var ValidTo:Date? = null

    @Required()
    var RebateCodeSign:String? = null

    @Required()
    var RebateCodeValue:Int? = null

    @Required()
    var MaxNumberOfUses:Int? = null

    @Required()
    var MaxNumberOfUsesPerCustomer:Int? = null

    @Required()
    var NumberOfUsesUsed:Int? = null

    var PersonalNote:String? = null
    @Required()
    var CreatedBy:String? = null

    @Required()
    var Created:Date? = null

    @Required()
    var UpdatedBy:String? = null

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var FromTime:TimeSpan? = null

    @Required()
    var ToTime:TimeSpan? = null

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

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

    @Ignore()
    var QvicklyPaymentManager:IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCheckoutResponse, QvicklyPaymentResponse>? = null

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

    @Ignore()
    var StripePaymentManager:IBokameraPaymentManager<SessionCreateOptions, CustomSessionData, CustomSessionData>? = null

    @Ignore()
    var PaysonPaymentCheckout1:IPaysonPaymentCheckout1? = null

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

    @Ignore()
    var InternalReferenceId:String? = null

    @Ignore()
    var PaymentLog:ArrayList<PaymentLog> = ArrayList<PaymentLog>()

    var CompanyId:UUID? = null
    var PriceVat:BigDecimal? = null
    @References(Currency.class)
    var CurrencyId:String? = null

    @Ignore()
    var Customer:Customer? = null

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

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

open interface IDbConnectionFactory
{
}

open interface IBokameraPaymentManager<TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse>
{
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

enum class CustomerType
{
    Person,
    Business,
}

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

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

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

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

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

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

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

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

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

open class BaseOptions : INestedOptions
{
    var Expand:ArrayList<String> = ArrayList<String>()
    var ExtraParams:HashMap<String,Object> = HashMap<String,Object>()
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open class SessionPaymentMethodOptionsCardOptions : INestedOptions
{
    var Installments:SessionPaymentMethodOptionsCardInstallmentsOptions? = null
    var RequestThreeDSecure:String? = null
    var SetupFutureUsage:String? = null
    var StatementDescriptorSuffixKana:String? = null
    var StatementDescriptorSuffixKanji:String? = null
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions : INestedOptions
{
    var Permissions:ArrayList<String> = ArrayList<String>()
    var Prefetch:ArrayList<String> = ArrayList<String>()
}

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

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

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

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

open class SessionShippingAddressCollectionOptions : INestedOptions
{
    var AllowedCountries:ArrayList<String> = ArrayList<String>()
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open class StripeEntity : IStripeEntity
{
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open class SessionPaymentMethodOptionsCard : StripeEntity_1<SessionPaymentMethodOptionsCard>()
{
    var Installments:SessionPaymentMethodOptionsCardInstallments? = null
    var RequestThreeDSecure:String? = null
    var SetupFutureUsage:String? = null
    var StatementDescriptorSuffixKana:String? = null
    var StatementDescriptorSuffixKanji:String? = null
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open interface IPaysonPaymentCheckout1
{
}

open interface ILogger<TCategoryName> : ILogger
{
}

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

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

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

    @Required()
    var ArticleTypeId:Int? = null

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

    @Required()
    var Updated:Date? = null

    var ModifiedDate:Date? = null
}

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

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

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

    @Ignore()
    var Company:Company? = null

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

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

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

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

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

    @Ignore()
    var ImageUrl:String? = null

    @Required()
    var Active:Boolean? = null

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

    @Required()
    var Created:Date? = null

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

    var SubscribedToNewsletter:Boolean? = null
}

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

    @Required()
    var AccessKeyTypeId:Int? = null

    @Required()
    var Value:String? = null

    @Required()
    var CustomerId:UUID? = null

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

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

    @Required()
    var Id:UUID? = null

    @Required()
    var OwnerId:UUID? = null

    @Required()
    var ReferenceType:String? = null

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

    @Required()
    var Created:Date? = null

    var ModifiedDate:Date? = null
}

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

    @Ignore()
    var Active:Boolean? = null

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

    @Ignore()
    var BookingAgreements:String? = null

    @Ignore()
    var BookingSettings:BookingSettings? = null

    @Ignore()
    var CompanyType:CompanyType? = null

    @Ignore()
    var CodeLockSettings:CodeLockSetting? = null

    @Ignore()
    var PaymentSettings:PaymentSetting? = null

    @Ignore()
    var Settings:CompanySetting? = null

    @Ignore()
    var WidgetSettings:HomepageWidgetSetting? = null

    @Ignore()
    var HomepageSettings:HomepageSetting? = null

    @Ignore()
    var RatingScore:AverageRatingScore? = null

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

    @Ignore()
    var Distance:Double? = null

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

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

    @Ignore()
    var CurrentLicense:License? = null

    @Ignore()
    var IsFreeAccount:Boolean? = null

    @Ignore()
    var DefaultLanguage:CultureInfo? = null

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

    @Ignore()
    var Lon:Double? = null

    @Ignore()
    var IsFavorite:Boolean? = null

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

    @Required()
    var OrganisationNumber:String? = null

    @Required()
    var StatusId:Int? = null

    @Required()
    var CategoryId:Int? = null

    @Required()
    var SitePath:String? = null

    @Required()
    var Name:String? = null

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

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

    @Required()
    var Updated:Date? = null

    @Required()
    var Created:Date? = null

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

    @Required()
    var CompanyOwnerId:Int? = null

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

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

open class BookingSettings : BaseModel()
{
    @References(FreeSpotTexts.class)
    var FreeSpotTextsId:Int? = null

    @Ignore()
    var SendEmailConfirmation:Boolean? = null

    @Ignore()
    var ScheduleViewOptions:ArrayList<ScheduleView> = ArrayList<ScheduleView>()

    @Ignore()
    var WeekNumberSettingOptions:ArrayList<WeekNumberSetting> = ArrayList<WeekNumberSetting>()

    @Ignore()
    var BookingTemplateOptions:ArrayList<BookingTemplate> = ArrayList<BookingTemplate>()

    @Ignore()
    var CalendarTypeOptions:ArrayList<CalendarType> = ArrayList<CalendarType>()

    @Ignore()
    var FreeSpotTextOptions:ArrayList<FreeSpotTexts> = ArrayList<FreeSpotTexts>()

    @Ignore()
    var BookingStatusOptions:ArrayList<BookingStatusOptions> = ArrayList<BookingStatusOptions>()

    var FreeSpotTextsInfo:FreeSpotTexts? = null
    @Ignore()
    var FreeSpotsTextSingular:String? = null

    @Ignore()
    var FreeSpotsTextPlural:String? = null

    @Required()
    var BookingStatusId:Int? = null

    @Required()
    var ScheduleViewId:Int? = null

    @Required()
    var BookingTemplateId:Int? = null

    @Required()
    var CalendarTypeId:Int? = null

    @Required()
    var AllowBookingOnUnbookedTimes:Boolean? = null

    @Required()
    var SendEmailReminder:Boolean? = null

    @Required()
    var SendSmsReminder:Boolean? = null

    @Required()
    var SendSmsConfirmation:Boolean? = null

    @Required()
    var EmailReminderTime:Int? = null

    @Required()
    var SmsReminderTime:Int? = null

    @Required()
    var MaxActiveBookings:Int? = null

    @Required()
    var SendNotifications:Boolean? = null

    var SendNotificationsEmail:String? = null
    @Required()
    var EnableMobileApp:Boolean? = null

    var ScheduleStartTime:TimeSpan? = null
    var ScheduleEndTime:TimeSpan? = null
    var ReceiptTemplate:String? = null
    @Required()
    var ScheduleTimeSlotMinutes:Int? = null

    @Required()
    var ShowFreeTimesLeft:Boolean? = null

    @Required()
    var EnableICalGroupBookings:Boolean? = null

    var AgreementTemplate:String? = null
    @Required()
    var ScheduleShowTimeExeptions:Boolean? = null

    @Required()
    var EnableBookingsOnSameTime:Boolean? = null

    @Required()
    var ShowWeekNumberSettingId:Int? = null

    @Required()
    var EnableShowBookedTimes:Boolean? = null

    @Required()
    var EnableSendFollowUpMessage:Boolean? = null

    @Required()
    var FollowUpMessageTime:Int? = null

    var MessageText:String? = null
    @Required()
    var ScheduleGroupResources:Boolean? = null

    @Required()
    var BookSpotUserResponseMinutes:Int? = null

    @Required()
    var IsBookSpotDirectly:Boolean? = null

    @Required()
    var BookSpotDirectlyTimeLeftMinutes:Int? = null

    @Required()
    var SendEmailNotificationQueue:Boolean? = null

    @Required()
    var SendSMSNotificationQueue:Boolean? = null

    @Required()
    var SchedulerDisableHorizontalScrolling:Boolean? = null

    @Required()
    var BookOnlyOnExistingCustomers:Boolean? = null

    @Required()
    var AutoGenerateUniquePinCode:Boolean? = null

    @Required()
    var WeightedPrices:Boolean? = null

    var ModifiedDate:Date? = null
    @Required()
    var AutoCreateUserProfile:Boolean? = null

    var ShowMultipleResourcesAsOne:Boolean? = null
    var ShowMultiDayAsTime:Boolean? = null
    @Required()
    var Id:UUID? = null
}

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

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

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

    @Required()
    var Description:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var UsedByApplication:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Active:Boolean? = null

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

open class FreeSpotTexts : BaseModel()
{
    @Required()
    var TextSingular:String? = null

    @Required()
    var TextPlural:String? = null

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

open class BookingStatusOptions
{
    var Id:Int? = null
    var Name:String? = null
    var Description:String? = null
}

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

    @Required()
    var Description:String? = null

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

open class CodeLockSetting : BaseModel()
{
    @Ignore()
    var CodeLockSystemOptions:ArrayList<CodeLockSystem> = ArrayList<CodeLockSystem>()

    @Required()
    var Active:Boolean? = null

    @Required()
    var CodeLockSystemsId:Int? = null

    @Required()
    var ValidBeforeMinutes:Int? = null

    @Required()
    var ValidAfterMinutes:Int? = null

    @Required()
    var DeleteOldBySchedule:Boolean? = null

    @Required()
    var Created:Date? = null

    @Required()
    var Updated:Date? = null

    var ModifiedDate:Date? = null
    @Required()
    var SendEmailNotification:Boolean? = null

    @Required()
    var SendSMSNotification:Boolean? = null

    @Required()
    var EmailNotificationTime:Short? = null

    @Required()
    var SMSNotificationTime:Short? = null

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

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

    @Required()
    var Supplier:String? = null

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

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

open class PaymentSetting : BaseModel()
{
    var AdminPaymentOption:AdminPaymentOptions? = null
    @Ignore()
    var AdminPaymentOptions:ArrayList<AdminPaymentOptions> = ArrayList<AdminPaymentOptions>()

    @Ignore()
    var PaymentProviderOptions:ArrayList<PaymentProviders> = ArrayList<PaymentProviders>()

    @Required()
    var Enabled:Boolean? = null

    @Required()
    var InvoiceFee:Int? = null

    @Required()
    var AllowCreditCardPayment:Boolean? = null

    @Required()
    var AllowInvoicePayment:Boolean? = null

    @Required()
    var AllowBankPayment:Boolean? = null

    @Required()
    var GuaranteeOffered:Boolean? = null

    @Required()
    var RefundOnCancelBooking:Boolean? = null

    var DefaultPaymentOptionId:Int? = null
    @Required()
    var PaymentProviderId:Int? = null

    @Required()
    var SendPaymentRequestDirectly:Boolean? = null

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

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

    @Required()
    var Description:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Category:String? = null

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

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

open class CompanySetting : BaseModel()
{
    @Ignore()
    var Languages:ArrayList<LanguageResponse> = ArrayList<LanguageResponse>()

    @Required()
    var Active:Boolean? = null

    var InactiveMessage:String? = null
    @Required()
    var Searchable:Boolean? = null

    var GATrackingId:String? = null
    var FacebookPixelId:String? = null
    @Required()
    var MultiLanguage:Boolean? = null

    @Required()
    var EnableAPITranslation:Boolean? = null

    @Required()
    var DefaultLanguage:String? = null

    var ModifiedDate:Date? = null
    var GTMTrackingId:String? = null
    @Required()
    var ShowOnMarketPlace:Boolean? = null

    var GoogleAdsConversionId:String? = null
    var LinkedinTagId:String? = null
    var GoogleAdsConversionLabel:String? = null
    var SendCustomerInformationToExternalProviders:Boolean? = null
    @Required()
    var Id:UUID? = null
}

open class LanguageResponse
{
    var Id:String? = null
    var Name:String? = null
}

open class HomepageWidgetSetting : BaseModel()
{
    @Ignore()
    var WidgetServiceLayoutOptions:ArrayList<WidgetServiceLayouts> = ArrayList<WidgetServiceLayouts>()

    @Ignore()
    var WidgetTimeLayoutOptions:ArrayList<WidgetTimeLayouts> = ArrayList<WidgetTimeLayouts>()

    @Ignore()
    var WidgetBookingLayoutOptions:ArrayList<WidgetBookingLayouts> = ArrayList<WidgetBookingLayouts>()

    @Ignore()
    var WidgetBookingMethodOptions:ArrayList<WidgetBookingMethods> = ArrayList<WidgetBookingMethods>()

    @Required()
    var ServiceLayoutId:Int? = null

    @Required()
    var TimeLayoutId:Int? = null

    @Required()
    var BookingLayoutId:Int? = null

    @Required()
    var PrimaryColor:String? = null

    @Required()
    var ShowServiceImage:Boolean? = null

    @Required()
    var ShowNextAvailableTime:Boolean? = null

    @Required()
    var ShowEndTime:Boolean? = null

    var BookedTimeSlotText:String? = null
    @Required()
    var DarkTheme:Boolean? = null

    @Required()
    var ShowRebateCodeField:Boolean? = null

    var ModifiedDate:Date? = null
    @Required()
    var EnableCreateAccount:Boolean? = null

    @Required()
    var EnableLogin:Boolean? = null

    @Required()
    var EnableDirectBooking:Boolean? = null

    @Required()
    var EnableFacebookLogin:Boolean? = null

    @Required()
    var ShowSubscribeToNewsletter:Boolean? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Code:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Code:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Code:String? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Code:String? = null

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

open class HomepageSetting : BaseModel(), ICompany
{
    @Ignore()
    var HomepageTemplateOptions:ArrayList<HomepageTemplate> = ArrayList<HomepageTemplate>()

    @Ignore()
    var HomepageHeroSectionStyleOptions:ArrayList<HeroSectionStyle> = ArrayList<HeroSectionStyle>()

    @Ignore()
    var CompanyId:UUID? = null

    var WelcomePageHeading:String? = null
    var WelcomePageBody:String? = null
    var AboutUsPageHeading:String? = null
    var AboutUsPageBody:String? = null
    @Required()
    var HomePageTemplateId:Int? = null

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

    @Required()
    var Created:Date? = null

    var HomepageHeading:String? = null
    @Required()
    var HeroSectionStyleId:Int? = null

    var ModifiedDate:Date? = null
    @Required()
    var ShowRating:Boolean? = null

    @Required()
    var EnableHomepage:Boolean? = null

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

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

    @Required()
    var Description:String? = null

    var ImageUrl:Uri? = null
    @Required()
    var Premium:Boolean? = null

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

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

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

open class AverageRatingScore
{
    var AverageScore:Double? = null
    var Score1Count:Int? = null
    var Score2Count:Int? = null
    var Score3Count:Int? = null
    var Score4Count:Int? = null
    var Score5Count:Int? = null
    var Count:Int? = null
}

open class Rating : BaseModel()
{
    var ReviewId:UUID? = null
    var Review:Review? = null
    @Required()
    var CompanyId:UUID? = null

    @Required()
    var BookingId:Int? = null

    @Required()
    var RatingScore:Int? = null

    @Required()
    var Status:Int? = null

    @Required()
    var Created:Date? = null

    @Required()
    var Updated:Date? = null

    var ModifiedDate:Date? = null
}

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

    @Required()
    var Title:String? = null

    @Required()
    var Description:String? = null

    @Required()
    var Author:String? = null

    @Required()
    var Status:Int? = null

    @Required()
    var Created:Date? = null

    @Required()
    var Updated:Date? = null

    var ModifiedDate:Date? = null
    var ReviewAnswer:String? = null
}

open class License : BaseModel()
{
    var Type:LicenseType? = null
    @Required()
    var CompanyId:UUID? = null

    var Id:Int? = null
    @Required()
    var TypeId:Int? = null

    @Required()
    var ValidFrom:Date? = null

    @Required()
    var ValidTo:Date? = null

    @Required()
    var Active:Boolean? = null

    @Required()
    var Updated:Date? = null

    @Required()
    var Created:Date? = null

    var ModifiedDate:Date? = null
    var MetaData:String? = null
}

open class LicenseType : BaseModel()
{
    @Ignore()
    var LicenseItems:IList<LicenseTypeItem>? = null

    @Ignore()
    var Prices:IList<LicensePrice>? = null

    @Ignore()
    var PeriodOfNoticeDays:Int? = null

    @Ignore()
    var NextLicenseOption:LicenseType? = null

    @Required()
    var Name:String? = null

    @Required()
    var Description:String? = null

    @Required()
    var ExtraLicenseOption:Boolean? = null

    var ModifiedDate:Date? = null
    var Active:Boolean? = null
    var Id:Int? = null
}

open class LicenseTypeItem : BaseModel()
{
    @Ignore()
    var Name:String? = null

    @Ignore()
    var LicenseType:LicenseType? = null

    @Required()
    var LicenseTypesId:Int? = null

    @Required()
    var LicenseItemsId:Int? = null

    @Required()
    var NumberOfItems:Int? = null

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

open class LicensePrice : BaseModel()
{
    @Ignore()
    var Country:Country? = null

    @Ignore()
    var MonthlyPayment:Boolean? = null

    @Required()
    var LicenseTypeId:Int? = null

    @Required()
    var CountryId:String? = null

    @Required()
    var Price:Int? = null

    var ModifiedDate:Date? = null
}

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

    var CurrencyInfo:Currency? = null
    @Required()
    var Name:String? = null

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

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

    @Required()
    var Header:String? = null

    @Required()
    var Description:String? = null

    var ImageUrl:Uri? = null
    @Required()
    var Active:Boolean? = null

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

open class CustomFieldDataResponse
{
    var Id:Int? = null
    var Column:String? = null
    var Name:String? = null
    var Description:String? = null
    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'")
    var DataType:String? = null
}

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

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

    @Required()
    var Comments:String? = null

    @Required()
    var Updated:Date? = null

    @Required()
    var Created:Date? = null

    var ImageUrl:String? = null
    var ModifiedDate:Date? = null
}

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

    var Description:String? = null
    var ModifiedDate:Date? = null
    var Id:Int? = null
}

open class Article : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    var Company:Company? = null
    var CurrencyInfo:Currency? = null
    var ArticleServiceRelations:ArrayList<ArticleServiceRelation> = ArrayList<ArticleServiceRelation>()
    @Ignore()
    var ServiceIds:ArrayList<Int> = ArrayList<Int>()

    @Ignore()
    var ArticleType:ArticleTypeEnum? = null

    @Ignore()
    var ArticleTypeName:String? = null

    @Required()
    var CompanyId:UUID? = null

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

    @Required()
    var ArticleTypeId:Int? = null

    var Description:String? = null
    var ImageUrl:String? = null
    @Required()
    var Active:Boolean? = null

    @Required()
    var Amount:Int? = null

    @Required()
    var Price:Double? = null

    @Required()
    @StringLength(50)
    var CurrencyId:String? = null

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    var ModifiedDate:Date? = null
}

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

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

    @Required()
    var ArticleId:Int? = null
}

enum class ArticleTypeEnum(val value:Int)
{
    ServiceArticle(1),
    StandAloneArticle(2),
    RebateCodePunchTicketArticle(3),
    RebateCodeGiftCardArticle(4),
    RebateCodeValueCardArticle(5),
}

open class RebateCodeDayOfWeekRelation : BaseModel()
{
    @Ignore()
    var DayOfWeek:BokaMeraDayOfWeek? = null

    @Required()
    var DayOfWeekId:Int? = null

    @Required()
    var RebateCodeId:Int? = null

    @Required()
    var CompanyId:UUID? = null

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

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

    @Required()
    var ServiceId:Int? = null

    @Required()
    var RebateCodeId:Int? = null

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

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

    @Required()
    var PriceId:Int? = null

    @Required()
    var RebateCodeId:Int? = null

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

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

    @Required()
    var CustomerId:UUID? = null

    @Required()
    var RebateCodeId:Int? = null

    var Id:Int? = null
    var ModifiedDate:Date? = null
    var RebateCodeEmailSentToCustomer:Boolean? = null
    var MessageToReceiver:String? = null
    var Buyer:Boolean? = null
}

open class DaysOfWeek : BaseModel()
{
    @Required()
    var DayOfWeek:String? = null

    @Required()
    var DayOfWeekTranslation:String? = null

    var DayOfWeekActive:Boolean? = null
    var DayOfWeekSortOrder:Short? = null
    var ModifiedDate:Date? = null
    var Id:Int? = null
}

open class RebateCodeTransaction : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    var Booking:Booking? = null

    @Ignore()
    var RebateCode:RebateCode? = null

    @Ignore()
    var Customer:Customer? = null

    var Id:Int? = null
    var CompanyId:UUID? = null
    var Note:String? = null
    @Required()
    var RebateCodeId:Int? = null

    @Required()
    var Amount:Double? = null

    @Required()
    var Usage:Int? = null

    var BookingId:Int? = null
    @Required()
    var UpdatedDate:Date? = null

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

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

    @Ignore()
    var CalendarExport:CalendarExport? = null

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

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

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

    @Ignore()
    var Status:BookingStatusEnum? = null

    @Ignore()
    var IsReserved:Boolean? = null

    @Ignore()
    var StatusName:String? = null

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

    @Ignore()
    var TotalSpots:Int? = null

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

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

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

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

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

    @Ignore()
    var DeterministicId:UUID? = null

    @Ignore()
    var Active:Boolean? = null

    @Ignore()
    var LastTimeToUnBook:Date? = null

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

    @Ignore()
    var InternalReferenceId:String? = null

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

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

    @Required()
    var ServiceId:Int? = null

    @Required()
    var StatusId:Int? = null

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

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

    @Required()
    var SendEmailReminder:Boolean? = null

    @Required()
    var SendSmsConfirmation:Boolean? = null

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

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

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

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

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

    @Required()
    var BookingId:Int? = null

    @Required()
    var ExceptionId:Int? = null

    var CalendarSync:Boolean? = null
    var CalendarId:String? = null
    var IsExceptionDeleted:Boolean? = null
    var ModifiedDate:Date? = null
    var Id:Int? = null
}

open class BookingLog : BaseModel()
{
    @References(BookingLogEventType.class)
    var EventTypeId:Int? = null

    var EventType:BookingLogEventType? = null
    @Required()
    var CompanyId:UUID? = null

    @Required()
    var BookingId:Int? = null

    var Id:Int? = null
    var Comments:String? = null
    var UserId:String? = null
    @Required()
    var Created:Date? = null

    var ModifiedDate:Date? = null
}

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

    @Required()
    var Description:String? = null

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

open class PaymentDetails : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    var QvicklyCheckoutSerialized:QvicklyCheckoutResponse? = null

    @Ignore()
    var Payson2CheckoutSerialized:Payson2CheckoutResponse? = null

    @Required()
    var CompanyId:UUID? = null

    @Required()
    var InternalReferenceId:String? = null

    @Required()
    var ArticleTypeId:Int? = null

    @Required()
    var ExternalResponseData:String? = null

    @Required()
    var ExternalResponseReference:String? = null

    @Required()
    var PaymentProviderId:Int? = null

    @Required()
    var CreatedDate:Date? = null

    @Required()
    var UpdatedDate:Date? = null

    var ModifiedDate:Date? = null
}

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

    var PriceId:Int? = null
    var CurrencyInfo:Currency? = null
    @Ignore()
    var PriceText:String? = null

    @Ignore()
    var AppliedCodes:ArrayList<AppliedRebateCodes> = ArrayList<AppliedRebateCodes>()

    @Ignore()
    var IsRebate:Boolean? = null

    @Required()
    var CompanyId:UUID? = null

    @Required()
    var BookingId:Int? = null

    @Required()
    var Quantity:Int? = null

    var Price:Double? = null
    var VAT:BigDecimal? = null
    var Category:String? = null
    @Required()
    var Updated:Date? = null

    @Required()
    var Created:Date? = null

    @Required()
    var Invoiced:Boolean? = null

    @Required()
    var OccupiesSpot:Boolean? = null

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

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

    @Required()
    var Description:String? = null

    @Required()
    var Color:String? = null

    @Required()
    var Icon:String? = null

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

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

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

    /**
    * The resources inside resource type
    */
    @ApiMember(Description="The resources inside resource type")
    var Resources:ArrayList<BookedResource> = ArrayList<BookedResource>()
}

open class BookedResource
{
    var Id:Int? = null
    var Name:String? = null
    var Color:String? = null
    var ImageUrl:Uri? = null
    var Email:String? = null
    var MobilePhone:String? = null
    var AccessGroup:String? = null
    var EmailNotification:Boolean? = null
    var SMSNotification:Boolean? = null
    var EmailReminder:Boolean? = null
    var SMSReminder:Boolean? = null
}

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

    var Id:Int? = null
    @Required()
    var CustomFieldConfigId:Int? = null

    @Required()
    var ServiceId:Int? = null

    var ModifiedDate:Date? = null
}

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

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

    /**
    * The resourcetype description
    */
    @ApiMember(Description="The resourcetype description")
    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.")
    var Resources:ArrayList<ResourceTypeResource> = ArrayList<ResourceTypeResource>()

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

    /**
    * Then date when the resource was created
    */
    @ApiMember(Description="Then date when the resource was created")
    var Created:Date? = null

    /**
    * Then date when the resource was updated
    */
    @ApiMember(Description="Then date when the resource was updated")
    var Updated:Date? = null
}

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

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

    /**
    * The resource status
    */
    @ApiMember(Description="The resource status")
    var Active:Boolean? = null

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

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

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

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

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

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

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

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

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

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

@DataContract
open class QueryResponse<AccessKeyTypeResponse>
{
    @DataMember(Order=1)
    var Offset:Int? = null

    @DataMember(Order=2)
    var Total:Int? = null

    @DataMember(Order=3)
    var Results:ArrayList<AccessKeyTypeResponse> = ArrayList<AccessKeyTypeResponse>()

    @DataMember(Order=4)
    var Meta:HashMap<String,String> = HashMap<String,String>()

    @DataMember(Order=5)
    var ResponseStatus:ResponseStatus? = null
}

open class AccessKeyTypeResponse
{
    var Id:Int? = null
    var KeyType:String? = null
    var Description:String? = null
}

Kotlin ResourceTypeQuery DTOs

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

HTTP + CSV

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

GET /resourcetypes HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Offset":0,"Total":0,"Results":[{"Id":0,"Name":"String","Description":"String","Resources":[{"Id":0,"Name":"String","Active":false,"Description":"String","Email":"String","Phone":"String","Color":"String","Priority":0,"EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}],"Active":false}],"Meta":{"String":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}