| 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). |
|---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using BokaMera.API.ServiceModel.Dtos;
using BokaMera.API.ServiceModel.Enums;
namespace BokaMera.API.ServiceModel.Dtos
{
public partial class BookedCompany
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual Uri LogoType { get; set; }
public virtual string Category { get; set; }
public virtual string Street1 { get; set; }
public virtual string Street2 { get; set; }
public virtual string ZipCode { get; set; }
public virtual string City { get; set; }
public virtual string CountryId { get; set; }
public virtual string Longitude { get; set; }
public virtual string Latitude { get; set; }
public virtual string Phone { get; set; }
public virtual string Email { get; set; }
public virtual string HomePage { get; set; }
public virtual string SitePath { get; set; }
public virtual bool IsFavorite { get; set; }
public virtual int? PaymentProviderId { get; set; }
}
public partial class BookedCustomer
{
public virtual Guid Id { get; set; }
public virtual string Firstname { get; set; }
public virtual string Lastname { get; set; }
public virtual string Email { get; set; }
public virtual string Phone { get; set; }
public virtual string FacebookUserName { get; set; }
public virtual string ImageUrl { get; set; }
public virtual string PersonalIdentityNumber { get; set; }
public virtual string CorporateIdentityNumber { get; set; }
public virtual string InvoiceAddress1 { get; set; }
public virtual string InvoiceAddress2 { get; set; }
public virtual string InvoiceCity { get; set; }
public virtual string InvoicePostalCode { get; set; }
public virtual string InvoiceCountryCode { get; set; }
///<summary>
///Tags attached to this customer.
///</summary>
[ApiMember(Description="Tags attached to this customer.")]
public virtual List<TagResponse> Tags { get; set; } = [];
}
public partial class BookedQuantity
{
///<summary>
///The quantity Id
///</summary>
[ApiMember(Description="The quantity Id")]
public virtual int Id { get; set; }
///<summary>
///The quantity for booked on this price category
///</summary>
[ApiMember(Description="The quantity for booked on this price category")]
public virtual int Quantity { get; set; }
///<summary>
///The price
///</summary>
[ApiMember(Description="The price")]
public virtual double? Price { get; set; }
///<summary>
///The price bofore rebate codes
///</summary>
[ApiMember(Description="The price bofore rebate codes")]
public virtual double? PriceBeforeRebate { get; set; }
///<summary>
///The price currency
///</summary>
[ApiMember(Description="The price currency")]
public virtual string CurrencyId { get; set; }
///<summary>
///The price sign
///</summary>
[ApiMember(Description="The price sign")]
public virtual string PriceSign { get; set; }
///<summary>
///The price category
///</summary>
[ApiMember(Description="The price category")]
public virtual string Category { get; set; }
///<summary>
///The price VAT in percent
///</summary>
[ApiMember(Description="The price VAT in percent")]
public virtual decimal? VAT { get; set; }
///<summary>
///The price text to display
///</summary>
[ApiMember(Description="The price text to display")]
public virtual string PriceText { get; set; }
///<summary>
///If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
///</summary>
[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.")]
public virtual bool OccupiesSpot { get; set; }
}
public partial class BookedResource
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Color { get; set; }
public virtual Uri ImageUrl { get; set; }
public virtual string Email { get; set; }
public virtual string MobilePhone { get; set; }
public virtual string AccessGroup { get; set; }
public virtual bool EmailNotification { get; set; }
public virtual bool SMSNotification { get; set; }
public virtual bool EmailReminder { get; set; }
public virtual bool SMSReminder { get; set; }
}
public partial class BookedResourceType
{
///<summary>
///The resource type id
///</summary>
[ApiMember(Description="The resource type id")]
public virtual int Id { get; set; }
///<summary>
///The resource type name
///</summary>
[ApiMember(Description="The resource type name")]
public virtual string Name { get; set; }
///<summary>
///The resources inside resource type
///</summary>
[ApiMember(Description="The resources inside resource type")]
public virtual List<BookedResource> Resources { get; set; } = [];
}
public partial class BookingCheckoutQueryResponse
{
///<summary>
///The checkout id
///</summary>
[ApiMember(Description="The checkout id")]
public virtual Guid Id { get; set; }
///<summary>
///The booking id
///</summary>
[ApiMember(Description="The booking id")]
public virtual int BookingId { get; set; }
///<summary>
///The purchase id
///</summary>
[ApiMember(Description="The purchase id")]
public virtual int? PurchaseId { get; set; }
///<summary>
///The payment checkout expiration datetime
///</summary>
[ApiMember(Description="The payment checkout expiration datetime")]
public virtual DateTime? ExpirationTime { get; set; }
///<summary>
///The payment snippet code
///</summary>
[ApiMember(Description="The payment snippet code")]
public virtual string Snippet { get; set; }
///<summary>
///The payment status
///</summary>
[ApiMember(Description="The payment status")]
public virtual string Status { get; set; }
///<summary>
///Log message
///</summary>
[ApiMember(Description="Log message")]
public virtual string Message { get; set; }
///<summary>
///When the checkout log item was created
///</summary>
[ApiMember(Description="When the checkout log item was created")]
public virtual DateTime Created { get; set; }
///<summary>
///When the checkout log item was updated
///</summary>
[ApiMember(Description="When the checkout log item was updated")]
public virtual DateTime Updated { get; set; }
}
public partial class BookingLogEventTypeResponse
{
///<summary>
///The event type id
///</summary>
[ApiMember(Description="The event type id")]
public virtual int Id { get; set; }
///<summary>
///The event type name
///</summary>
[ApiMember(Description="The event type name")]
public virtual string Name { get; set; }
///<summary>
///The event type description
///</summary>
[ApiMember(Description="The event type description")]
public virtual string Description { get; set; }
}
public partial class BookingLogQueryResponse
{
///<summary>
///The booking log id
///</summary>
[ApiMember(Description="The booking log id")]
public virtual int Id { get; set; }
///<summary>
///The booking id
///</summary>
[ApiMember(Description="The booking id")]
public virtual int BookingId { get; set; }
///<summary>
///The type of event
///</summary>
[ApiMember(Description="The type of event")]
public virtual int EventTypeId { get; set; }
///<summary>
///The type of event
///</summary>
[ApiMember(Description="The type of event")]
public virtual BookingLogEventTypeResponse EventType { get; set; }
///<summary>
///Comments that could be added to the event log item
///</summary>
[ApiMember(Description="Comments that could be added to the event log item")]
public virtual string Comments { get; set; }
///<summary>
///The user created the event
///</summary>
[ApiMember(Description="The user created the event")]
public virtual string UserName { get; set; }
///<summary>
///The date when the event occurred
///</summary>
[ApiMember(Description="The date when the event occurred")]
public virtual DateTime Created { get; set; }
}
public partial class BookingPaymentLogQueryResponse
{
///<summary>
///The booking payment log id
///</summary>
[ApiMember(Description="The booking payment log id")]
public virtual int Id { get; set; }
///<summary>
///The booking id
///</summary>
[ApiMember(Description="The booking id")]
public virtual int BookingId { get; set; }
///<summary>
///The payment reference id
///</summary>
[ApiMember(Description="The payment reference id")]
public virtual string PaymentReferenceId { get; set; }
///<summary>
///The payment order item reference id
///</summary>
[ApiMember(Description="The payment order item reference id")]
public virtual string OrderItemReferenceId { get; set; }
///<summary>
///The payment reference id
///</summary>
[ApiMember(Description="The payment reference id")]
public virtual int? PaymentProviderId { get; set; }
///<summary>
///The payment amount
///</summary>
[ApiMember(Description="The payment amount")]
public virtual double Amount { get; set; }
///<summary>
///The payment VAT in percent
///</summary>
[ApiMember(Description="The payment VAT in percent")]
public virtual decimal VAT { get; set; }
///<summary>
///The payment amount that is credited
///</summary>
[ApiMember(Description="The payment amount that is credited")]
public virtual double AmountCredited { get; set; }
///<summary>
///The payment currency id
///</summary>
[ApiMember(Description="The payment currency id")]
public virtual string CurrencyId { get; set; }
///<summary>
///The payment currency info
///</summary>
[ApiMember(Description="The payment currency info")]
public virtual CurrencyInfoResponse CurrencyInfo { get; set; }
///<summary>
///Comments that could be added to the event log item
///</summary>
[ApiMember(Description="Comments that could be added to the event log item")]
public virtual string Comments { get; set; }
///<summary>
///The date when the payment items was created
///</summary>
[ApiMember(Description="The date when the payment items was created")]
public virtual DateTime Created { get; set; }
///<summary>
///The date when the payment items were updated.
///</summary>
[ApiMember(Description="The date when the payment items were updated.")]
public virtual DateTime Updated { get; set; }
}
public partial class BookingQueryResponse
{
public virtual int Id { get; set; }
public virtual Guid CompanyId { get; set; }
public virtual DateTime From { get; set; }
public virtual DateTime To { get; set; }
public virtual BookingStatusEnum Status { get; set; }
public virtual int StatusId { get; set; }
public virtual string StatusName { get; set; }
public virtual BookingStatusQueryResponse StatusInfo { get; set; }
public virtual bool SendEmailReminder { get; set; }
public virtual bool SendSmsReminder { get; set; }
public virtual bool SendSmsConfirmation { get; set; }
public virtual bool SendEmailConfirmation { get; set; }
public virtual DateTime? LastTimeToUnBook { get; set; }
public virtual List<CustomFieldConfigData> CustomFields { get; set; } = [];
public virtual List<CustomFieldDataResponse> CustomFieldValues { get; set; } = [];
public virtual List<BookedResourceType> BookedResourceTypes { get; set; } = [];
public virtual BookedCompany Company { get; set; }
public virtual BookedCustomer Customer { get; set; }
public virtual List<BookedQuantity> Quantities { get; set; } = [];
public virtual ServiceInfoResponse Service { get; set; }
public virtual InvoiceAddressResponse InvoiceAddress { get; set; }
public virtual DateTime? PaymentExpiration { get; set; }
public virtual List<BookingLogQueryResponse> Log { get; set; } = [];
public virtual List<BookingPaymentLogQueryResponse> PaymentLog { get; set; } = [];
public virtual List<BookingCheckoutQueryResponse> CheckoutLog { get; set; } = [];
public virtual List<ExternalReferenceResponse> ExternalReference { get; set; } = [];
public virtual ResponseStatus ResponseStatus { get; set; }
public virtual int? LengthInMinutes { get; set; }
public virtual string BookedBy { get; set; }
public virtual string BookedComments { get; set; }
public virtual string UnbookedComments { get; set; }
public virtual string CommentsToCustomer { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual DateTime UpdatedDate { get; set; }
public virtual DateTime? UnbookedOn { get; set; }
public virtual string CancellationCode { get; set; }
public virtual string RatingCode { get; set; }
///<summary>
///The Google Meet URL for this booking, if Google Meet is enabled and a meeting was created.
///</summary>
[ApiMember(Description="The Google Meet URL for this booking, if Google Meet is enabled and a meeting was created.")]
public virtual string GoogleMeetUrl { get; set; }
///<summary>
///Tags attached to this booking.
///</summary>
[ApiMember(Description="Tags attached to this booking.")]
public virtual List<TagResponse> Tags { get; set; } = [];
}
public partial class BookingStatusQueryResponse
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Icon { get; set; }
public virtual string Color { get; set; }
}
public partial class CurrencyInfoResponse
{
///<summary>
///The currency id
///</summary>
[ApiMember(Description="The currency id")]
public virtual string Id { get; set; }
///<summary>
///The currency id
///</summary>
[ApiMember(Description="The currency id")]
public virtual string Name { get; set; }
///<summary>
///The currency id
///</summary>
[ApiMember(Description="The currency id")]
public virtual string CurrencySign { get; set; }
}
public partial class CustomFieldConfigData
{
///<summary>
///Custom field id
///</summary>
[ApiMember(Description="Custom field id")]
public virtual int Id { get; set; }
///<summary>
///Configuration name. Example: 'Number of persons'.
///</summary>
[ApiMember(Description="Configuration name. Example: 'Number of persons'.")]
public virtual string Name { get; set; }
///<summary>
///Custom field description. Example: 'For how many persons is this booking?'
///</summary>
[ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")]
public virtual string Description { get; set; }
///<summary>
///Field width. Example: 20 for 20px
///</summary>
[ApiMember(Description="Field width. Example: 20 for 20px")]
public virtual int? Width { get; set; }
///<summary>
///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
///</summary>
[ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")]
public virtual string DataType { get; set; }
///<summary>
///Default value of the field. Example: '3'
///</summary>
[ApiMember(Description="Default value of the field. Example: '3'")]
public virtual string DefaultValue { get; set; }
///<summary>
///Determines if the field is required to have a value or not
///</summary>
[ApiMember(Description="Determines if the field is required to have a value or not")]
public virtual bool IsMandatory { get; set; }
///<summary>
///Error message shown to the user if the field data is required but not entered
///</summary>
[ApiMember(Description="Error message shown to the user if the field data is required but not entered")]
public virtual string MandatoryErrorMessage { get; set; }
///<summary>
///Max lenght of the field
///</summary>
[ApiMember(Description="Max lenght of the field")]
public virtual int MaxLength { get; set; }
///<summary>
///If the field should have multiple lines
///</summary>
[ApiMember(Description="If the field should have multiple lines")]
public virtual bool MultipleLineText { get; set; }
///<summary>
///Regular expression used for validation of the field
///</summary>
[ApiMember(Description="Regular expression used for validation of the field")]
public virtual string RegEx { get; set; }
///<summary>
///Error message shown if the regular expression validation failed
///</summary>
[ApiMember(Description="Error message shown if the regular expression validation failed")]
public virtual string RegExErrorMessage { get; set; }
///<summary>
///The values to select from if Datatype is DropDown for this custom field
///</summary>
[ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")]
public virtual List<CustomFieldValueResponse> Values { get; set; } = [];
}
public partial class CustomFieldDataResponse
{
public virtual int Id { get; set; }
public virtual string Column { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Value { get; set; }
///<summary>
///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
///</summary>
[ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")]
public virtual string DataType { get; set; }
}
public partial class CustomFieldValueResponse
{
public virtual string Value { get; set; }
}
public partial class ExternalReferenceResponse
{
public virtual Guid CompanyId { get; set; }
public virtual Guid Id { get; set; }
public virtual Guid OwnerId { get; set; }
public virtual string ReferenceType { get; set; }
public virtual int ReferenceTypeId { get; set; }
public virtual string ExternalData { get; set; }
public virtual string CreatedBy { get; set; }
public virtual DateTime Updated { get; set; }
public virtual DateTime Created { get; set; }
}
public partial class GroupBookingSettings
{
public virtual bool Active { get; set; }
public virtual int Min { get; set; }
public virtual int Max { get; set; }
}
public partial class InvoiceAddressResponse
{
public virtual Guid InvoiceAddressId { get; set; }
public virtual Guid? UserId { get; set; }
public virtual string CorporateIdentityNumber { get; set; }
public virtual string InvoiceAddress1 { get; set; }
public virtual string InvoiceAddress2 { get; set; }
public virtual string InvoiceCity { get; set; }
public virtual string InvoicePostalCode { get; set; }
public virtual string InvoiceCountryCode { get; set; }
}
public partial class MultipleResourceSettings
{
public virtual bool Active { get; set; }
public virtual int Min { get; set; }
public virtual int Max { get; set; }
}
public partial class QuantityToBook
{
///<summary>
///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)
///</summary>
[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)]
public virtual int PriceId { get; set; }
///<summary>
///Set the number of spots or resources you want to book on the specific price category
///</summary>
[ApiMember(Description="Set the number of spots or resources you want to book on the specific price category", IsRequired=true)]
public virtual int Quantity { get; set; }
///<summary>
///If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
///</summary>
[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.")]
public virtual bool OccupiesSpot { get; set; }
}
[ApiResponse(Description="Booking not found", StatusCode=404)]
[ApiResponse(Description="The requested time slot is not available", StatusCode=409)]
public partial class RescheduleBookingByCode
{
///<summary>
///Id of the booking to reschedule
///</summary>
[ApiMember(Description="Id of the booking to reschedule", IsRequired=true, ParameterType="path")]
public virtual int Id { get; set; }
///<summary>
///The unique cancelation code for that booking
///</summary>
[ApiMember(Description="The unique cancelation code for that booking", IsRequired=true)]
public virtual string CancellationCode { get; set; }
///<summary>
///The new datetime you want to start the booking.
///</summary>
[ApiMember(Description="The new datetime you want to start the booking.", IsRequired=true)]
public virtual DateTime From { get; set; }
///<summary>
///The new datetime you want to end the booking.
///</summary>
[ApiMember(Description="The new datetime you want to end the booking.", IsRequired=true)]
public virtual DateTime To { get; set; }
///<summary>
///Set the number of spots/resources you want to book. If null, existing booking quantities are used.
///</summary>
[ApiMember(Description="Set the number of spots/resources you want to book. If null, existing booking quantities are used.")]
public virtual QuantityToBook[]? Quantities { get; set; }
///<summary>
///Resources you want to change. Leave empty to auto-select resources that are available for the new time.
///</summary>
[ApiMember(Description="Resources you want to change. Leave empty to auto-select resources that are available for the new time.")]
public virtual ResourceToUpdate? Resources { get; set; }
///<summary>
///If you want to send SMS confirmation about the reschedule. If null, it will take the default value of the bookings SendSMSConfirmation.
///</summary>
[ApiMember(Description="If you want to send SMS confirmation about the reschedule. If null, it will take the default value of the bookings SendSMSConfirmation.")]
public virtual bool? SendSmsConfirmation { get; set; }
///<summary>
///If you want to send Email confirmation about the reschedule. If null, it will take the default value of the bookings SendEmailConfirmation.
///</summary>
[ApiMember(Description="If you want to send Email confirmation about the reschedule. If null, it will take the default value of the bookings SendEmailConfirmation.")]
public virtual bool? SendEmailConfirmation { get; set; }
}
public partial class ResourceToBook
{
public virtual int ResourceTypeId { get; set; }
public virtual int ResourceId { get; set; }
}
public partial class ResourceToUpdate
{
///<summary>
///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
///</summary>
[ApiMember(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")]
public virtual bool AutoSelectNotDefinedResources { get; set; }
///<summary>
///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.
///</summary>
[ApiMember(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. ")]
public virtual List<ResourceToBook> Resources { get; set; } = [];
}
public partial class ServiceInfoResponse
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual Uri ImageUrl { get; set; }
public virtual int? LengthInMinutes { get; set; }
public virtual int MaxNumberOfSpotsPerBooking { get; set; }
public virtual int MinNumberOfSpotsPerBooking { get; set; }
public virtual GroupBookingSettings GroupBooking { get; set; }
public virtual MultipleResourceSettings MultipleResource { get; set; }
public virtual bool IsGroupBooking { get; set; }
public virtual bool IsPaymentEnabled { get; set; }
}
public partial class TagResponse
{
public virtual int Id { get; set; }
public virtual Guid CompanyId { get; set; }
public virtual string Name { get; set; }
public virtual int Scope { get; set; }
public virtual string Color { get; set; }
public virtual int SortOrder { get; set; }
public virtual bool Active { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual ResponseStatus ResponseStatus { get; set; }
}
}
namespace BokaMera.API.ServiceModel.Enums
{
public enum BookingStatusEnum
{
Booked = 1,
Unbooked = 2,
Reserved = 3,
Canceled = 4,
AwaitingPayment = 5,
AwaitingPaymentNoTimeLimit = 6,
Payed = 7,
AwaitingPaymentRequestFromAdmin = 8,
AwaitingPaymentFromProvider = 9,
Invoiced = 10,
}
}
C# 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"}}}]}