BokaMera.API.Host

<back to all web services

DeclineBooking

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
PUT/bookings/{Id}/declineDecline a booking that is reserved and awaiting approvalUpdates an existing booking with canceled status if you are authorized to do so.
import 'package:servicestack/servicestack.dart';

enum BookingStatusEnum
{
    Booked,
    Unbooked,
    Reserved,
    Canceled,
    AwaitingPayment,
    AwaitingPaymentNoTimeLimit,
    Payed,
    AwaitingPaymentRequestFromAdmin,
    AwaitingPaymentFromProvider,
    Invoiced,
}

class BookingStatusQueryResponse implements IConvertible
{
    int? Id;
    String? Name;
    String? Description;
    String? Icon;
    String? Color;

    BookingStatusQueryResponse({this.Id,this.Name,this.Description,this.Icon,this.Color});
    BookingStatusQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        Icon = json['Icon'];
        Color = json['Color'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description,
        'Icon': Icon,
        'Color': Color
    };

    getTypeName() => "BookingStatusQueryResponse";
    TypeContext? context = _ctx;
}

class CustomFieldValueResponse implements IConvertible
{
    String? Value;

    CustomFieldValueResponse({this.Value});
    CustomFieldValueResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Value': Value
    };

    getTypeName() => "CustomFieldValueResponse";
    TypeContext? context = _ctx;
}

class CustomFieldConfigData implements IConvertible
{
    /**
    * Custom field id
    */
    // @ApiMember(Description="Custom field id")
    int? Id;

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

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

    /**
    * Field width. Example: 20 for 20px
    */
    // @ApiMember(Description="Field width. Example: 20 for 20px")
    int? Width;

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

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

    /**
    * 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")
    bool? IsMandatory;

    /**
    * 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")
    String? MandatoryErrorMessage;

    /**
    * Max lenght of the field
    */
    // @ApiMember(Description="Max lenght of the field")
    int? MaxLength;

    /**
    * If the field should have multiple lines
    */
    // @ApiMember(Description="If the field should have multiple lines")
    bool? MultipleLineText;

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

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

    /**
    * 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")
    List<CustomFieldValueResponse>? Values;

    CustomFieldConfigData({this.Id,this.Name,this.Description,this.Width,this.DataType,this.DefaultValue,this.IsMandatory,this.MandatoryErrorMessage,this.MaxLength,this.MultipleLineText,this.RegEx,this.RegExErrorMessage,this.Values});
    CustomFieldConfigData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        Width = json['Width'];
        DataType = json['DataType'];
        DefaultValue = json['DefaultValue'];
        IsMandatory = json['IsMandatory'];
        MandatoryErrorMessage = json['MandatoryErrorMessage'];
        MaxLength = json['MaxLength'];
        MultipleLineText = json['MultipleLineText'];
        RegEx = json['RegEx'];
        RegExErrorMessage = json['RegExErrorMessage'];
        Values = JsonConverters.fromJson(json['Values'],'List<CustomFieldValueResponse>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description,
        'Width': Width,
        'DataType': DataType,
        'DefaultValue': DefaultValue,
        'IsMandatory': IsMandatory,
        'MandatoryErrorMessage': MandatoryErrorMessage,
        'MaxLength': MaxLength,
        'MultipleLineText': MultipleLineText,
        'RegEx': RegEx,
        'RegExErrorMessage': RegExErrorMessage,
        'Values': JsonConverters.toJson(Values,'List<CustomFieldValueResponse>',context!)
    };

    getTypeName() => "CustomFieldConfigData";
    TypeContext? context = _ctx;
}

class CustomFieldDataResponse implements IConvertible
{
    int? Id;
    String? Column;
    String? Name;
    String? Description;
    String? Value;
    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    String? DataType;

    CustomFieldDataResponse({this.Id,this.Column,this.Name,this.Description,this.Value,this.DataType});
    CustomFieldDataResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Column = json['Column'];
        Name = json['Name'];
        Description = json['Description'];
        Value = json['Value'];
        DataType = json['DataType'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Column': Column,
        'Name': Name,
        'Description': Description,
        'Value': Value,
        'DataType': DataType
    };

    getTypeName() => "CustomFieldDataResponse";
    TypeContext? context = _ctx;
}

class BookedResource implements IConvertible
{
    int? Id;
    String? Name;
    String? Color;
    Uri? ImageUrl;
    String? Email;
    String? MobilePhone;
    String? AccessGroup;
    bool? EmailNotification;
    bool? SMSNotification;
    bool? EmailReminder;
    bool? SMSReminder;

    BookedResource({this.Id,this.Name,this.Color,this.ImageUrl,this.Email,this.MobilePhone,this.AccessGroup,this.EmailNotification,this.SMSNotification,this.EmailReminder,this.SMSReminder});
    BookedResource.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Color = json['Color'];
        ImageUrl = JsonConverters.fromJson(json['ImageUrl'],'Uri',context!);
        Email = json['Email'];
        MobilePhone = json['MobilePhone'];
        AccessGroup = json['AccessGroup'];
        EmailNotification = json['EmailNotification'];
        SMSNotification = json['SMSNotification'];
        EmailReminder = json['EmailReminder'];
        SMSReminder = json['SMSReminder'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Color': Color,
        'ImageUrl': JsonConverters.toJson(ImageUrl,'Uri',context!),
        'Email': Email,
        'MobilePhone': MobilePhone,
        'AccessGroup': AccessGroup,
        'EmailNotification': EmailNotification,
        'SMSNotification': SMSNotification,
        'EmailReminder': EmailReminder,
        'SMSReminder': SMSReminder
    };

    getTypeName() => "BookedResource";
    TypeContext? context = _ctx;
}

class BookedResourceType implements IConvertible
{
    /**
    * The resource type id
    */
    // @ApiMember(Description="The resource type id")
    int? Id;

    /**
    * The resource type name
    */
    // @ApiMember(Description="The resource type name")
    String? Name;

    /**
    * The resources inside resource type
    */
    // @ApiMember(Description="The resources inside resource type")
    List<BookedResource>? Resources;

    BookedResourceType({this.Id,this.Name,this.Resources});
    BookedResourceType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Resources = JsonConverters.fromJson(json['Resources'],'List<BookedResource>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Resources': JsonConverters.toJson(Resources,'List<BookedResource>',context!)
    };

    getTypeName() => "BookedResourceType";
    TypeContext? context = _ctx;
}

class BookedCompany implements IConvertible
{
    String? Id;
    String? Name;
    Uri? 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;
    bool? IsFavorite;
    int? PaymentProviderId;

    BookedCompany({this.Id,this.Name,this.LogoType,this.Category,this.Street1,this.Street2,this.ZipCode,this.City,this.CountryId,this.Longitude,this.Latitude,this.Phone,this.Email,this.HomePage,this.SitePath,this.IsFavorite,this.PaymentProviderId});
    BookedCompany.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        LogoType = JsonConverters.fromJson(json['LogoType'],'Uri',context!);
        Category = json['Category'];
        Street1 = json['Street1'];
        Street2 = json['Street2'];
        ZipCode = json['ZipCode'];
        City = json['City'];
        CountryId = json['CountryId'];
        Longitude = json['Longitude'];
        Latitude = json['Latitude'];
        Phone = json['Phone'];
        Email = json['Email'];
        HomePage = json['HomePage'];
        SitePath = json['SitePath'];
        IsFavorite = json['IsFavorite'];
        PaymentProviderId = json['PaymentProviderId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'LogoType': JsonConverters.toJson(LogoType,'Uri',context!),
        'Category': Category,
        'Street1': Street1,
        'Street2': Street2,
        'ZipCode': ZipCode,
        'City': City,
        'CountryId': CountryId,
        'Longitude': Longitude,
        'Latitude': Latitude,
        'Phone': Phone,
        'Email': Email,
        'HomePage': HomePage,
        'SitePath': SitePath,
        'IsFavorite': IsFavorite,
        'PaymentProviderId': PaymentProviderId
    };

    getTypeName() => "BookedCompany";
    TypeContext? context = _ctx;
}

class BookedCustomer implements IConvertible
{
    String? Id;
    String? Firstname;
    String? Lastname;
    String? Email;
    String? Phone;
    String? FacebookUserName;
    String? ImageUrl;
    String? CorporateIdentityNumber;
    String? InvoiceAddress1;
    String? InvoiceAddress2;
    String? InvoiceCity;
    String? InvoicePostalCode;
    String? InvoiceCountryCode;

    BookedCustomer({this.Id,this.Firstname,this.Lastname,this.Email,this.Phone,this.FacebookUserName,this.ImageUrl,this.CorporateIdentityNumber,this.InvoiceAddress1,this.InvoiceAddress2,this.InvoiceCity,this.InvoicePostalCode,this.InvoiceCountryCode});
    BookedCustomer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Firstname = json['Firstname'];
        Lastname = json['Lastname'];
        Email = json['Email'];
        Phone = json['Phone'];
        FacebookUserName = json['FacebookUserName'];
        ImageUrl = json['ImageUrl'];
        CorporateIdentityNumber = json['CorporateIdentityNumber'];
        InvoiceAddress1 = json['InvoiceAddress1'];
        InvoiceAddress2 = json['InvoiceAddress2'];
        InvoiceCity = json['InvoiceCity'];
        InvoicePostalCode = json['InvoicePostalCode'];
        InvoiceCountryCode = json['InvoiceCountryCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Firstname': Firstname,
        'Lastname': Lastname,
        'Email': Email,
        'Phone': Phone,
        'FacebookUserName': FacebookUserName,
        'ImageUrl': ImageUrl,
        'CorporateIdentityNumber': CorporateIdentityNumber,
        'InvoiceAddress1': InvoiceAddress1,
        'InvoiceAddress2': InvoiceAddress2,
        'InvoiceCity': InvoiceCity,
        'InvoicePostalCode': InvoicePostalCode,
        'InvoiceCountryCode': InvoiceCountryCode
    };

    getTypeName() => "BookedCustomer";
    TypeContext? context = _ctx;
}

class BookedQuantity implements IConvertible
{
    /**
    * The quantity Id
    */
    // @ApiMember(Description="The quantity Id")
    int? Id;

    /**
    * The quantity for booked on this price category
    */
    // @ApiMember(Description="The quantity for booked on this price category")
    int? Quantity;

    /**
    * The price
    */
    // @ApiMember(Description="The price")
    double? Price;

    /**
    * The price bofore rebate codes
    */
    // @ApiMember(Description="The price bofore rebate codes")
    double? PriceBeforeRebate;

    /**
    * The price currency
    */
    // @ApiMember(Description="The price currency")
    String? CurrencyId;

    /**
    * The price sign
    */
    // @ApiMember(Description="The price sign")
    String? PriceSign;

    /**
    * The price category
    */
    // @ApiMember(Description="The price category")
    String? Category;

    /**
    * The price VAT in percent
    */
    // @ApiMember(Description="The price VAT in percent")
    double? VAT;

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

    /**
    * 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.")
    bool? OccupiesSpot;

    BookedQuantity({this.Id,this.Quantity,this.Price,this.PriceBeforeRebate,this.CurrencyId,this.PriceSign,this.Category,this.VAT,this.PriceText,this.OccupiesSpot});
    BookedQuantity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Quantity = json['Quantity'];
        Price = JsonConverters.toDouble(json['Price']);
        PriceBeforeRebate = JsonConverters.toDouble(json['PriceBeforeRebate']);
        CurrencyId = json['CurrencyId'];
        PriceSign = json['PriceSign'];
        Category = json['Category'];
        VAT = JsonConverters.toDouble(json['VAT']);
        PriceText = json['PriceText'];
        OccupiesSpot = json['OccupiesSpot'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Quantity': Quantity,
        'Price': Price,
        'PriceBeforeRebate': PriceBeforeRebate,
        'CurrencyId': CurrencyId,
        'PriceSign': PriceSign,
        'Category': Category,
        'VAT': VAT,
        'PriceText': PriceText,
        'OccupiesSpot': OccupiesSpot
    };

    getTypeName() => "BookedQuantity";
    TypeContext? context = _ctx;
}

class GroupBookingSettings implements IConvertible
{
    bool? Active;
    int? Min;
    int? Max;

    GroupBookingSettings({this.Active,this.Min,this.Max});
    GroupBookingSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Active = json['Active'];
        Min = json['Min'];
        Max = json['Max'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Active': Active,
        'Min': Min,
        'Max': Max
    };

    getTypeName() => "GroupBookingSettings";
    TypeContext? context = _ctx;
}

class MultipleResourceSettings implements IConvertible
{
    bool? Active;
    int? Min;
    int? Max;

    MultipleResourceSettings({this.Active,this.Min,this.Max});
    MultipleResourceSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Active = json['Active'];
        Min = json['Min'];
        Max = json['Max'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Active': Active,
        'Min': Min,
        'Max': Max
    };

    getTypeName() => "MultipleResourceSettings";
    TypeContext? context = _ctx;
}

class ServiceInfoResponse implements IConvertible
{
    int? Id;
    String? Name;
    String? Description;
    Uri? ImageUrl;
    int? LengthInMinutes;
    int? MaxNumberOfSpotsPerBooking;
    int? MinNumberOfSpotsPerBooking;
    GroupBookingSettings? GroupBooking;
    MultipleResourceSettings? MultipleResource;
    bool? IsGroupBooking;
    bool? IsPaymentEnabled;

    ServiceInfoResponse({this.Id,this.Name,this.Description,this.ImageUrl,this.LengthInMinutes,this.MaxNumberOfSpotsPerBooking,this.MinNumberOfSpotsPerBooking,this.GroupBooking,this.MultipleResource,this.IsGroupBooking,this.IsPaymentEnabled});
    ServiceInfoResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        ImageUrl = JsonConverters.fromJson(json['ImageUrl'],'Uri',context!);
        LengthInMinutes = json['LengthInMinutes'];
        MaxNumberOfSpotsPerBooking = json['MaxNumberOfSpotsPerBooking'];
        MinNumberOfSpotsPerBooking = json['MinNumberOfSpotsPerBooking'];
        GroupBooking = JsonConverters.fromJson(json['GroupBooking'],'GroupBookingSettings',context!);
        MultipleResource = JsonConverters.fromJson(json['MultipleResource'],'MultipleResourceSettings',context!);
        IsGroupBooking = json['IsGroupBooking'];
        IsPaymentEnabled = json['IsPaymentEnabled'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description,
        'ImageUrl': JsonConverters.toJson(ImageUrl,'Uri',context!),
        'LengthInMinutes': LengthInMinutes,
        'MaxNumberOfSpotsPerBooking': MaxNumberOfSpotsPerBooking,
        'MinNumberOfSpotsPerBooking': MinNumberOfSpotsPerBooking,
        'GroupBooking': JsonConverters.toJson(GroupBooking,'GroupBookingSettings',context!),
        'MultipleResource': JsonConverters.toJson(MultipleResource,'MultipleResourceSettings',context!),
        'IsGroupBooking': IsGroupBooking,
        'IsPaymentEnabled': IsPaymentEnabled
    };

    getTypeName() => "ServiceInfoResponse";
    TypeContext? context = _ctx;
}

class BookingLogEventTypeResponse implements IConvertible
{
    /**
    * The event type id
    */
    // @ApiMember(Description="The event type id")
    int? Id;

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

    /**
    * The event type description
    */
    // @ApiMember(Description="The event type description")
    String? Description;

    BookingLogEventTypeResponse({this.Id,this.Name,this.Description});
    BookingLogEventTypeResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description
    };

    getTypeName() => "BookingLogEventTypeResponse";
    TypeContext? context = _ctx;
}

class BookingLogQueryResponse implements IConvertible
{
    /**
    * The booking log id
    */
    // @ApiMember(Description="The booking log id")
    int? Id;

    /**
    * The booking id
    */
    // @ApiMember(Description="The booking id")
    int? BookingId;

    /**
    * The type of event
    */
    // @ApiMember(Description="The type of event")
    int? EventTypeId;

    /**
    * The type of event
    */
    // @ApiMember(Description="The type of event")
    BookingLogEventTypeResponse? EventType;

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

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

    /**
    * Then date when the event occured
    */
    // @ApiMember(Description="Then date when the event occured")
    DateTime? Created;

    BookingLogQueryResponse({this.Id,this.BookingId,this.EventTypeId,this.EventType,this.Comments,this.UserName,this.Created});
    BookingLogQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        BookingId = json['BookingId'];
        EventTypeId = json['EventTypeId'];
        EventType = JsonConverters.fromJson(json['EventType'],'BookingLogEventTypeResponse',context!);
        Comments = json['Comments'];
        UserName = json['UserName'];
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'BookingId': BookingId,
        'EventTypeId': EventTypeId,
        'EventType': JsonConverters.toJson(EventType,'BookingLogEventTypeResponse',context!),
        'Comments': Comments,
        'UserName': UserName,
        'Created': JsonConverters.toJson(Created,'DateTime',context!)
    };

    getTypeName() => "BookingLogQueryResponse";
    TypeContext? context = _ctx;
}

class CurrencyInfoResponse implements IConvertible
{
    /**
    * The currency id
    */
    // @ApiMember(Description="The currency id")
    String? Id;

    /**
    * The currency id
    */
    // @ApiMember(Description="The currency id")
    String? Name;

    /**
    * The currency id
    */
    // @ApiMember(Description="The currency id")
    String? CurrencySign;

    CurrencyInfoResponse({this.Id,this.Name,this.CurrencySign});
    CurrencyInfoResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        CurrencySign = json['CurrencySign'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'CurrencySign': CurrencySign
    };

    getTypeName() => "CurrencyInfoResponse";
    TypeContext? context = _ctx;
}

class BookingPaymentLogQueryResponse implements IConvertible
{
    /**
    * The booking payment log id
    */
    // @ApiMember(Description="The booking payment log id")
    int? Id;

    /**
    * The booking id
    */
    // @ApiMember(Description="The booking id")
    int? BookingId;

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

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

    /**
    * The payment reference id
    */
    // @ApiMember(Description="The payment reference id")
    int? PaymentProviderId;

    /**
    * The payment amount
    */
    // @ApiMember(Description="The payment amount")
    double? Amount;

    /**
    * The payment VAT in percent
    */
    // @ApiMember(Description="The payment VAT in percent")
    double? VAT;

    /**
    * The payment amount that is credited
    */
    // @ApiMember(Description="The payment amount that is credited")
    double? AmountCredited;

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

    /**
    * The payment currency info
    */
    // @ApiMember(Description="The payment currency info")
    CurrencyInfoResponse? CurrencyInfo;

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

    /**
    * The date when the payment items was created
    */
    // @ApiMember(Description="The date when the payment items was created")
    DateTime? Created;

    /**
    * The date when the payment items was update
    */
    // @ApiMember(Description="The date when the payment items was update")
    DateTime? Updated;

    BookingPaymentLogQueryResponse({this.Id,this.BookingId,this.PaymentReferenceId,this.OrderItemReferenceId,this.PaymentProviderId,this.Amount,this.VAT,this.AmountCredited,this.CurrencyId,this.CurrencyInfo,this.Comments,this.Created,this.Updated});
    BookingPaymentLogQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        BookingId = json['BookingId'];
        PaymentReferenceId = json['PaymentReferenceId'];
        OrderItemReferenceId = json['OrderItemReferenceId'];
        PaymentProviderId = json['PaymentProviderId'];
        Amount = JsonConverters.toDouble(json['Amount']);
        VAT = JsonConverters.toDouble(json['VAT']);
        AmountCredited = JsonConverters.toDouble(json['AmountCredited']);
        CurrencyId = json['CurrencyId'];
        CurrencyInfo = JsonConverters.fromJson(json['CurrencyInfo'],'CurrencyInfoResponse',context!);
        Comments = json['Comments'];
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Updated = JsonConverters.fromJson(json['Updated'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'BookingId': BookingId,
        'PaymentReferenceId': PaymentReferenceId,
        'OrderItemReferenceId': OrderItemReferenceId,
        'PaymentProviderId': PaymentProviderId,
        'Amount': Amount,
        'VAT': VAT,
        'AmountCredited': AmountCredited,
        'CurrencyId': CurrencyId,
        'CurrencyInfo': JsonConverters.toJson(CurrencyInfo,'CurrencyInfoResponse',context!),
        'Comments': Comments,
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Updated': JsonConverters.toJson(Updated,'DateTime',context!)
    };

    getTypeName() => "BookingPaymentLogQueryResponse";
    TypeContext? context = _ctx;
}

class BookingCheckoutQueryResponse implements IConvertible
{
    /**
    * The checkout id
    */
    // @ApiMember(Description="The checkout id")
    String? Id;

    /**
    * The booking id
    */
    // @ApiMember(Description="The booking id")
    int? BookingId;

    /**
    * The purchase id
    */
    // @ApiMember(Description="The purchase id")
    int? PurchaseId;

    /**
    * The payment checkout expiration datetime
    */
    // @ApiMember(Description="The payment checkout expiration datetime")
    DateTime? ExpirationTime;

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

    /**
    * The payment status
    */
    // @ApiMember(Description="The payment status")
    String? Status;

    /**
    * Log message
    */
    // @ApiMember(Description="Log message")
    String? Message;

    /**
    * When the checkout log item was created
    */
    // @ApiMember(Description="When the checkout log item was created")
    DateTime? Created;

    /**
    * When the checkout log item was updated
    */
    // @ApiMember(Description="When the checkout log item was updated")
    DateTime? Updated;

    BookingCheckoutQueryResponse({this.Id,this.BookingId,this.PurchaseId,this.ExpirationTime,this.Snippet,this.Status,this.Message,this.Created,this.Updated});
    BookingCheckoutQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        BookingId = json['BookingId'];
        PurchaseId = json['PurchaseId'];
        ExpirationTime = JsonConverters.fromJson(json['ExpirationTime'],'DateTime',context!);
        Snippet = json['Snippet'];
        Status = json['Status'];
        Message = json['Message'];
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        Updated = JsonConverters.fromJson(json['Updated'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'BookingId': BookingId,
        'PurchaseId': PurchaseId,
        'ExpirationTime': JsonConverters.toJson(ExpirationTime,'DateTime',context!),
        'Snippet': Snippet,
        'Status': Status,
        'Message': Message,
        'Created': JsonConverters.toJson(Created,'DateTime',context!),
        'Updated': JsonConverters.toJson(Updated,'DateTime',context!)
    };

    getTypeName() => "BookingCheckoutQueryResponse";
    TypeContext? context = _ctx;
}

class ExternalReferenceResponse implements IConvertible
{
    String? CompanyId;
    String? Id;
    String? OwnerId;
    String? ReferenceType;
    String? ExternalData;
    String? CreatedBy;
    DateTime? Updated;
    DateTime? Created;

    ExternalReferenceResponse({this.CompanyId,this.Id,this.OwnerId,this.ReferenceType,this.ExternalData,this.CreatedBy,this.Updated,this.Created});
    ExternalReferenceResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CompanyId = json['CompanyId'];
        Id = json['Id'];
        OwnerId = json['OwnerId'];
        ReferenceType = json['ReferenceType'];
        ExternalData = json['ExternalData'];
        CreatedBy = json['CreatedBy'];
        Updated = JsonConverters.fromJson(json['Updated'],'DateTime',context!);
        Created = JsonConverters.fromJson(json['Created'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CompanyId': CompanyId,
        'Id': Id,
        'OwnerId': OwnerId,
        'ReferenceType': ReferenceType,
        'ExternalData': ExternalData,
        'CreatedBy': CreatedBy,
        'Updated': JsonConverters.toJson(Updated,'DateTime',context!),
        'Created': JsonConverters.toJson(Created,'DateTime',context!)
    };

    getTypeName() => "ExternalReferenceResponse";
    TypeContext? context = _ctx;
}

class BookingCalendarExportStatus implements IConvertible
{
    String? CalendarId;
    int? BookingId;
    bool? Synced;

    BookingCalendarExportStatus({this.CalendarId,this.BookingId,this.Synced});
    BookingCalendarExportStatus.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CalendarId = json['CalendarId'];
        BookingId = json['BookingId'];
        Synced = json['Synced'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CalendarId': CalendarId,
        'BookingId': BookingId,
        'Synced': Synced
    };

    getTypeName() => "BookingCalendarExportStatus";
    TypeContext? context = _ctx;
}

class BookingQueryResponse implements IConvertible
{
    int? Id;
    String? CompanyId;
    DateTime? From;
    DateTime? To;
    BookingStatusEnum? Status;
    int? StatusId;
    String? StatusName;
    BookingStatusQueryResponse? StatusInfo;
    bool? SendEmailReminder;
    bool? SendSmsReminder;
    bool? SendSmsConfirmation;
    bool? SendEmailConfirmation;
    DateTime? LastTimeToUnBook;
    List<CustomFieldConfigData>? CustomFields;
    List<CustomFieldDataResponse>? CustomFieldValues;
    List<BookedResourceType>? BookedResourceTypes;
    BookedCompany? Company;
    BookedCustomer? Customer;
    List<BookedQuantity>? Quantities;
    ServiceInfoResponse? Service;
    DateTime? PaymentExpiration;
    List<BookingLogQueryResponse>? Log;
    List<BookingPaymentLogQueryResponse>? PaymentLog;
    List<BookingCheckoutQueryResponse>? CheckoutLog;
    List<ExternalReferenceResponse>? ExternalReference;
    ResponseStatus? ResponseStatus;
    BookingCalendarExportStatus? CalendarExportStatus;
    int? LengthInMinutes;
    String? BookedBy;
    String? BookedComments;
    String? UnbookedComments;
    String? CommentsToCustomer;
    DateTime? CreatedDate;
    DateTime? UpdatedDate;
    DateTime? UnbookedOn;
    String? CancellationCode;
    String? RatingCode;

    BookingQueryResponse({this.Id,this.CompanyId,this.From,this.To,this.Status,this.StatusId,this.StatusName,this.StatusInfo,this.SendEmailReminder,this.SendSmsReminder,this.SendSmsConfirmation,this.SendEmailConfirmation,this.LastTimeToUnBook,this.CustomFields,this.CustomFieldValues,this.BookedResourceTypes,this.Company,this.Customer,this.Quantities,this.Service,this.PaymentExpiration,this.Log,this.PaymentLog,this.CheckoutLog,this.ExternalReference,this.ResponseStatus,this.CalendarExportStatus,this.LengthInMinutes,this.BookedBy,this.BookedComments,this.UnbookedComments,this.CommentsToCustomer,this.CreatedDate,this.UpdatedDate,this.UnbookedOn,this.CancellationCode,this.RatingCode});
    BookingQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        CompanyId = json['CompanyId'];
        From = JsonConverters.fromJson(json['From'],'DateTime',context!);
        To = JsonConverters.fromJson(json['To'],'DateTime',context!);
        Status = JsonConverters.fromJson(json['Status'],'BookingStatusEnum',context!);
        StatusId = json['StatusId'];
        StatusName = json['StatusName'];
        StatusInfo = JsonConverters.fromJson(json['StatusInfo'],'BookingStatusQueryResponse',context!);
        SendEmailReminder = json['SendEmailReminder'];
        SendSmsReminder = json['SendSmsReminder'];
        SendSmsConfirmation = json['SendSmsConfirmation'];
        SendEmailConfirmation = json['SendEmailConfirmation'];
        LastTimeToUnBook = JsonConverters.fromJson(json['LastTimeToUnBook'],'DateTime',context!);
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomFieldConfigData>',context!);
        CustomFieldValues = JsonConverters.fromJson(json['CustomFieldValues'],'List<CustomFieldDataResponse>',context!);
        BookedResourceTypes = JsonConverters.fromJson(json['BookedResourceTypes'],'List<BookedResourceType>',context!);
        Company = JsonConverters.fromJson(json['Company'],'BookedCompany',context!);
        Customer = JsonConverters.fromJson(json['Customer'],'BookedCustomer',context!);
        Quantities = JsonConverters.fromJson(json['Quantities'],'List<BookedQuantity>',context!);
        Service = JsonConverters.fromJson(json['Service'],'ServiceInfoResponse',context!);
        PaymentExpiration = JsonConverters.fromJson(json['PaymentExpiration'],'DateTime',context!);
        Log = JsonConverters.fromJson(json['Log'],'List<BookingLogQueryResponse>',context!);
        PaymentLog = JsonConverters.fromJson(json['PaymentLog'],'List<BookingPaymentLogQueryResponse>',context!);
        CheckoutLog = JsonConverters.fromJson(json['CheckoutLog'],'List<BookingCheckoutQueryResponse>',context!);
        ExternalReference = JsonConverters.fromJson(json['ExternalReference'],'List<ExternalReferenceResponse>',context!);
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        CalendarExportStatus = JsonConverters.fromJson(json['CalendarExportStatus'],'BookingCalendarExportStatus',context!);
        LengthInMinutes = json['LengthInMinutes'];
        BookedBy = json['BookedBy'];
        BookedComments = json['BookedComments'];
        UnbookedComments = json['UnbookedComments'];
        CommentsToCustomer = json['CommentsToCustomer'];
        CreatedDate = JsonConverters.fromJson(json['CreatedDate'],'DateTime',context!);
        UpdatedDate = JsonConverters.fromJson(json['UpdatedDate'],'DateTime',context!);
        UnbookedOn = JsonConverters.fromJson(json['UnbookedOn'],'DateTime',context!);
        CancellationCode = json['CancellationCode'];
        RatingCode = json['RatingCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'CompanyId': CompanyId,
        'From': JsonConverters.toJson(From,'DateTime',context!),
        'To': JsonConverters.toJson(To,'DateTime',context!),
        'Status': JsonConverters.toJson(Status,'BookingStatusEnum',context!),
        'StatusId': StatusId,
        'StatusName': StatusName,
        'StatusInfo': JsonConverters.toJson(StatusInfo,'BookingStatusQueryResponse',context!),
        'SendEmailReminder': SendEmailReminder,
        'SendSmsReminder': SendSmsReminder,
        'SendSmsConfirmation': SendSmsConfirmation,
        'SendEmailConfirmation': SendEmailConfirmation,
        'LastTimeToUnBook': JsonConverters.toJson(LastTimeToUnBook,'DateTime',context!),
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomFieldConfigData>',context!),
        'CustomFieldValues': JsonConverters.toJson(CustomFieldValues,'List<CustomFieldDataResponse>',context!),
        'BookedResourceTypes': JsonConverters.toJson(BookedResourceTypes,'List<BookedResourceType>',context!),
        'Company': JsonConverters.toJson(Company,'BookedCompany',context!),
        'Customer': JsonConverters.toJson(Customer,'BookedCustomer',context!),
        'Quantities': JsonConverters.toJson(Quantities,'List<BookedQuantity>',context!),
        'Service': JsonConverters.toJson(Service,'ServiceInfoResponse',context!),
        'PaymentExpiration': JsonConverters.toJson(PaymentExpiration,'DateTime',context!),
        'Log': JsonConverters.toJson(Log,'List<BookingLogQueryResponse>',context!),
        'PaymentLog': JsonConverters.toJson(PaymentLog,'List<BookingPaymentLogQueryResponse>',context!),
        'CheckoutLog': JsonConverters.toJson(CheckoutLog,'List<BookingCheckoutQueryResponse>',context!),
        'ExternalReference': JsonConverters.toJson(ExternalReference,'List<ExternalReferenceResponse>',context!),
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'CalendarExportStatus': JsonConverters.toJson(CalendarExportStatus,'BookingCalendarExportStatus',context!),
        'LengthInMinutes': LengthInMinutes,
        'BookedBy': BookedBy,
        'BookedComments': BookedComments,
        'UnbookedComments': UnbookedComments,
        'CommentsToCustomer': CommentsToCustomer,
        'CreatedDate': JsonConverters.toJson(CreatedDate,'DateTime',context!),
        'UpdatedDate': JsonConverters.toJson(UpdatedDate,'DateTime',context!),
        'UnbookedOn': JsonConverters.toJson(UnbookedOn,'DateTime',context!),
        'CancellationCode': CancellationCode,
        'RatingCode': RatingCode
    };

    getTypeName() => "BookingQueryResponse";
    TypeContext? context = _ctx;
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
// @ValidateRequest(Validator="IsAuthenticated")
class DeclineBooking implements IConvertible
{
    /**
    * 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.")
    String? CompanyId;

    /**
    * Id of the booking
    */
    // @ApiMember(Description="Id of the booking", IsRequired=true, ParameterType="path")
    int? Id;

    /**
    * Any comment logged to the booking history
    */
    // @ApiMember(Description="Any comment logged to the booking history")
    String? Comment;

    /**
    * Any comment sent to user if SendSmsConfirmation or SendEmailConfirmation
    */
    // @ApiMember(Description="Any comment sent to user if SendSmsConfirmation or SendEmailConfirmation")
    String? Message;

    /**
    * If you want to send SMS confirmation. If null, it will take the default value of the bookings SendSMSConfirmation.
    */
    // @ApiMember(Description="If you want to send SMS confirmation. If null, it will take the default value of the bookings SendSMSConfirmation.")
    bool? SendSmsConfirmation;

    /**
    * If you want to send Email confirmation. If null, it will take the default value of the bookings SendEmailConfirmation.
    */
    // @ApiMember(Description="If you want to send Email confirmation. If null, it will take the default value of the bookings SendEmailConfirmation.")
    bool? SendEmailConfirmation;

    DeclineBooking({this.CompanyId,this.Id,this.Comment,this.Message,this.SendSmsConfirmation,this.SendEmailConfirmation});
    DeclineBooking.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CompanyId = json['CompanyId'];
        Id = json['Id'];
        Comment = json['Comment'];
        Message = json['Message'];
        SendSmsConfirmation = json['SendSmsConfirmation'];
        SendEmailConfirmation = json['SendEmailConfirmation'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CompanyId': CompanyId,
        'Id': Id,
        'Comment': Comment,
        'Message': Message,
        'SendSmsConfirmation': SendSmsConfirmation,
        'SendEmailConfirmation': SendEmailConfirmation
    };

    getTypeName() => "DeclineBooking";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
    'BookingStatusEnum': TypeInfo(TypeOf.Enum, enumValues:BookingStatusEnum.values),
    'BookingStatusQueryResponse': TypeInfo(TypeOf.Class, create:() => BookingStatusQueryResponse()),
    'CustomFieldValueResponse': TypeInfo(TypeOf.Class, create:() => CustomFieldValueResponse()),
    'CustomFieldConfigData': TypeInfo(TypeOf.Class, create:() => CustomFieldConfigData()),
    'List<CustomFieldValueResponse>': TypeInfo(TypeOf.Class, create:() => <CustomFieldValueResponse>[]),
    'CustomFieldDataResponse': TypeInfo(TypeOf.Class, create:() => CustomFieldDataResponse()),
    'BookedResource': TypeInfo(TypeOf.Class, create:() => BookedResource()),
    'Uri': TypeInfo(TypeOf.Class, create:() => Uri()),
    'BookedResourceType': TypeInfo(TypeOf.Class, create:() => BookedResourceType()),
    'List<BookedResource>': TypeInfo(TypeOf.Class, create:() => <BookedResource>[]),
    'BookedCompany': TypeInfo(TypeOf.Class, create:() => BookedCompany()),
    'BookedCustomer': TypeInfo(TypeOf.Class, create:() => BookedCustomer()),
    'BookedQuantity': TypeInfo(TypeOf.Class, create:() => BookedQuantity()),
    'GroupBookingSettings': TypeInfo(TypeOf.Class, create:() => GroupBookingSettings()),
    'MultipleResourceSettings': TypeInfo(TypeOf.Class, create:() => MultipleResourceSettings()),
    'ServiceInfoResponse': TypeInfo(TypeOf.Class, create:() => ServiceInfoResponse()),
    'BookingLogEventTypeResponse': TypeInfo(TypeOf.Class, create:() => BookingLogEventTypeResponse()),
    'BookingLogQueryResponse': TypeInfo(TypeOf.Class, create:() => BookingLogQueryResponse()),
    'CurrencyInfoResponse': TypeInfo(TypeOf.Class, create:() => CurrencyInfoResponse()),
    'BookingPaymentLogQueryResponse': TypeInfo(TypeOf.Class, create:() => BookingPaymentLogQueryResponse()),
    'BookingCheckoutQueryResponse': TypeInfo(TypeOf.Class, create:() => BookingCheckoutQueryResponse()),
    'ExternalReferenceResponse': TypeInfo(TypeOf.Class, create:() => ExternalReferenceResponse()),
    'BookingCalendarExportStatus': TypeInfo(TypeOf.Class, create:() => BookingCalendarExportStatus()),
    'BookingQueryResponse': TypeInfo(TypeOf.Class, create:() => BookingQueryResponse()),
    'List<CustomFieldConfigData>': TypeInfo(TypeOf.Class, create:() => <CustomFieldConfigData>[]),
    'List<CustomFieldDataResponse>': TypeInfo(TypeOf.Class, create:() => <CustomFieldDataResponse>[]),
    'List<BookedResourceType>': TypeInfo(TypeOf.Class, create:() => <BookedResourceType>[]),
    'List<BookedQuantity>': TypeInfo(TypeOf.Class, create:() => <BookedQuantity>[]),
    'List<BookingLogQueryResponse>': TypeInfo(TypeOf.Class, create:() => <BookingLogQueryResponse>[]),
    'List<BookingPaymentLogQueryResponse>': TypeInfo(TypeOf.Class, create:() => <BookingPaymentLogQueryResponse>[]),
    'List<BookingCheckoutQueryResponse>': TypeInfo(TypeOf.Class, create:() => <BookingCheckoutQueryResponse>[]),
    'List<ExternalReferenceResponse>': TypeInfo(TypeOf.Class, create:() => <ExternalReferenceResponse>[]),
    'DeclineBooking': TypeInfo(TypeOf.Class, create:() => DeclineBooking()),
});

Dart DeclineBooking DTOs

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

HTTP + JSV

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

PUT /bookings/{Id}/decline HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	Id: 0,
	Comment: String,
	Message: String,
	SendSmsConfirmation: False,
	SendEmailConfirmation: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
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
	},
	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
}