| PUT | /bookings/reschedulebycode/{Id} | Reschedule an existing booking using a cancellation code | Reschedule an existing booking to a new time slot without being authenticated, by providing the booking's cancellation code (the same code used to cancel it, and the one included in the reschedule link sent to customers). The same validations as PUT /bookings/{Id}/reschedule are applied (duration, collisions, schedules, and resource availability). |
|---|
"use strict";
/** @typedef {number} */
export var BookingStatusEnum;
(function (BookingStatusEnum) {
BookingStatusEnum[BookingStatusEnum["Booked"] = 1] = "Booked"
BookingStatusEnum[BookingStatusEnum["Unbooked"] = 2] = "Unbooked"
BookingStatusEnum[BookingStatusEnum["Reserved"] = 3] = "Reserved"
BookingStatusEnum[BookingStatusEnum["Canceled"] = 4] = "Canceled"
BookingStatusEnum[BookingStatusEnum["AwaitingPayment"] = 5] = "AwaitingPayment"
BookingStatusEnum[BookingStatusEnum["AwaitingPaymentNoTimeLimit"] = 6] = "AwaitingPaymentNoTimeLimit"
BookingStatusEnum[BookingStatusEnum["Payed"] = 7] = "Payed"
BookingStatusEnum[BookingStatusEnum["AwaitingPaymentRequestFromAdmin"] = 8] = "AwaitingPaymentRequestFromAdmin"
BookingStatusEnum[BookingStatusEnum["AwaitingPaymentFromProvider"] = 9] = "AwaitingPaymentFromProvider"
BookingStatusEnum[BookingStatusEnum["Invoiced"] = 10] = "Invoiced"
})(BookingStatusEnum || (BookingStatusEnum = {}));
export class BookingStatusQueryResponse {
/** @param {{Id?:number,Name?:string,Description?:string,Icon?:string,Color?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Name;
/** @type {string} */
Description;
/** @type {string} */
Icon;
/** @type {string} */
Color;
}
export class CustomFieldValueResponse {
/** @param {{Value?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Value;
}
export class CustomFieldConfigData {
/** @param {{Id?:number,Name?:string,Description?:string,Width?:number,DataType?:string,DefaultValue?:string,IsMandatory?:boolean,MandatoryErrorMessage?:string,MaxLength?:number,MultipleLineText?:boolean,RegEx?:string,RegExErrorMessage?:string,Values?:CustomFieldValueResponse[]}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description Custom field id */
Id;
/**
* @type {string}
* @description Configuration name. Example: 'Number of persons'. */
Name;
/**
* @type {string}
* @description Custom field description. Example: 'For how many persons is this booking?' */
Description;
/**
* @type {?number}
* @description Field width. Example: 20 for 20px */
Width;
/**
* @type {string}
* @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
DataType;
/**
* @type {string}
* @description Default value of the field. Example: '3' */
DefaultValue;
/**
* @type {boolean}
* @description Determines if the field is required to have a value or not */
IsMandatory;
/**
* @type {string}
* @description Error message shown to the user if the field data is required but not entered */
MandatoryErrorMessage;
/**
* @type {number}
* @description Max lenght of the field */
MaxLength;
/**
* @type {boolean}
* @description If the field should have multiple lines */
MultipleLineText;
/**
* @type {string}
* @description Regular expression used for validation of the field */
RegEx;
/**
* @type {string}
* @description Error message shown if the regular expression validation failed */
RegExErrorMessage;
/**
* @type {CustomFieldValueResponse[]}
* @description The values to select from if Datatype is DropDown for this custom field */
Values = [];
}
export class CustomFieldDataResponse {
/** @param {{Id?:number,Column?:string,Name?:string,Description?:string,Value?:string,DataType?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Column;
/** @type {string} */
Name;
/** @type {string} */
Description;
/** @type {string} */
Value;
/**
* @type {string}
* @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
DataType;
}
export class BookedResource {
/** @param {{Id?:number,Name?:string,Color?:string,ImageUrl?:string,Email?:string,MobilePhone?:string,AccessGroup?:string,EmailNotification?:boolean,SMSNotification?:boolean,EmailReminder?:boolean,SMSReminder?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Name;
/** @type {string} */
Color;
/** @type {string} */
ImageUrl;
/** @type {string} */
Email;
/** @type {string} */
MobilePhone;
/** @type {string} */
AccessGroup;
/** @type {boolean} */
EmailNotification;
/** @type {boolean} */
SMSNotification;
/** @type {boolean} */
EmailReminder;
/** @type {boolean} */
SMSReminder;
}
export class BookedResourceType {
/** @param {{Id?:number,Name?:string,Resources?:BookedResource[]}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The resource type id */
Id;
/**
* @type {string}
* @description The resource type name */
Name;
/**
* @type {BookedResource[]}
* @description The resources inside resource type */
Resources = [];
}
export class BookedCompany {
/** @param {{Id?:string,Name?:string,LogoType?: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?:boolean,PaymentProviderId?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Id;
/** @type {string} */
Name;
/** @type {string} */
LogoType;
/** @type {string} */
Category;
/** @type {string} */
Street1;
/** @type {string} */
Street2;
/** @type {string} */
ZipCode;
/** @type {string} */
City;
/** @type {string} */
CountryId;
/** @type {string} */
Longitude;
/** @type {string} */
Latitude;
/** @type {string} */
Phone;
/** @type {string} */
Email;
/** @type {string} */
HomePage;
/** @type {string} */
SitePath;
/** @type {boolean} */
IsFavorite;
/** @type {?number} */
PaymentProviderId;
}
export class TagResponse {
/** @param {{Id?:number,CompanyId?:string,Name?:string,Scope?:number,Color?:string,SortOrder?:number,Active?:boolean,CreatedDate?:string,ResponseStatus?:ResponseStatus}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
CompanyId;
/** @type {string} */
Name;
/** @type {number} */
Scope;
/** @type {string} */
Color;
/** @type {number} */
SortOrder;
/** @type {boolean} */
Active;
/** @type {string} */
CreatedDate;
/** @type {ResponseStatus} */
ResponseStatus;
}
export class BookedCustomer {
/** @param {{Id?:string,Firstname?:string,Lastname?:string,Email?:string,Phone?:string,FacebookUserName?:string,ImageUrl?:string,PersonalIdentityNumber?:string,CorporateIdentityNumber?:string,InvoiceAddress1?:string,InvoiceAddress2?:string,InvoiceCity?:string,InvoicePostalCode?:string,InvoiceCountryCode?:string,Tags?:TagResponse[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Id;
/** @type {string} */
Firstname;
/** @type {string} */
Lastname;
/** @type {string} */
Email;
/** @type {string} */
Phone;
/** @type {string} */
FacebookUserName;
/** @type {string} */
ImageUrl;
/** @type {string} */
PersonalIdentityNumber;
/** @type {string} */
CorporateIdentityNumber;
/** @type {string} */
InvoiceAddress1;
/** @type {string} */
InvoiceAddress2;
/** @type {string} */
InvoiceCity;
/** @type {string} */
InvoicePostalCode;
/** @type {string} */
InvoiceCountryCode;
/**
* @type {TagResponse[]}
* @description Tags attached to this customer. */
Tags = [];
}
export class BookedQuantity {
/** @param {{Id?:number,Quantity?:number,Price?:number,PriceBeforeRebate?:number,CurrencyId?:string,PriceSign?:string,Category?:string,VAT?:number,PriceText?:string,OccupiesSpot?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The quantity Id */
Id;
/**
* @type {number}
* @description The quantity for booked on this price category */
Quantity;
/**
* @type {?number}
* @description The price */
Price;
/**
* @type {?number}
* @description The price bofore rebate codes */
PriceBeforeRebate;
/**
* @type {string}
* @description The price currency */
CurrencyId;
/**
* @type {string}
* @description The price sign */
PriceSign;
/**
* @type {string}
* @description The price category */
Category;
/**
* @type {?number}
* @description The price VAT in percent */
VAT;
/**
* @type {string}
* @description The price text to display */
PriceText;
/**
* @type {boolean}
* @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. */
OccupiesSpot;
}
export class GroupBookingSettings {
/** @param {{Active?:boolean,Min?:number,Max?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
Active;
/** @type {number} */
Min;
/** @type {number} */
Max;
}
export class MultipleResourceSettings {
/** @param {{Active?:boolean,Min?:number,Max?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
Active;
/** @type {number} */
Min;
/** @type {number} */
Max;
}
export class ServiceInfoResponse {
/** @param {{Id?:number,Name?:string,Description?:string,ImageUrl?:string,LengthInMinutes?:number,MaxNumberOfSpotsPerBooking?:number,MinNumberOfSpotsPerBooking?:number,GroupBooking?:GroupBookingSettings,MultipleResource?:MultipleResourceSettings,IsGroupBooking?:boolean,IsPaymentEnabled?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Name;
/** @type {string} */
Description;
/** @type {string} */
ImageUrl;
/** @type {?number} */
LengthInMinutes;
/** @type {number} */
MaxNumberOfSpotsPerBooking;
/** @type {number} */
MinNumberOfSpotsPerBooking;
/** @type {GroupBookingSettings} */
GroupBooking;
/** @type {MultipleResourceSettings} */
MultipleResource;
/** @type {boolean} */
IsGroupBooking;
/** @type {boolean} */
IsPaymentEnabled;
}
export class InvoiceAddressResponse {
/** @param {{InvoiceAddressId?:string,UserId?:string,CorporateIdentityNumber?:string,InvoiceAddress1?:string,InvoiceAddress2?:string,InvoiceCity?:string,InvoicePostalCode?:string,InvoiceCountryCode?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
InvoiceAddressId;
/** @type {?string} */
UserId;
/** @type {string} */
CorporateIdentityNumber;
/** @type {string} */
InvoiceAddress1;
/** @type {string} */
InvoiceAddress2;
/** @type {string} */
InvoiceCity;
/** @type {string} */
InvoicePostalCode;
/** @type {string} */
InvoiceCountryCode;
}
export class BookingLogEventTypeResponse {
/** @param {{Id?:number,Name?:string,Description?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The event type id */
Id;
/**
* @type {string}
* @description The event type name */
Name;
/**
* @type {string}
* @description The event type description */
Description;
}
export class BookingLogQueryResponse {
/** @param {{Id?:number,BookingId?:number,EventTypeId?:number,EventType?:BookingLogEventTypeResponse,Comments?:string,UserName?:string,Created?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The booking log id */
Id;
/**
* @type {number}
* @description The booking id */
BookingId;
/**
* @type {number}
* @description The type of event */
EventTypeId;
/**
* @type {BookingLogEventTypeResponse}
* @description The type of event */
EventType;
/**
* @type {string}
* @description Comments that could be added to the event log item */
Comments;
/**
* @type {string}
* @description The user created the event */
UserName;
/**
* @type {string}
* @description The date when the event occurred */
Created;
}
export class CurrencyInfoResponse {
/** @param {{Id?:string,Name?:string,CurrencySign?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {string}
* @description The currency id */
Id;
/**
* @type {string}
* @description The currency id */
Name;
/**
* @type {string}
* @description The currency id */
CurrencySign;
}
export class BookingPaymentLogQueryResponse {
/** @param {{Id?:number,BookingId?:number,PaymentReferenceId?:string,OrderItemReferenceId?:string,PaymentProviderId?:number,Amount?:number,VAT?:number,AmountCredited?:number,CurrencyId?:string,CurrencyInfo?:CurrencyInfoResponse,Comments?:string,Created?:string,Updated?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description The booking payment log id */
Id;
/**
* @type {number}
* @description The booking id */
BookingId;
/**
* @type {string}
* @description The payment reference id */
PaymentReferenceId;
/**
* @type {string}
* @description The payment order item reference id */
OrderItemReferenceId;
/**
* @type {?number}
* @description The payment reference id */
PaymentProviderId;
/**
* @type {number}
* @description The payment amount */
Amount;
/**
* @type {number}
* @description The payment VAT in percent */
VAT;
/**
* @type {number}
* @description The payment amount that is credited */
AmountCredited;
/**
* @type {string}
* @description The payment currency id */
CurrencyId;
/**
* @type {CurrencyInfoResponse}
* @description The payment currency info */
CurrencyInfo;
/**
* @type {string}
* @description Comments that could be added to the event log item */
Comments;
/**
* @type {string}
* @description The date when the payment items was created */
Created;
/**
* @type {string}
* @description The date when the payment items were updated. */
Updated;
}
export class BookingCheckoutQueryResponse {
/** @param {{Id?:string,BookingId?:number,PurchaseId?:number,ExpirationTime?:string,Snippet?:string,Status?:string,Message?:string,Created?:string,Updated?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {string}
* @description The checkout id */
Id;
/**
* @type {number}
* @description The booking id */
BookingId;
/**
* @type {?number}
* @description The purchase id */
PurchaseId;
/**
* @type {?string}
* @description The payment checkout expiration datetime */
ExpirationTime;
/**
* @type {string}
* @description The payment snippet code */
Snippet;
/**
* @type {string}
* @description The payment status */
Status;
/**
* @type {string}
* @description Log message */
Message;
/**
* @type {string}
* @description When the checkout log item was created */
Created;
/**
* @type {string}
* @description When the checkout log item was updated */
Updated;
}
export class ExternalReferenceResponse {
/** @param {{CompanyId?:string,Id?:string,OwnerId?:string,ReferenceType?:string,ReferenceTypeId?:number,ExternalData?:string,CreatedBy?:string,Updated?:string,Created?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
CompanyId;
/** @type {string} */
Id;
/** @type {string} */
OwnerId;
/** @type {string} */
ReferenceType;
/** @type {number} */
ReferenceTypeId;
/** @type {string} */
ExternalData;
/** @type {string} */
CreatedBy;
/** @type {string} */
Updated;
/** @type {string} */
Created;
}
export class BookingQueryResponse {
/** @param {{Id?:number,CompanyId?:string,From?:string,To?:string,Status?:BookingStatusEnum,StatusId?:number,StatusName?:string,StatusInfo?:BookingStatusQueryResponse,SendEmailReminder?:boolean,SendSmsReminder?:boolean,SendSmsConfirmation?:boolean,SendEmailConfirmation?:boolean,LastTimeToUnBook?:string,CustomFields?:CustomFieldConfigData[],CustomFieldValues?:CustomFieldDataResponse[],BookedResourceTypes?:BookedResourceType[],Company?:BookedCompany,Customer?:BookedCustomer,Quantities?:BookedQuantity[],Service?:ServiceInfoResponse,InvoiceAddress?:InvoiceAddressResponse,PaymentExpiration?:string,Log?:BookingLogQueryResponse[],PaymentLog?:BookingPaymentLogQueryResponse[],CheckoutLog?:BookingCheckoutQueryResponse[],ExternalReference?:ExternalReferenceResponse[],ResponseStatus?:ResponseStatus,LengthInMinutes?:number,BookedBy?:string,BookedComments?:string,UnbookedComments?:string,CommentsToCustomer?:string,CreatedDate?:string,UpdatedDate?:string,UnbookedOn?:string,CancellationCode?:string,RatingCode?:string,GoogleMeetUrl?:string,Tags?:TagResponse[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
CompanyId;
/** @type {string} */
From;
/** @type {string} */
To;
/** @type {BookingStatusEnum} */
Status;
/** @type {number} */
StatusId;
/** @type {string} */
StatusName;
/** @type {BookingStatusQueryResponse} */
StatusInfo;
/** @type {boolean} */
SendEmailReminder;
/** @type {boolean} */
SendSmsReminder;
/** @type {boolean} */
SendSmsConfirmation;
/** @type {boolean} */
SendEmailConfirmation;
/** @type {?string} */
LastTimeToUnBook;
/** @type {CustomFieldConfigData[]} */
CustomFields = [];
/** @type {CustomFieldDataResponse[]} */
CustomFieldValues = [];
/** @type {BookedResourceType[]} */
BookedResourceTypes = [];
/** @type {BookedCompany} */
Company;
/** @type {BookedCustomer} */
Customer;
/** @type {BookedQuantity[]} */
Quantities = [];
/** @type {ServiceInfoResponse} */
Service;
/** @type {InvoiceAddressResponse} */
InvoiceAddress;
/** @type {?string} */
PaymentExpiration;
/** @type {BookingLogQueryResponse[]} */
Log = [];
/** @type {BookingPaymentLogQueryResponse[]} */
PaymentLog = [];
/** @type {BookingCheckoutQueryResponse[]} */
CheckoutLog = [];
/** @type {ExternalReferenceResponse[]} */
ExternalReference = [];
/** @type {ResponseStatus} */
ResponseStatus;
/** @type {?number} */
LengthInMinutes;
/** @type {string} */
BookedBy;
/** @type {string} */
BookedComments;
/** @type {string} */
UnbookedComments;
/** @type {string} */
CommentsToCustomer;
/** @type {string} */
CreatedDate;
/** @type {string} */
UpdatedDate;
/** @type {?string} */
UnbookedOn;
/** @type {string} */
CancellationCode;
/** @type {string} */
RatingCode;
/**
* @type {string}
* @description The Google Meet URL for this booking, if Google Meet is enabled and a meeting was created. */
GoogleMeetUrl;
/**
* @type {TagResponse[]}
* @description Tags attached to this booking. */
Tags = [];
}
export class QuantityToBook {
/** @param {{PriceId?:number,Quantity?:number,OccupiesSpot?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @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) */
PriceId;
/**
* @type {number}
* @description Set the number of spots or resources you want to book on the specific price category */
Quantity;
/**
* @type {boolean}
* @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. */
OccupiesSpot;
}
export class ResourceToBook {
/** @param {{ResourceTypeId?:number,ResourceId?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
ResourceTypeId;
/** @type {number} */
ResourceId;
}
export class ResourceToUpdate {
/** @param {{AutoSelectNotDefinedResources?:boolean,Resources?:ResourceToBook[]}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {boolean}
* @description Set this property to true if you want to autoselected not provided resources. If false you will need to add all resources you want to have booked */
AutoSelectNotDefinedResources;
/**
* @type {ResourceToBook[]}
* @description All resources to be booked, if AutoSelectNotDefinedResources is true you will only need to provide the one you want to select, rest will be auto selected if avaiable. */
Resources = [];
}
export class RescheduleBookingByCode {
/** @param {{Id?:number,CancellationCode?:string,From?:string,To?:string,Quantities?:QuantityToBook[],Resources?:ResourceToUpdate,SendSmsConfirmation?:boolean,SendEmailConfirmation?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/**
* @type {number}
* @description Id of the booking to reschedule */
Id;
/**
* @type {string}
* @description The unique cancelation code for that booking */
CancellationCode;
/**
* @type {string}
* @description The new datetime you want to start the booking. */
From;
/**
* @type {string}
* @description The new datetime you want to end the booking. */
To;
/**
* @type {?QuantityToBook[]}
* @description Set the number of spots/resources you want to book. If null, existing booking quantities are used. */
Quantities;
/**
* @type {?ResourceToUpdate}
* @description Resources you want to change. Leave empty to auto-select resources that are available for the new time. */
Resources;
/**
* @type {?boolean}
* @description If you want to send SMS confirmation about the reschedule. If null, it will take the default value of the bookings SendSMSConfirmation. */
SendSmsConfirmation;
/**
* @type {?boolean}
* @description If you want to send Email confirmation about the reschedule. If null, it will take the default value of the bookings SendEmailConfirmation. */
SendEmailConfirmation;
}
JavaScript RescheduleBookingByCode DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
PUT /bookings/reschedulebycode/{Id} HTTP/1.1
Host: testapi.bokamera.se
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"Id":0,"CancellationCode":"String","Quantities":[{"PriceId":0,"Quantity":0,"OccupiesSpot":false}],"Resources":{"AutoSelectNotDefinedResources":false,"Resources":[{"ResourceTypeId":0,"ResourceId":0}]},"SendSmsConfirmation":false,"SendEmailConfirmation":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","PersonalIdentityNumber":"String","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String","Tags":[{"Id":0,"Name":"String","Scope":0,"Color":"String","SortOrder":0,"Active":false,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"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","ReferenceTypeId":0,"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","GoogleMeetUrl":"String","Tags":[{"Id":0,"Name":"String","Scope":0,"Color":"String","SortOrder":0,"Active":false,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}]}