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 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)
    var From:Date? = null

    /**
    * The datetime you want to end the booking.
    */
    @ApiMember(Description="The datetime you want to end the booking.", IsRequired=true)
    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.")
    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.")
    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.")
    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.")
    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 ordinairy 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 ordinairy profile. ")
    var Customer:CustomerToBook? = null

    /**
    * The service to be booked
    */
    @ApiMember(Description="The service to be booked", IsRequired=true)
    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")
    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")
    var CommentsToCustomer:String? = null

    var Resources:ArrayList<ResourceToBook> = ArrayList<ResourceToBook>()
    /**
    * Rebate code ids as an array of integer
    */
    @ApiMember(Description="Rebate code ids as an array of integer")
    var RebateCodeIds:ArrayList<Int> = ArrayList<Int>()

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

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

    /**
    * If you want to send SMS confirmation
    */
    @ApiMember(Description="If you want to send SMS confirmation")
    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")
    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).")
    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")
    var CustomFields:ArrayList<AddCustomField> = ArrayList<AddCustomField>()

    /**
    * 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")
    var CustomerCustomFields:ArrayList<AddCustomField> = ArrayList<AddCustomField>()

    /**
    * 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")
    var AllowBookingOutsideSchedules:Boolean? = null
}

open class CustomerToBook
{
    /**
    * Customers firstname
    */
    @ApiMember(Description="Customers firstname", IsRequired=true)
    var Firstname:String? = null

    /**
    * Customers lastname
    */
    @ApiMember(Description="Customers lastname", IsRequired=true)
    var Lastname:String? = null

    /**
    * Customers email
    */
    @ApiMember(Description="Customers email", IsRequired=true)
    var Email:String? = null

    /**
    * Customers phone number. Mobile phone number is required for SMS messages to be sent.
    */
    @ApiMember(Description="Customers phone number. Mobile phone number is required for SMS messages to be sent.", IsRequired=true)
    var Phone:String? = null
}

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

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

open class AddCustomField
{
    var Id:Int? = null
    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)
    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)
    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.")
    var OccupiesSpot:Boolean? = null
}

open class BookingQueryResponse
{
    var Id:Int? = null
    var CompanyId:UUID? = null
    var From:Date? = null
    var To:Date? = null
    var Status:BookingStatusEnum? = null
    var StatusId:Int? = null
    var StatusName:String? = null
    var StatusInfo:BookingStatusQueryResponse? = null
    var SendEmailReminder:Boolean? = null
    var SendSmsReminder:Boolean? = null
    var SendSmsConfirmation:Boolean? = null
    var SendEmailConfirmation:Boolean? = null
    var LastTimeToUnBook:Date? = null
    var CustomFields:ArrayList<CustomFieldConfigData> = ArrayList<CustomFieldConfigData>()
    var CustomFieldValues:ArrayList<CustomFieldDataResponse> = ArrayList<CustomFieldDataResponse>()
    var BookedResourceTypes:ArrayList<BookedResourceType> = ArrayList<BookedResourceType>()
    var Company:BookedCompany? = null
    var Customer:BookedCustomer? = null
    var Quantities:ArrayList<BookedQuantity> = ArrayList<BookedQuantity>()
    var Service:ServiceInfoResponse? = null
    var PaymentExpiration:Date? = null
    var Log:ArrayList<BookingLogQueryResponse> = ArrayList<BookingLogQueryResponse>()
    var PaymentLog:ArrayList<BookingPaymentLogQueryResponse> = ArrayList<BookingPaymentLogQueryResponse>()
    var CheckoutLog:ArrayList<BookingCheckoutQueryResponse> = ArrayList<BookingCheckoutQueryResponse>()
    var ExternalReference:ArrayList<ExternalReferenceResponse> = ArrayList<ExternalReferenceResponse>()
    var ResponseStatus:ResponseStatus? = null
    var CalendarExportStatus:BookingCalendarExportStatus? = null
    var LengthInMinutes:Int? = null
    var BookedBy:String? = null
    var BookedComments:String? = null
    var UnbookedComments:String? = null
    var CommentsToCustomer:String? = null
    var CreatedDate:Date? = null
    var UpdatedDate:Date? = null
    var UnbookedOn:Date? = null
    var CancellationCode:String? = null
    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
{
    var Id:Int? = null
    var Name:String? = null
    var Description:String? = null
    var Icon:String? = null
    var Color:String? = null
}

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 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 BookedCompany
{
    var Id:UUID? = null
    var Name:String? = null
    var LogoType:Uri? = null
    var Category:String? = null
    var Street1:String? = null
    var Street2:String? = null
    var ZipCode:String? = null
    var City:String? = null
    var CountryId:String? = null
    var Longitude:String? = null
    var Latitude:String? = null
    var Phone:String? = null
    var Email:String? = null
    var HomePage:String? = null
    var SitePath:String? = null
    var IsFavorite:Boolean? = null
    var PaymentProviderId:Int? = null
}

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 BookedQuantity
{
    /**
    * The quantity Id
    */
    @ApiMember(Description="The quantity Id")
    var Id:Int? = null

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

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

    /**
    * The price bofore rebate codes
    */
    @ApiMember(Description="The price bofore rebate codes")
    var PriceBeforeRebate:Double? = 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 category
    */
    @ApiMember(Description="The price category")
    var Category:String? = null

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

    /**
    * The price text to display
    */
    @ApiMember(Description="The price text to display")
    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.")
    var OccupiesSpot:Boolean? = 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 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 BookingLogQueryResponse
{
    /**
    * The booking log id
    */
    @ApiMember(Description="The booking log id")
    var Id:Int? = null

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

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

    /**
    * The type of event
    */
    @ApiMember(Description="The type of event")
    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")
    var Comments:String? = null

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
    * The payment currency info
    */
    @ApiMember(Description="The payment currency info")
    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")
    var Comments:String? = null

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

    /**
    * The date when the payment items was update
    */
    @ApiMember(Description="The date when the payment items was update")
    var Updated:Date? = null
}

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

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

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

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

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

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

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

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

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

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

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

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

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

open class BookingCalendarExportStatus
{
    var CalendarId:String? = null
    var BookingId:Int? = null
    var Synced:Boolean? = null
}

Kotlin CreateBooking DTOs

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

HTTP + OTHER

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

POST /bookings HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsonl
Content-Type: text/jsonl
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":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"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/jsonl
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,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"IsGroupBooking":false,"IsPaymentEnabled":false},"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"}},"CalendarExportStatus":{"CalendarId":"String","BookingId":0,"Synced":false},"LengthInMinutes":0,"BookedBy":"String","BookedComments":"String","UnbookedComments":"String","CommentsToCustomer":"String","UnbookedOn":"0001-01-01T00:00:00","CancellationCode":"String","RatingCode":"String"}