BokaMera.API.Host

<back to all web services

CreateBooking

The following routes are available for this service:
POST/bookingsCreate a new bookingCreate a new booking if you are authorized to do so.
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*


@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
open class CreateBooking : CreateBookingBase(), IInterval
{
    /**
    * The datetime you want to start the booking.
    */
    @ApiMember(Description="The datetime you want to start the booking.", IsRequired=true)
    override var From:Date? = null

    /**
    * The datetime you want to end the booking.
    */
    @ApiMember(Description="The datetime you want to end the booking.", IsRequired=true)
    override var To:Date? = null

    /**
    * Set the number of spots you want to book. You add number of spots per price category. Multiple spots require that the service has GroupBooking enabled. Default is one spot.
    */
    @ApiMember(Description="Set the number of spots you want to book. You add number of spots per price category. Multiple spots require that the service has GroupBooking enabled. Default is one spot.")
    open var Quantities:ArrayList<QuantityToBook>? = null
}

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

    /**
    * If you want to book on an existing customer instead of CustomerToBook info set the CustomerId here. Set Empty Guid (00000000-0000-0000-0000-000000000000) if you want to book without any customer, this is only allowed by admin. The customer id is shown in the customer list named as id. When booking as customer (no admin) leave this field blank.
    */
    @ApiMember(Description="If you want to book on an existing customer instead of CustomerToBook info set the CustomerId here. Set Empty Guid (00000000-0000-0000-0000-000000000000) if you want to book without any customer, this is only allowed by admin. The customer id is shown in the customer list named as id. When booking as customer (no admin) leave this field blank.")
    open var CustomerId:UUID? = null

    /**
    * If company requires to be authenticated or a pin code entered to book on a specific customer, enter it here.
    */
    @ApiMember(Description="If company requires to be authenticated or a pin code entered to book on a specific customer, enter it here.")
    open var PinCode:String? = null

    /**
    * If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinary profile. 
    */
    @ApiMember(Description="If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinary profile. ")
    open var Customer:CustomerToHandle? = null

    /**
    * If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinary profile. 
    */
    @ApiMember(Description="If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinary profile. ")
    open var InvoiceAddress:InvoiceAddressToHandle? = null

    /**
    * The service to be booked
    */
    @ApiMember(Description="The service to be booked", IsRequired=true)
    open var ServiceId:Int? = null

    /**
    * If you want to add comments to a booking you can add them here, this comments are never shared with the customer
    */
    @ApiMember(Description="If you want to add comments to a booking you can add them here, this comments are never shared with the customer")
    open var BookedComments:String? = null

    /**
    * If you want to add comments to the booking that is sent to the customer, you can add them here. Comments will be sent in the booking confirmation
    */
    @ApiMember(Description="If you want to add comments to the booking that is sent to the customer, you can add them here. Comments will be sent in the booking confirmation")
    open var CommentsToCustomer:String? = null

    open var Resources:ArrayList<ResourceToBook>? = null
    /**
    * Rebate codes applied to booking
    */
    @ApiMember(Description="Rebate codes applied to booking")
    open var RebateCodeIds:ArrayList<Int>? = null

    /**
    * If you want to send Email reminder
    */
    @ApiMember(Description="If you want to send Email reminder")
    open var SendEmailReminder:Boolean? = null

    /**
    * If you want to send SMS reminder
    */
    @ApiMember(Description="If you want to send SMS reminder")
    open var SendSmsReminder:Boolean? = null

    /**
    * If you want to send SMS confirmation
    */
    @ApiMember(Description="If you want to send SMS confirmation")
    open var SendSmsConfirmation:Boolean? = null

    /**
    * Only admins are allowed to not send an email confirmation. Default is true
    */
    @ApiMember(Description="Only admins are allowed to not send an email confirmation. Default is true")
    open var SendEmailConfirmation:Boolean? = null

    /**
    * If payment is enabled and you're an administrator, optional to choose payment option, if empty then the default settings will be used. Following payment options exists. DefaultSetting = 0, BookWithoutPayment = 1 (will be direcyly booked without payment), BookWithPaymentMessageToCustomer = 2 (will set status AwaitingPayment and send payment instructions to customer), BookWithManualPayment = 3 (Will set status AwaitingPaymentNoTimeLimit and Admin will need to manually mark the booking as payed when recieved payment).
    */
    @ApiMember(Description="If payment is enabled and you're an administrator, optional to choose payment option, if empty then the default settings will be used. Following payment options exists. DefaultSetting = 0, BookWithoutPayment = 1 (will be direcyly booked without payment), BookWithPaymentMessageToCustomer = 2 (will set status AwaitingPayment and send payment instructions to customer), BookWithManualPayment = 3 (Will set status AwaitingPaymentNoTimeLimit and Admin will need to manually mark the booking as payed when recieved payment).")
    open var PaymentOption:PaymentOptions? = null

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

    /**
    * If Custom Fields are added to the customer, 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 customer, here you will send the id and the value for each custom field to be updated")
    open var CustomerCustomFields:ArrayList<AddCustomField>? = null

    /**
    * If want to allow to book outside the service schedules. This means you can book a time after the schedule opening hours as long as the resource are available. This is only allowed by administrators
    */
    @ApiMember(Description="If want to allow to book outside the service schedules. This means you can book a time after the schedule opening hours as long as the resource are available. This is only allowed by administrators")
    open var AllowBookingOutsideSchedules:Boolean? = null
}

open class CustomerToHandle
{
    open var CustomerId:UUID? = null
    open var Firstname:String? = null
    open var Lastname:String? = null
    open var Email:String? = null
    open var Phone:String? = null
    open var SubscribedToNewsletter:Boolean? = null
}

open class InvoiceAddressToHandle
{
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
}

open class ResourceToBook
{
    open var ResourceTypeId:Int? = null
    open var ResourceId:Int? = null
}

enum class PaymentOptions
{
    DefaultSetting,
    BookWithoutPayment,
    BookWithPaymentMessageToCustomer,
    BookWithManualPayment,
}

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

open class QuantityToBook
{
    /**
    * If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)
    */
    @ApiMember(Description="If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)", IsRequired=true)
    open var PriceId:Int? = null

    /**
    * Set the number of spots or resources you want to book on the specific price category
    */
    @ApiMember(Description="Set the number of spots or resources you want to book on the specific price category", IsRequired=true)
    open var Quantity:Int? = null

    /**
    * If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
    */
    @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")
    open var OccupiesSpot:Boolean? = null
}

open class BookingQueryResponse
{
    open var Id:Int? = null
    open var CompanyId:UUID? = null
    open var From:Date? = null
    open var To:Date? = null
    open var Status:BookingStatusEnum? = null
    open var StatusId:Int? = null
    open var StatusName:String? = null
    open var StatusInfo:BookingStatusQueryResponse? = null
    open var SendEmailReminder:Boolean? = null
    open var SendSmsReminder:Boolean? = null
    open var SendSmsConfirmation:Boolean? = null
    open var SendEmailConfirmation:Boolean? = null
    open var LastTimeToUnBook:Date? = null
    open var CustomFields:ArrayList<CustomFieldConfigData>? = null
    open var CustomFieldValues:ArrayList<CustomFieldDataResponse>? = null
    open var BookedResourceTypes:ArrayList<BookedResourceType>? = null
    open var Company:BookedCompany? = null
    open var Customer:BookedCustomer? = null
    open var Quantities:ArrayList<BookedQuantity>? = null
    open var Service:ServiceInfoResponse? = null
    open var InvoiceAddress:InvoiceAddressResponse? = null
    open var PaymentExpiration:Date? = null
    open var Log:ArrayList<BookingLogQueryResponse>? = null
    open var PaymentLog:ArrayList<BookingPaymentLogQueryResponse>? = null
    open var CheckoutLog:ArrayList<BookingCheckoutQueryResponse>? = null
    open var ExternalReference:ArrayList<ExternalReferenceResponse>? = null
    open var ResponseStatus:ResponseStatus? = null
    open var LengthInMinutes:Int? = null
    open var BookedBy:String? = null
    open var BookedComments:String? = null
    open var UnbookedComments:String? = null
    open var CommentsToCustomer:String? = null
    open var CreatedDate:Date? = null
    open var UpdatedDate:Date? = null
    open var UnbookedOn:Date? = null
    open var CancellationCode:String? = null
    open var RatingCode:String? = null
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

open class CustomFieldValueResponse
{
    open var Value:String? = null
}

open class CustomFieldDataResponse
{
    open var Id:Int? = null
    open var Column:String? = null
    open var Name:String? = null
    open var Description:String? = null
    open var Value:String? = null
    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    open var DataType:String? = null
}

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

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

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

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

open class BookedCompany
{
    open var Id:UUID? = null
    open var Name:String? = null
    open var LogoType:Uri? = null
    open var Category:String? = null
    open var Street1:String? = null
    open var Street2:String? = null
    open var ZipCode:String? = null
    open var City:String? = null
    open var CountryId:String? = null
    open var Longitude:String? = null
    open var Latitude:String? = null
    open var Phone:String? = null
    open var Email:String? = null
    open var HomePage:String? = null
    open var SitePath:String? = null
    open var IsFavorite:Boolean? = null
    open var PaymentProviderId:Int? = null
}

open class BookedCustomer
{
    open var Id:UUID? = null
    open var Firstname:String? = null
    open var Lastname:String? = null
    open var Email:String? = null
    open var Phone:String? = null
    open var FacebookUserName:String? = null
    open var ImageUrl:String? = null
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
}

open class BookedQuantity
{
    /**
    * The quantity Id
    */
    @ApiMember(Description="The quantity Id")
    open var Id:Int? = null

    /**
    * The quantity for booked on this price category
    */
    @ApiMember(Description="The quantity for booked on this price category")
    open var Quantity:Int? = null

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

    /**
    * The price bofore rebate codes
    */
    @ApiMember(Description="The price bofore rebate codes")
    open var PriceBeforeRebate:Double? = null

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

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

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

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

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

    /**
    * If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
    */
    @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")
    open var OccupiesSpot:Boolean? = null
}

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

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

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

open class InvoiceAddressResponse
{
    open var InvoiceAddressId:UUID? = null
    open var UserId:UUID? = null
    open var CorporateIdentityNumber:String? = null
    open var InvoiceAddress1:String? = null
    open var InvoiceAddress2:String? = null
    open var InvoiceCity:String? = null
    open var InvoicePostalCode:String? = null
    open var InvoiceCountryCode:String? = null
}

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

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

    /**
    * The type of event
    */
    @ApiMember(Description="The type of event")
    open var EventTypeId:Int? = null

    /**
    * The type of event
    */
    @ApiMember(Description="The type of event")
    open var EventType:BookingLogEventTypeResponse? = null

    /**
    * Comments that could be added to the event log item
    */
    @ApiMember(Description="Comments that could be added to the event log item")
    open var Comments:String? = null

    /**
    * The user created the event
    */
    @ApiMember(Description="The user created the event")
    open var UserName:String? = null

    /**
    * The date when the event occurred
    */
    @ApiMember(Description="The date when the event occurred")
    open var Created:Date? = null
}

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

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

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

open class BookingPaymentLogQueryResponse
{
    /**
    * The booking payment log id
    */
    @ApiMember(Description="The booking payment log id")
    open var Id:Int? = null

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

    /**
    * The payment reference id
    */
    @ApiMember(Description="The payment reference id")
    open var PaymentReferenceId:String? = null

    /**
    * The payment order item reference id
    */
    @ApiMember(Description="The payment order item reference id")
    open var OrderItemReferenceId:String? = null

    /**
    * The payment reference id
    */
    @ApiMember(Description="The payment reference id")
    open var PaymentProviderId:Int? = null

    /**
    * The payment amount
    */
    @ApiMember(Description="The payment amount")
    open var Amount:Double? = null

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

    /**
    * The payment amount that is credited
    */
    @ApiMember(Description="The payment amount that is credited")
    open var AmountCredited:Double? = null

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

    /**
    * The payment currency info
    */
    @ApiMember(Description="The payment currency info")
    open var CurrencyInfo:CurrencyInfoResponse? = null

    /**
    * Comments that could be added to the event log item
    */
    @ApiMember(Description="Comments that could be added to the event log item")
    open var Comments:String? = null

    /**
    * The date when the payment items was created
    */
    @ApiMember(Description="The date when the payment items was created")
    open var Created:Date? = null

    /**
    * The date when the payment items were updated.
    */
    @ApiMember(Description="The date when the payment items were updated.")
    open var Updated:Date? = null
}

open class CurrencyInfoResponse
{
    /**
    * The currency id
    */
    @ApiMember(Description="The currency id")
    open var Id:String? = null

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

    /**
    * The currency id
    */
    @ApiMember(Description="The currency id")
    open var CurrencySign:String? = null
}

open class BookingCheckoutQueryResponse
{
    /**
    * The checkout id
    */
    @ApiMember(Description="The checkout id")
    open var Id:UUID? = null

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

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

    /**
    * The payment checkout expiration datetime
    */
    @ApiMember(Description="The payment checkout expiration datetime")
    open var ExpirationTime:Date? = null

    /**
    * The payment snippet code
    */
    @ApiMember(Description="The payment snippet code")
    open var Snippet:String? = null

    /**
    * The payment status
    */
    @ApiMember(Description="The payment status")
    open var Status:String? = null

    /**
    * Log message
    */
    @ApiMember(Description="Log message")
    open var Message:String? = null

    /**
    * When the checkout log item was created
    */
    @ApiMember(Description="When the checkout log item was created")
    open var Created:Date? = null

    /**
    * When the checkout log item was updated
    */
    @ApiMember(Description="When the checkout log item was updated")
    open var Updated:Date? = null
}

open class ExternalReferenceResponse
{
    open var CompanyId:UUID? = null
    open var Id:UUID? = null
    open var OwnerId:UUID? = null
    open var ReferenceType:String? = null
    open var ExternalData:String? = null
    open var CreatedBy:String? = null
    open var Updated:Date? = null
    open var Created:Date? = null
}

Kotlin CreateBooking DTOs

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

HTTP + CSV

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

POST /bookings HTTP/1.1 
Host: api.bookmore.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Quantities":[{"PriceId":0,"Quantity":0,"OccupiesSpot":false}],"CompanyId":"00000000-0000-0000-0000-000000000000","CustomerId":"00000000-0000-0000-0000-000000000000","PinCode":"String","Customer":{"CustomerId":"00000000-0000-0000-0000-000000000000","Firstname":"String","Lastname":"String","Email":"String","Phone":"String","SubscribedToNewsletter":false},"InvoiceAddress":{"CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"ServiceId":0,"BookedComments":"String","CommentsToCustomer":"String","Resources":[{"ResourceTypeId":0,"ResourceId":0}],"RebateCodeIds":[0],"SendEmailReminder":false,"SendSmsReminder":false,"SendSmsConfirmation":false,"SendEmailConfirmation":false,"PaymentOption":"DefaultSetting","CustomFields":[{"Id":0,"Value":"String"}],"CustomerCustomFields":[{"Id":0,"Value":"String"}],"AllowBookingOutsideSchedules":false}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Id":0,"Status":"Booked","StatusId":0,"StatusName":"String","StatusInfo":{"Id":0,"Name":"String","Description":"String","Icon":"String","Color":"String"},"SendEmailReminder":false,"SendSmsReminder":false,"SendSmsConfirmation":false,"SendEmailConfirmation":false,"LastTimeToUnBook":"0001-01-01T00:00:00","CustomFields":[{"Id":0,"Name":"String","Description":"String","Width":0,"DataType":"String","DefaultValue":"String","IsMandatory":false,"MandatoryErrorMessage":"String","MaxLength":0,"MultipleLineText":false,"RegEx":"String","RegExErrorMessage":"String","Values":[{"Value":"String"}]}],"CustomFieldValues":[{"Id":0,"Column":"String","Name":"String","Description":"String","Value":"String","DataType":"String"}],"BookedResourceTypes":[{"Id":0,"Name":"String","Resources":[{"Id":0,"Name":"String","Color":"String","Email":"String","MobilePhone":"String","AccessGroup":"String","EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}]}],"Company":{"Name":"String","Category":"String","Street1":"String","Street2":"String","ZipCode":"String","City":"String","CountryId":"String","Longitude":"String","Latitude":"String","Phone":"String","Email":"String","HomePage":"String","SitePath":"String","IsFavorite":false,"PaymentProviderId":0},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","FacebookUserName":"String","ImageUrl":"String","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Quantities":[{"Id":0,"Quantity":0,"Price":0,"PriceBeforeRebate":0,"CurrencyId":"String","PriceSign":"String","Category":"String","VAT":0,"PriceText":"String","OccupiesSpot":false}],"Service":{"Id":0,"Name":"String","Description":"String","LengthInMinutes":0,"MaxNumberOfSpotsPerBooking":0,"MinNumberOfSpotsPerBooking":0,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"IsGroupBooking":false,"IsPaymentEnabled":false},"InvoiceAddress":{"UserId":"00000000-0000-0000-0000-000000000000","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"PaymentExpiration":"0001-01-01T00:00:00","Log":[{"Id":0,"BookingId":0,"EventTypeId":0,"EventType":{"Id":0,"Name":"String","Description":"String"},"Comments":"String","UserName":"String"}],"PaymentLog":[{"Id":0,"BookingId":0,"PaymentReferenceId":"String","OrderItemReferenceId":"String","PaymentProviderId":0,"Amount":0,"VAT":0,"AmountCredited":0,"CurrencyId":"String","CurrencyInfo":{"Id":"String","Name":"String","CurrencySign":"String"},"Comments":"String"}],"CheckoutLog":[{"BookingId":0,"PurchaseId":0,"ExpirationTime":"0001-01-01T00:00:00","Snippet":"String","Status":"String","Message":"String"}],"ExternalReference":[{"ReferenceType":"String","ExternalData":"String","CreatedBy":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"LengthInMinutes":0,"BookedBy":"String","BookedComments":"String","UnbookedComments":"String","CommentsToCustomer":"String","UnbookedOn":"0001-01-01T00:00:00","CancellationCode":"String","RatingCode":"String"}