BokaMera.API.Host

<back to all web services

UpdateService

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
    * If Custom Fields are added to the service, here you will send the id and the value for each custom field to be updated
    */
    @ApiMember(Description="If Custom Fields are added to the service, here you will send the id and the value for each custom field to be updated")
    var CustomFields:ArrayList<AddCustomField> = ArrayList<AddCustomField>()
}

open class GroupBookingSettings
{
    var Active:Boolean? = null
    var Min:Int? = null
    var Max:Int? = null
}

open class MultipleResourceSettings
{
    var Active:Boolean? = null
    var Min:Int? = null
    var Max:Int? = null
}

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

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

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

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

    var DateSchedules:ArrayList<ServiceSchedule> = ArrayList<ServiceSchedule>()
}

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

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

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

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

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

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

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

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

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

enum class ScheduleType
{
    NotDefined,
    RecurringSchedule,
    DateSchedule,
}

open class CustomFieldConfigData
{
    /**
    * Custom field id
    */
    @ApiMember(Description="Custom field id")
    var Id:Int? = null

    /**
    * Configuration name. Example: 'Number of persons'.
    */
    @ApiMember(Description="Configuration name. Example: 'Number of persons'.")
    var Name:String? = null

    /**
    * Custom field description. Example: 'For how many persons is this booking?'
    */
    @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")
    var Description:String? = null

    /**
    * Field width. Example: 20 for 20px
    */
    @ApiMember(Description="Field width. Example: 20 for 20px")
    var Width:Int? = null

    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    var DataType:String? = null

    /**
    * Default value of the field. Example: '3'
    */
    @ApiMember(Description="Default value of the field. Example: '3'")
    var DefaultValue:String? = null

    /**
    * Determines if the field is required to have a value or not
    */
    @ApiMember(Description="Determines if the field is required to have a value or not")
    var IsMandatory:Boolean? = null

    /**
    * Error message shown to the user if the field data is required but not entered
    */
    @ApiMember(Description="Error message shown to the user if the field data is required but not entered")
    var MandatoryErrorMessage:String? = null

    /**
    * Max lenght of the field
    */
    @ApiMember(Description="Max lenght of the field")
    var MaxLength:Int? = null

    /**
    * If the field should have multiple lines
    */
    @ApiMember(Description="If the field should have multiple lines")
    var MultipleLineText:Boolean? = null

    /**
    * Regular expression used for validation of the field
    */
    @ApiMember(Description="Regular expression used for validation of the field")
    var RegEx:String? = null

    /**
    * Error message shown if the regular expression validation failed
    */
    @ApiMember(Description="Error message shown if the regular expression validation failed")
    var RegExErrorMessage:String? = null

    /**
    * The values to select from if Datatype is DropDown for this custom field
    */
    @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")
    var Values:ArrayList<CustomFieldValueResponse> = ArrayList<CustomFieldValueResponse>()
}

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

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

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

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

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

    /**
    * The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day
    */
    @ApiMember(Description="The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day")
    var CalculationTypeId:Int? = null

    /**
    * The price currency
    */
    @ApiMember(Description="The price currency")
    var CurrencyId:String? = null

    /**
    * The price sign
    */
    @ApiMember(Description="The price sign")
    var PriceSign:String? = null

    /**
    * The price VAT in percent
    */
    @ApiMember(Description="The price VAT in percent")
    var VAT:BigDecimal? = null

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

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

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

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

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

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

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

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

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

    /**
    * If the price is Weighted
    */
    @ApiMember(Description="If the price is Weighted")
    var IsWeighted:Boolean? = null
}

open class DayOfWeekDto
{
    var DayOfWeekId:Int? = null
    var DotNetDayOfWeekId:Int? = null
    var DayOfWeek:String? = null
}

open class ServiceInfoResponse
{
    var Id:Int? = null
    var Name:String? = null
    var Description:String? = null
    var ImageUrl:Uri? = null
    var LengthInMinutes:Int? = null
    var MaxNumberOfSpotsPerBooking:Int? = null
    var GroupBooking:GroupBookingSettings? = null
    var MultipleResource:MultipleResourceSettings? = null
    var IsGroupBooking:Boolean? = null
    var IsPaymentEnabled:Boolean? = null
}

open class ServiceSchedules
{
    var ScheduleType:ScheduleType? = null
    var RecurringSchedules:ArrayList<ISchedule> = ArrayList<ISchedule>()
    var DateSchedules:ArrayList<ISchedule> = ArrayList<ISchedule>()
}

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

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 class BaseModel
{
}

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 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 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 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 IsWeighted:Boolean? = 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 : BaseModel()
{
    @References(RebateCodeType.class)
    var RebateCodeTypeId:Int? = null

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

    var RebateCodeStatusInfo:RebateCodeType? = 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 DaysOfWeek:ArrayList<DaysOfWeek> = ArrayList<DaysOfWeek>()

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

    @Ignore()
    var RebateCodeStatus:RebateCodeStatus? = null

    @Ignore()
    var RebateCodeType:RebateCodeType? = null

    @Ignore()
    var CurrentNumberOfUsesPerCustomer:Int? = null

    @Ignore()
    var IsSpecificByDayOfWeek:Boolean? = null

    @Ignore()
    var Active:Boolean? = null

    var CompanyId:UUID? = 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 Updated:Date? = null

    @Required()
    var FromTime:TimeSpan? = null

    @Required()
    var ToTime:TimeSpan? = null

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

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
}

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 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 CustomFieldsConfig:IList<CustomFieldConfig>? = null

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

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

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

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 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 Booking : BaseModel(), IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
{
    @Ignore()
    var Customer:Customer? = null

    @Ignore()
    var Service:Service? = null

    @Ignore()
    var CalendarExport:CalendarExport? = null

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

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

    @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

    @Ignore()
    var Company:Company? = null

    @References(Currency.class)
    var CurrencyId: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 Active:Boolean? = null

    @Ignore()
    var LastTimeToUnBook:Date? = null

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

    @Required()
    var UpdatedDate:Date? = null

    @Required()
    var CreatedDate:Date? = null

    @Required()
    var CompanyId:UUID? = 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
    var PriceVat:BigDecimal? = 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 PaymentLog : BaseModel()
{
    @References(Currency.class)
    var CurrencyId:String? = null

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

    var Id:Int? = null
    @Required()
    var BookingId: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 PaymentDetails : BaseModel(), IBaseModelCreated, IBaseModelUpdated
{
    @Ignore()
    var QvicklyCheckoutSerialized:QvicklyCheckoutResponse? = null

    @Ignore()
    var Payson2CheckoutSerialized:Payson2CheckoutResponse? = null

    @Required()
    var CompanyId:UUID? = null

    @Required()
    var BookingId:Int? = null

    @Required()
    var ExternalResponseData:String? = null

    @Required()
    var ExternalResponseReference:String? = null

    @Required()
    var PaymentProviderId:Int? = null

    @Required()
    var IsPayment:Boolean? = null

    @Required()
    var CreatedDate:Date? = null

    @Required()
    var UpdatedDate:Date? = null

    var ModifiedDate:Date? = null
}

open class QvicklyCheckoutResponse
{
    var Number:Int? = null
    var Status:String? = null
    var OrderId:String? = null
    var Url: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 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 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 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 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
    @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 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 Id:Int? = null
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
    * The resourcetype is selectable by customer
    */
    @ApiMember(Description="The resourcetype is selectable by customer")
    var SelectableByUser:Boolean? = 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<ServiceResourceTypeResource> = ArrayList<ServiceResourceTypeResource>()
}

open class ServiceResourceTypeResource
{
    /**
    * 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 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
}

Kotlin UpdateService DTOs

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

HTTP + XML

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

PUT /services/{Id} HTTP/1.1 
Host: testapi.bokamera.se 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<UpdateService xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Active>false</Active>
  <BookBeforeDays>0</BookBeforeDays>
  <BookBeforeHours>0</BookBeforeHours>
  <BookBeforeMinutes>0</BookBeforeMinutes>
  <BookingStatusId>0</BookingStatusId>
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <CustomFields>
    <AddCustomField>
      <Id>0</Id>
      <Value>String</Value>
    </AddCustomField>
  </CustomFields>
  <Description>String</Description>
  <Duration>0</Duration>
  <DurationInterval>0</DurationInterval>
  <DurationTypeId>0</DurationTypeId>
  <EnableBookingQueue>false</EnableBookingQueue>
  <EnableCodeLockSync>false</EnableCodeLockSync>
  <EnableCustomerManualPayment>false</EnableCustomerManualPayment>
  <Group>String</Group>
  <GroupBooking>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </GroupBooking>
  <Id>0</Id>
  <ImageUrl i:nil="true" />
  <IsPaymentEnabled>false</IsPaymentEnabled>
  <LockSpotsToBooking>false</LockSpotsToBooking>
  <MaxDuration>0</MaxDuration>
  <MaxPaymentTime>0</MaxPaymentTime>
  <MinDuration>0</MinDuration>
  <MultipleResource>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </MultipleResource>
  <Name>String</Name>
  <OnlyVisibleByAdmin>false</OnlyVisibleByAdmin>
  <PauseAfterBooking>0</PauseAfterBooking>
  <PriceViewTypeId>0</PriceViewTypeId>
  <ResourceTypes>
    <AddResourceTypeService>
      <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
      <Id>0</Id>
      <SelectableByUser>false</SelectableByUser>
    </AddResourceTypeService>
  </ResourceTypes>
  <Schedules>
    <DateSchedules>
      <ServiceSchedule>
        <Id>0</Id>
      </ServiceSchedule>
    </DateSchedules>
    <RecurringSchedules>
      <ServiceSchedule>
        <Id>0</Id>
      </ServiceSchedule>
    </RecurringSchedules>
  </Schedules>
  <ShouldPayFullCost>false</ShouldPayFullCost>
  <ShouldPayReservationCost>false</ShouldPayReservationCost>
  <SortOrder>0</SortOrder>
  <TotalSpots>0</TotalSpots>
  <UnbookBeforeDays>0</UnbookBeforeDays>
  <UnbookBeforeHours>0</UnbookBeforeHours>
  <UnbookBeforeMinutes>0</UnbookBeforeMinutes>
</UpdateService>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<ServiceQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Active>false</Active>
  <BookBeforeDays>0</BookBeforeDays>
  <BookBeforeHours>0</BookBeforeHours>
  <BookBeforeMinutes>0</BookBeforeMinutes>
  <BookingCustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </BookingCustomFields>
  <BookingStatusId>0</BookingStatusId>
  <BookingStatusOptions>
    <BookingStatusOptionsResponse>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
    </BookingStatusOptionsResponse>
  </BookingStatusOptions>
  <CustomFieldValues>
    <CustomFieldDataResponse>
      <Column>String</Column>
      <DataType>String</DataType>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
      <Value>String</Value>
    </CustomFieldDataResponse>
  </CustomFieldValues>
  <CustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </CustomFields>
  <CustomerCustomFields>
    <CustomFieldConfigData>
      <DataType>String</DataType>
      <DefaultValue>String</DefaultValue>
      <Description>String</Description>
      <Id>0</Id>
      <IsMandatory>false</IsMandatory>
      <MandatoryErrorMessage>String</MandatoryErrorMessage>
      <MaxLength>0</MaxLength>
      <MultipleLineText>false</MultipleLineText>
      <Name>String</Name>
      <RegEx>String</RegEx>
      <RegExErrorMessage>String</RegExErrorMessage>
      <Values>
        <CustomFieldValueResponse>
          <Value>String</Value>
        </CustomFieldValueResponse>
      </Values>
      <Width>0</Width>
    </CustomFieldConfigData>
  </CustomerCustomFields>
  <Description>String</Description>
  <Duration>0</Duration>
  <DurationInterval>0</DurationInterval>
  <DurationTypeId>0</DurationTypeId>
  <EnableBookingQueue>false</EnableBookingQueue>
  <EnableCodeLockSync>false</EnableCodeLockSync>
  <EnableCustomerManualPayment>false</EnableCustomerManualPayment>
  <Group>String</Group>
  <GroupBooking>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </GroupBooking>
  <Id>0</Id>
  <ImageUrl i:nil="true" />
  <IsGroupBooking>false</IsGroupBooking>
  <IsPaymentEnabled>false</IsPaymentEnabled>
  <LengthInMinutes>0</LengthInMinutes>
  <LockSpotsToBooking>false</LockSpotsToBooking>
  <MaxDuration>0</MaxDuration>
  <MaxNumberOfResourcesToBook>0</MaxNumberOfResourcesToBook>
  <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking>
  <MaxPaymentTime>0</MaxPaymentTime>
  <MinDuration>0</MinDuration>
  <MinNumberOfResourcesToBook>0</MinNumberOfResourcesToBook>
  <MultipleResource>
    <Active>false</Active>
    <Max>0</Max>
    <Min>0</Min>
  </MultipleResource>
  <Name>String</Name>
  <OnlyVisibleByAdmin>false</OnlyVisibleByAdmin>
  <PauseAfterBooking>0</PauseAfterBooking>
  <PriceViewTypeId>0</PriceViewTypeId>
  <Prices>
    <ServicePriceResponse>
      <CalculationTypeId>0</CalculationTypeId>
      <Category>String</Category>
      <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
      <CurrencyId>String</CurrencyId>
      <DaysOfWeek>
        <DayOfWeekDto>
          <DayOfWeek>String</DayOfWeek>
          <DayOfWeekId>0</DayOfWeekId>
          <DotNetDayOfWeekId>0</DotNetDayOfWeekId>
        </DayOfWeekDto>
      </DaysOfWeek>
      <From>0001-01-01T00:00:00</From>
      <FromTime>PT0S</FromTime>
      <Id>0</Id>
      <IsDaysOfWeekSpecific>false</IsDaysOfWeekSpecific>
      <IsTimeSpecific>false</IsTimeSpecific>
      <IsWeighted>false</IsWeighted>
      <Price>0</Price>
      <PriceSign>String</PriceSign>
      <PriceText>String</PriceText>
      <Service>
        <Description>String</Description>
        <GroupBooking>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </GroupBooking>
        <Id>0</Id>
        <ImageUrl i:nil="true" />
        <IsGroupBooking>false</IsGroupBooking>
        <IsPaymentEnabled>false</IsPaymentEnabled>
        <LengthInMinutes>0</LengthInMinutes>
        <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking>
        <MultipleResource>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </MultipleResource>
        <Name>String</Name>
      </Service>
      <ServiceId>0</ServiceId>
      <To>0001-01-01T00:00:00</To>
      <ToTime>PT0S</ToTime>
      <VAT>0</VAT>
    </ServicePriceResponse>
  </Prices>
  <RatingSummary>
    <AverageScore>0</AverageScore>
    <Count>0</Count>
    <RaingScore4Count>0</RaingScore4Count>
    <RatingScore1Count>0</RatingScore1Count>
    <RatingScore2Count>0</RatingScore2Count>
    <RatingScore3Count>0</RatingScore3Count>
    <RatingScore5Count>0</RatingScore5Count>
  </RatingSummary>
  <ResourceTypes>
    <ServiceResourceTypeResponse>
      <Description>String</Description>
      <Id>0</Id>
      <Name>String</Name>
      <Resources>
        <ServiceResourceTypeResource>
          <Color>String</Color>
          <Description>String</Description>
          <Email>String</Email>
          <EmailNotification>false</EmailNotification>
          <EmailReminder>false</EmailReminder>
          <Id>0</Id>
          <ImageUrl i:nil="true" />
          <Name>String</Name>
          <Phone>String</Phone>
          <Priority>0</Priority>
          <SMSNotification>false</SMSNotification>
          <SMSReminder>false</SMSReminder>
        </ServiceResourceTypeResource>
      </Resources>
      <SelectableByUser>false</SelectableByUser>
    </ServiceResourceTypeResponse>
  </ResourceTypes>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <Reviews>
    <RatingReviewResponse>
      <Author>String</Author>
      <Created>0001-01-01T00:00:00</Created>
      <Description>String</Description>
      <RatingScore>0</RatingScore>
      <ReviewAnswer>String</ReviewAnswer>
      <Title>String</Title>
    </RatingReviewResponse>
  </Reviews>
  <ScheduleType>NotDefined</ScheduleType>
  <ScheduleTypeId>0</ScheduleTypeId>
  <Schedules>
    <DateSchedules xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:anyType i:nil="true" />
    </DateSchedules>
    <RecurringSchedules xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:anyType i:nil="true" />
    </RecurringSchedules>
    <ScheduleType>NotDefined</ScheduleType>
  </Schedules>
  <SortOrder>0</SortOrder>
  <TotalSpots>0</TotalSpots>
  <UnbookBeforeDays>0</UnbookBeforeDays>
  <UnbookBeforeHours>0</UnbookBeforeHours>
  <UnbookBeforeMinutes>0</UnbookBeforeMinutes>
</ServiceQueryResponse>