{
  "swagger": "2.0",
  "info": {
    "title": "apaleo Booking API",
    "description": "Resources and methods to manage guest journeys.",
    "version": "v1"
  },
  "paths": {
    "/booking/v1/authorizations/by-link": {
      "post": {
        "tags": [
          "Authorization"
        ],
        "summary": "Creates a link to a payment form that allows guests to complete the authorization",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsBy-linkPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the authorization to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePaymentLinkAuthorizationRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Authorization was created and will be processed",
            "schema": {
              "$ref": "#/definitions/AuthorizationCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorizations/by-terminal": {
      "post": {
        "tags": [
          "Authorization"
        ],
        "summary": "Creates the authorization by using the terminal",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsBy-terminalPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the authorization to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateTerminalAuthorizationRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Authorization was created and will be processed",
            "schema": {
              "$ref": "#/definitions/AuthorizationCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorizations/by-payment-account": {
      "post": {
        "tags": [
          "Authorization"
        ],
        "summary": "Creates authorization by using a previously created payment account",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsBy-payment-accountPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the authorization to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePaymentAccountAuthorizationRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Authorization was created and will be processed",
            "schema": {
              "$ref": "#/definitions/AuthorizationCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorizations/by-authorization": {
      "post": {
        "tags": [
          "Authorization"
        ],
        "summary": "Creates the authorization based on an existing pre-authorization created prior directly with the payment service provider",
        "description": "Creates the authorization based on an existing pre-authorization created prior directly with the payment service provider. For the pre-authorization, please ensure to set the respective metadata\nin the original authorization request. The flow type has to be set to \u003Ci\u003EBlockNHold\u003C/i\u003E. For more information, please refer to the documentation of \u003Ca href=\u0022https://apaleo.dev/guides/pay-integration/authorizations\u0022 target=\u0022_blank\u0022\u003Ehow to do an authorization hold for future charges\u003C/a\u003E.\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsBy-authorizationPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the authorization to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateAuthorizationRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Authorization was created and will be processed",
            "schema": {
              "$ref": "#/definitions/AuthorizationCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorizations/{id}": {
      "get": {
        "tags": [
          "Authorization"
        ],
        "summary": "Returns a single authorization by ID",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027authorizations.read, authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The identifier of the authorization",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned authorization",
            "schema": {
              "$ref": "#/definitions/AuthorizationModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.read",
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorizations": {
      "get": {
        "tags": [
          "Authorization"
        ],
        "summary": "Returns a list of authorizations based on the query parameters",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027authorizations.read, authorizations.manage\u0027.",
        "operationId": "BookingAuthorizationsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "bookingIds",
            "description": "Filter result by requested booking ids. Returns authorizations that are related to the specified booking or booking reservations.\nUse in combination with the Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.TargetTypes to get authorizations related only to bookings or to reservations.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "reservationIds",
            "description": "Filter result by requested reservation ids",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter result by authorization status",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Pending",
                "Success",
                "Failure",
                "Canceled",
                "Expired",
                "RefreshPending"
              ]
            }
          },
          {
            "in": "query",
            "name": "targetTypes",
            "description": "Filter by target types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Booking",
                "Reservation"
              ]
            }
          },
          {
            "in": "query",
            "name": "dateField",
            "description": "Filter result by date and time attributes of authorization. Use in combination with the Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.From and Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.To attributes.\nAll filters will check if the date specified by the filter type is between Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.From (included) and Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.To (excluded).",
            "type": "string",
            "enum": [
              "Creation",
              "Modification",
              "Expiration"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time interval. When filtering by Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.DateField, at least one of Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.From and Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.To has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time interval, must be larger than Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.From. When filtering by Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.DateField, at least one of Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.From and Apaleo.Api.Modules.Booking.Models.Authorization.AuthorizationListRequest.To has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "sort",
            "description": "List of all fields that can be used to sort the results. Possible values are: created:asc, created:desc, updated:asc, updated:desc, expiresat:asc, expiresat:desc. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "created:asc",
                "created:desc",
                "updated:asc",
                "updated:desc",
                "expiresat:asc",
                "expiresat:desc"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions, remainingBalance. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions",
                "remainingBalance"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned authorization list",
            "schema": {
              "$ref": "#/definitions/AuthorizationListModel"
            }
          },
          "204": {
            "description": "No authorizations found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.read",
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorization-actions/{authorizationId}/cancel": {
      "put": {
        "tags": [
          "AuthorizationActions"
        ],
        "summary": "Cancels the authorization",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorization-actionsByAuthorizationIdCancelPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "authorizationId",
            "description": "The identifier of the authorization",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorization-actions/{authorizationId}/refresh": {
      "put": {
        "tags": [
          "AuthorizationActions"
        ],
        "summary": "Updates the requested amount and extends the expiry date of the authorization",
        "description": "Allows to top up the authorization and renew expiry date. The top-up amount is specified in the payload and needs to be greater than the original amount.\nIf the amount specified is the same as the original one, the authorization is renewed and changes its expiry date.\nIf the amount specified is less than the original one, the authorization is adjusted down.\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorization-actionsByAuthorizationIdRefreshPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "authorizationId",
            "description": "The identifier of the authorization",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the authorization refresh request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthorizationRefreshRequest"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/authorization-actions/{authorizationId}/expire-payment-link": {
      "put": {
        "tags": [
          "AuthorizationActions"
        ],
        "summary": "Expires the pending payment link with the payment provider and updates the status to Expired",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027authorizations.manage\u0027.",
        "operationId": "BookingAuthorization-actionsByAuthorizationIdExpire-payment-linkPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "authorizationId",
            "description": "The identifier of the authorization",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "authorizations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/blocks": {
      "post": {
        "tags": [
          "Block"
        ],
        "summary": "Creates a block",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.create, reservations.manage\u0027.",
        "operationId": "BookingBlocksPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The details for the block you want to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBlockModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "The block was created successfully.",
            "schema": {
              "$ref": "#/definitions/BlockCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.create",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Block"
        ],
        "summary": "Returns a list of blocks",
        "description": "Returns a list of all blocks, filtered by the specified parameters. If no parameters are set, returns the entire list.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBlocksGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "Return blocks for the specific group",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Return blocks filtered by properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Return blocks filtered by statuses",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Tentative",
                "Definite",
                "Canceled",
                "Optional"
              ]
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Return blocks with any of the specified unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Return blocks with any of the specified rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "timeSliceDefinitionIds",
            "description": "Return blocks with any of the specified time slice definitions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Return blocks with any of the specified unit group types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BedRoom",
                "MeetingRoom",
                "EventSpace",
                "ParkingLot",
                "Other"
              ]
            }
          },
          {
            "in": "query",
            "name": "timeSliceTemplate",
            "description": "The time slice template, defaults to \u0027over night\u0027",
            "type": "string",
            "enum": [
              "DayUse",
              "OverNight"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range. All blocks that are overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time range. All blocks that are overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions, timeSlices. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions",
                "timeSlices"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/BlockListModel"
            }
          },
          "204": {
            "description": "No blocks found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/blocks/$count": {
      "get": {
        "tags": [
          "Block"
        ],
        "summary": "Returns number of blocks",
        "description": "Returns number of blocks matching the filter criteria\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBlocks$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "Return blocks for the specific group",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Return blocks filtered by properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Return blocks filtered by statuses",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Tentative",
                "Definite",
                "Canceled",
                "Optional"
              ]
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Return blocks with any of the specified unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Return blocks with any of the specified rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "timeSliceDefinitionIds",
            "description": "Return blocks with any of the specified time slice definitions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Return blocks with any of the specified unit group types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BedRoom",
                "MeetingRoom",
                "EventSpace",
                "ParkingLot",
                "Other"
              ]
            }
          },
          {
            "in": "query",
            "name": "timeSliceTemplate",
            "description": "The time slice template, defaults to \u0027over night\u0027",
            "type": "string",
            "enum": [
              "DayUse",
              "OverNight"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range. All blocks that are overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time range. All blocks that are overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CountModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/blocks/{id}": {
      "get": {
        "tags": [
          "Block"
        ],
        "summary": "Returns a specific block.",
        "description": "Retrieves a block, specified by its ID.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBlocksByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block to be retrieved.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions, timeSlices. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions",
                "timeSlices"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/BlockModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Block"
        ],
        "summary": "Delete a specific block",
        "description": "Use this call to delete a block. This is only possible as long as no reservation was picked up yet even if all of\nthem are canceled\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlocksByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the block.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "head": {
        "tags": [
          "Block"
        ],
        "summary": "Check if a block exists",
        "description": "Check if a block exists by id\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBlocksByIdHead",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the block.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The block exists."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Block"
        ],
        "summary": "Allows to modify certain block properties",
        "description": "Here is the list of operations that are currently allowed:\n- Add, replace and remove MarketSegment\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlocksByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block to be modified.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/confirm": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Confirm a block.",
        "description": "Confirm a specific block which is in status \u0027Tentative\u0027.\nThis changes the status to \u0027Definite\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdConfirmPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Confirmation of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/set-to-optional": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Set a block to optional.",
        "description": "Set a specific block which is in status \u0027Tentative\u0027 to \u0027Optional\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdSet-to-optionalPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The optional block settings.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SetBlockToOptionalModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Setting the block to optional was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/cutoff-optional": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Apply the optional cutoff behavior for a block whose cutoff has been reached.",
        "description": "Internal callback the scheduler invokes when an \u0027Optional\u0027 block\u0027s cutoff timer fires. Depending on\nthe block\u0027s stored cutoff behavior, this either releases the block (\u0027Optional\u0027 to \u0027Tentative\u0027) or\nleaves it untouched. A stale fire - the block already left \u0027Optional\u0027, or its stored cutoff no longer\nmatches the payload - is a no-op.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdCutoff-optionalPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The cutoff the scheduler fired for.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CutoffOptionalBlockModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The callback was applied, or was a no-op for a stale fire."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/start-optional": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Convert an optional block to tentative when its booking window opens.",
        "description": "Internal callback the scheduler invokes when an \u0027Optional\u0027 block\u0027s start timer fires. It releases the\nblock (\u0027Optional\u0027 to \u0027Tentative\u0027). A stale fire - the block already left \u0027Optional\u0027, or its stored\nstart no longer matches the payload - is a no-op.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdStart-optionalPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The block start the scheduler fired for.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/StartOptionalBlockModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The callback was applied, or was a no-op for a stale fire."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/release": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Release a block.",
        "description": "Release a specific block which is in status \u0027Definite\u0027.\nThis changes the status to \u0027Tentative\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdReleasePut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Release of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/cancel": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Cancel a block.",
        "description": "Cancel a specific block which is in status \u0027Definite\u0027 or \u0027Tentative\u0027.\nThis changes the status to \u0027Canceled\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdCancelPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Cancellation of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/wash": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Wash a block.",
        "description": "Wash a specific block which is in status \u0027Definite\u0027.\nThis releases all unpicked units.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdWashPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Wash of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/block-actions/{id}/amend": {
      "put": {
        "tags": [
          "BlockActions"
        ],
        "summary": "Allow to modify a block",
        "description": "Use this call to modify a block.\u003Cbr\u003EYou must have at least one of these scopes: \u0027blocks.manage, reservations.manage\u0027.",
        "operationId": "BookingBlock-actionsByIdAmendPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the block to be modified.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the block.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReplaceBlockModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Replace of the block was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "blocks.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/bookings": {
      "post": {
        "tags": [
          "Booking"
        ],
        "summary": "Creates a booking for one or more reservations.",
        "description": "Creates a booking taking a list of reservations as input.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.create, reservations.manage\u0027.",
        "operationId": "BookingBookingsPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The list of reservations you want to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBookingModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "All new reservations were created.",
            "schema": {
              "$ref": "#/definitions/BookingCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.create",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Booking"
        ],
        "summary": "Returns a list of all bookings, filtered by the specified parameters.",
        "description": "Returns a list of all bookings, filtered by the specified parameters. If no parameters are set, returns the entire list.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBookingsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "reservationId",
            "description": "Filter result by reservation id. The result set will contain all bookings having reservations with the specified id",
            "type": "string"
          },
          {
            "in": "query",
            "name": "groupId",
            "description": "Filter result by group id. The result set will contain all bookings having groups with the specified id",
            "type": "string"
          },
          {
            "in": "query",
            "name": "bookingIds",
            "description": "Filter result by booking id. Returns only the bookings matching the specified ids",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "Filter result by the channel code. The resul set will contain all bookings having reservations with the specified channel code",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "externalCode",
            "description": "Filter result by the external code. The result set will contain all bookings having reservations with external code starting with provided value",
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all bookings for the provided free text. Currently it only looks up if either the lastname, firstname, email or company name of the booker\ncontains one of the provided values",
            "type": "string"
          },
          {
            "in": "query",
            "name": "hasActivePaymentAccount",
            "description": "If set to \u0060true\u0060, returns only the bookings with an active payment account.\nIf set to \u0060false\u0060, returns only the bookings without an active payment account.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: property, unitGroup, ratePlan, services, reservations. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property",
                "unitGroup",
                "ratePlan",
                "services",
                "reservations"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/BookingListModel"
            }
          },
          "204": {
            "description": "No bookings found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/bookings/$force": {
      "post": {
        "tags": [
          "Booking"
        ],
        "summary": "Creates a booking for one or more reservations regardless of availability or restrictions.",
        "description": "Creates a booking taking a list of reservations as input.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.force-create, reservations.force-manage\u0027.",
        "operationId": "BookingBookings$forcePost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The list of reservations you want to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateBookingModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "All new reservations were created.",
            "schema": {
              "$ref": "#/definitions/BookingCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.force-create",
              "reservations.force-manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/bookings/{id}/reservations": {
      "post": {
        "tags": [
          "Booking"
        ],
        "summary": "Add one or multiple reservations to an existing booking.",
        "description": "Creates new reservations and adds them to an existing booking taking a list of reservations as input\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.create, reservations.manage\u0027.",
        "operationId": "BookingBookingsByIdReservationsPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the booking the reservations should be attached to.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The list of reservations you want to add.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddReservationsModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "All new reservations were created and added to the booking.",
            "schema": {
              "$ref": "#/definitions/ReservationsCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.create",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/bookings/{id}/reservations/$force": {
      "post": {
        "tags": [
          "Booking"
        ],
        "summary": "Add one or multiple reservations to an existing booking regardless of availability or restrictions.",
        "description": "Creates new reservations and adds them to an existing booking taking a list of reservations as input\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.force-create, reservations.force-manage\u0027.",
        "operationId": "BookingBookingsByIdReservations$forcePost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the booking the reservations should be attached to.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The list of reservations you want to add.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddReservationsModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "All new reservations were created and added to the booking.",
            "schema": {
              "$ref": "#/definitions/ReservationsCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.force-create",
              "reservations.force-manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/bookings/{id}": {
      "get": {
        "tags": [
          "Booking"
        ],
        "summary": "Returns a specific booking.",
        "description": "Retrieves a booking with all its reservations.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingBookingsByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the booking to be retrieved.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: property, unitGroup, ratePlan, services, reservations, propertyValues. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property",
                "unitGroup",
                "ratePlan",
                "services",
                "reservations",
                "propertyValues"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/BookingModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Booking"
        ],
        "summary": "Allows to modify certain booking properties",
        "description": "Here is the list of operations that are currently allowed:\n- Add, replace and remove PaymentAccount\n- Add, replace and remove RegisteredCard\n- Add, replace and remove Comment\n- Add, replace and remove BookerComment\n- Copy PaymentAccount, Comment and BookerComment from the booking to any reservation, or the other way around\n- Replace Booker\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingBookingsByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the booking to be modified.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/groups": {
      "post": {
        "tags": [
          "Group"
        ],
        "summary": "Creates a group booking.",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.create, reservations.manage\u0027.",
        "operationId": "BookingGroupsPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The details of the group that should be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateGroupModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "A new group booking was created.",
            "schema": {
              "$ref": "#/definitions/GroupCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.create",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Group"
        ],
        "summary": "Returns a list of all group bookings, filtered by the specified parameters.",
        "description": "Returns a list of all group bookings, filtered by the specified parameters.\nIf no parameters are set, returns the entire list\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingGroupsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all group bookings for the provided free text. Currently it only looks up if either the group name, lastname,\nfirstname, email or company name of the booker contains one of the provided values",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range. All groups that have blocks overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time range. All groups that have blocks overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "hasActivePaymentAccount",
            "description": "If set to \u0060true\u0060, returns only the groups with an active payment account.\nIf set to \u0060false\u0060, returns only the groups without an active payment account.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: blocks, actions. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "blocks",
                "actions"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/GroupListModel"
            }
          },
          "204": {
            "description": "No group bookings found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/groups/{id}": {
      "get": {
        "tags": [
          "Group"
        ],
        "summary": "Returns a specific group booking.",
        "description": "Retrieves a specific group booking with all its related blocks\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingGroupsByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the group booking to be retrieved.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: blocks, actions. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "blocks",
                "actions"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GroupModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Group"
        ],
        "summary": "Allows to modify certain group booking properties",
        "description": "Here is the list of operations that are currently allowed:\n- Add and replace Name\n- Add, replace and remove Comment\n- Add, replace and remove BookerComment\n- Add, replace and remove PaymentAccount\n- Add, replace and remove PropertyIds\n- Replace Booker\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.manage, reservations.manage\u0027.",
        "operationId": "BookingGroupsByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the group booking to be modified.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Group"
        ],
        "summary": "Delete a certain group booking",
        "description": "Use this call to delete a group booking. This is only possible as long as no blocks exist that are linked to\nthis group booking\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.manage, reservations.manage\u0027.",
        "operationId": "BookingGroupsByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the group booking to be deleted.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the group was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "head": {
        "tags": [
          "Group"
        ],
        "summary": "Check if a certain group booking exists",
        "description": "Check if a group booking exists by id\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingGroupsByIdHead",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the group booking to be checked for existence.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The group booking exists."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/groups/$count": {
      "get": {
        "tags": [
          "Group"
        ],
        "summary": "Returns number of group bookings",
        "description": "Returns number of group bookings matching the filter criteria\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.read, reservations.read, reservations.manage\u0027.",
        "operationId": "BookingGroups$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all group bookings for the provided free text. Currently it only looks up if either the group name, lastname,\nfirstname, email or company name of the booker contains one of the provided values",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range. All groups that have blocks overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time range. All groups that have blocks overlapping with the interval specified by from and to\nwill be returned\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "hasActivePaymentAccount",
            "description": "If set to \u0060true\u0060, returns only the groups with an active payment account.\nIf set to \u0060false\u0060, returns only the groups without an active payment account.",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CountModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.read",
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/groups/{id}/reservations": {
      "post": {
        "tags": [
          "Group"
        ],
        "summary": "Add one or multiple reservations to an existing group booking using blocked inventory.",
        "description": "Creates new reservations and adds them to an existing group booking taking a list of reservations as input\u003Cbr\u003EYou must have at least one of these scopes: \u0027groups.manage, reservations.manage\u0027.",
        "operationId": "BookingGroupsByIdReservationsPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the group booking the reservations should be attached to.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The list of reservations you want to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PickUpReservationsModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "All new reservations were created and added to the group booking.",
            "schema": {
              "$ref": "#/definitions/ReservationsCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "groups.manage",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/offers": {
      "get": {
        "tags": [
          "Offer"
        ],
        "summary": "Returns offers for one specific stay.",
        "description": "Calculates and returns available offers for a specific property, arrival and departure date.\u003Cbr\u003EYou must have at least one of these scopes: \u0027offers.read, reservations.manage\u0027.",
        "operationId": "BookingOffersGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "The property ID",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "arrival",
            "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "departure",
            "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "timeSliceTemplate",
            "description": "The time slice template used to filter the rate plans, defaults to \u0027over night\u0027",
            "type": "string",
            "enum": [
              "DayUse",
              "OverNight"
            ]
          },
          {
            "in": "query",
            "name": "timeSliceDefinitionIds",
            "description": "Time slice definition IDs, used to filter rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Unit group IDs, used to filter rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Unit group types, used to filter rate plans",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BedRoom",
                "MeetingRoom",
                "EventSpace",
                "ParkingLot",
                "Other"
              ]
            }
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "Channel code, used to filter the rate plans",
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "promoCode",
            "description": "The promo code associated with a certain special offer",
            "type": "string"
          },
          {
            "in": "query",
            "name": "corporateCode",
            "description": "The code associated with a corporate rate",
            "type": "string"
          },
          {
            "in": "query",
            "name": "adults",
            "description": "The number of adults you want offers for",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "childrenAges",
            "description": "The ages of the children you want offers for",
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "description": "Return also offers that are currently not publicly bookable as restrictions are violated. By default only available offers are returned",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/StayOffersModel"
            }
          },
          "204": {
            "description": "There are no available offers for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offers.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/rate-plan-offers": {
      "get": {
        "tags": [
          "Offer"
        ],
        "summary": "Returns offers for a specific rate plan.",
        "description": "Calculates and returns available offers for a specific rate plan, arrival and departure date.\u003Cbr\u003EYou must have at least one of these scopes: \u0027offers.read, reservations.manage\u0027.",
        "operationId": "BookingRate-plan-offersGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanId",
            "description": "The rate plan ID",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "arrival",
            "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "departure",
            "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "The channel code",
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "adults",
            "description": "The number of adults you want offers for",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "childrenAges",
            "description": "The ages of the children you want offers for",
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "description": "Return also offers that are currently not publicly bookable as restrictions are violated. By default only available offers are returned",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "overridePrices",
            "description": "Desired prices for each timeslice",
            "type": "array",
            "items": {
              "type": "number",
              "format": "double",
              "x-nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/StayOffersModel"
            }
          },
          "204": {
            "description": "There are no available offers for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offers.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/service-offers": {
      "get": {
        "tags": [
          "Offer"
        ],
        "summary": "Returns service offers for one specific stay.",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027offers.read, reservations.manage\u0027.",
        "operationId": "BookingService-offersGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanId",
            "description": "The rate plan ID",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "arrival",
            "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "departure",
            "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "The channel code used to filter the services",
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "adults",
            "description": "The number of adults you want offers for",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "childrenAges",
            "description": "The ages of the children you want offers for",
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "onlyDefaultDates",
            "description": "Depending on the postNextDay setting of a service it will be posted before or after midnight.\nBreakfast is usually delivered on the next morning, having \u0027postNextDay\u0027 set to true. Its \u0027default dates\u0027 are from the day after\narrival until the departure day. For services like dinner \u0027postNextDay\u0027 is false, and default dates are day of arrival until one\nday before departure.\nWith this query parameter set to \u0027false\u0027, you can also ask for dates outside of those default dates. It defaults to true.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "description": "Return also offers that are currently not publicly bookable as restrictions are violated. By default only available offers are returned",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/ServiceOffersModel"
            }
          },
          "204": {
            "description": "There are no available offers for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offers.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/offer-index": {
      "get": {
        "tags": [
          "Offer"
        ],
        "summary": "Returns offers with rates and availabilities for the specified range.",
        "description": "Calculates and returns offers per time slice for a specific rate plan, arrival and departure date.\u003Cbr\u003EYou must have at least one of these scopes: \u0027offer-index.read, offers.read\u0027.",
        "operationId": "BookingOffer-indexGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanId",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "from",
            "description": "\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "to",
            "description": "\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "channelCode",
            "required": true,
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/TimeSliceListModel"
            }
          },
          "204": {
            "description": "There are no rates for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offer-index.read",
              "offers.read",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts/by-terminal": {
      "post": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Creates payment account by using the terminal",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsBy-terminalPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the payment account to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateTerminalPaymentAccountRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/PaymentAccountCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts/by-link": {
      "post": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Creates a link to a payment form that allows guests to complete the payment account",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsBy-linkPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the payment account to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePaymentLinkPaymentAccountRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/PaymentAccountCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts/by-authorization": {
      "post": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Creates payment account based on an existing authorization created prior externally with the Payment Service Provider",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsBy-authorizationPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the payment account to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateAuthorizationPaymentAccountRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/PaymentAccountCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts/by-stored-payment-method": {
      "post": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Creates payment account based on an existing authorization created prior externally with the Payment Service Provider",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsBy-stored-payment-methodPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "description": "Unique key for safely retrying requests without accidentally performing the same operation twice. \nWe\u0027ll always send back the same response for requests made with the same key, \nand keys can\u0027t be reused with different request parameters. Keys expire after 24 hours.",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the payment account to be created",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateStoredPaymentMethodAuthorizationPaymentAccountRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/PaymentAccountCreatedModel"
            },
            "headers": {
              "Location": {
                "description": "The location of the created resource.",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts/{id}": {
      "get": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Returns a single payment account by ID",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027payment-accounts.read, payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The identifier of the payment account",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned payment account",
            "schema": {
              "$ref": "#/definitions/PaymentAccountV2Model"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.read",
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-accounts": {
      "get": {
        "tags": [
          "PaymentAccount"
        ],
        "summary": "Returns a list of payment accounts based on the query parameters",
        "description": "\u003Cbr\u003EYou must have at least one of these scopes: \u0027payment-accounts.read, payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-accountsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "paymentAccountIds",
            "description": "Filter result by requested payment account Ids",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "bookingIds",
            "description": "Filter result by requested booking ids. Returns payment accounts that are related to the specified booking or booking reservations.\nUse in combination with the Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.TargetTypes to get payment accounts related only to bookings or to reservations.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "reservationIds",
            "description": "Filter result by requested reservation ids",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "payerInteractions",
            "description": "Filter result by payment account payer interactions",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PciToken",
                "Terminal",
                "Authorization",
                "PaymentLink"
              ]
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter result by payment account status",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Pending",
                "Success",
                "Failure",
                "Canceled",
                "Expired"
              ]
            }
          },
          {
            "in": "query",
            "name": "targetTypes",
            "description": "Filter by target types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Booking",
                "Reservation"
              ]
            }
          },
          {
            "in": "query",
            "name": "dateField",
            "description": "Filter result by date and time attributes of payment account. Use in combination with the Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.From and Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.To attributes.\nAll filters will check if the date specified by the filter type is between Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.From (included) and Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.To (excluded).",
            "type": "string",
            "enum": [
              "Creation",
              "Modification"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time interval. When filtering by Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.DateField, at least one of Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.From and Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.To has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time interval, must be larger than Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.From. When filtering by Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.DateField, at least one of Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.From and Apaleo.Api.Modules.Booking.Models.PaymentAccountV2.PaymentAccountV2ListRequest.To has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "paymentLinkUrls",
            "description": "Filter by payment link urls",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "sort",
            "description": "List of all fields that can be used to sort the results. Possible values are: created:asc, created:desc, updated:asc, updated:desc, expiresat:asc, expiresat:desc. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "created:asc",
                "created:desc",
                "updated:asc",
                "updated:desc",
                "expiresat:asc",
                "expiresat:desc"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: actions. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "actions"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned payment account list",
            "schema": {
              "$ref": "#/definitions/PaymentAccountV2ListModel"
            }
          },
          "204": {
            "description": "No payment accounts found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.read",
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-account-actions/{paymentAccountId}/cancel": {
      "put": {
        "tags": [
          "PaymentAccountActions"
        ],
        "summary": "Sets payment account status to Canceled",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-account-actionsByPaymentAccountIdCancelPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "paymentAccountId",
            "description": "The identifier of the payment account to cancel",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/payment-account-actions/{paymentAccountId}/expire-payment-link": {
      "put": {
        "tags": [
          "PaymentAccountActions"
        ],
        "summary": "Expires the pending payment link with the payment provider and updates the status to Expired",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027payment-accounts.manage\u0027.",
        "operationId": "BookingPayment-account-actionsByPaymentAccountIdExpire-payment-linkPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "paymentAccountId",
            "description": "The identifier of the payment account with the payment link to expire",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "payment-accounts.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns a list of all reservations, filtered by the specified parameters.",
        "description": "Returns a list of all reservations, filtered by the specified parameters. If no parameters are set, returns the entire list.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingReservationsGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "bookingId",
            "description": "Filter result by booking id",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Filter result by requested rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "companyIds",
            "description": "Filter result by requested companies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitIds",
            "description": "Filter result by assigned units",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Filter result by requested unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Filter result by requested unit group types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BedRoom",
                "MeetingRoom",
                "EventSpace",
                "ParkingLot",
                "Other"
              ]
            }
          },
          {
            "in": "query",
            "name": "blockIds",
            "description": "Filter result by requested blocks",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "marketSegmentIds",
            "description": "Filter result by requested market segments",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter result by reservation status",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Confirmed",
                "InHouse",
                "CheckedOut",
                "Canceled",
                "NoShow"
              ]
            }
          },
          {
            "in": "query",
            "name": "dateFilter",
            "description": "Filter by date and time attributes of reservation. Use in combination with the \u0027To\u0027 and \u0027From\u0027 attributes.\nAll filters will check if the date specified by the filter type is between from (included) and to (excluded).\nThe exception being filtering for \u0027stay\u0027, which will return all reservations that are overlapping with the interval specified by from and to.",
            "type": "string",
            "enum": [
              "Arrival",
              "Departure",
              "Stay",
              "Creation",
              "Modification",
              "Cancellation",
              "ArrivalAndCheckIn",
              "DepartureAndCheckOut"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time interval. When filtering by date, at least one of \u0027from\u0027 and \u0027to\u0027 has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time interval, must be larger than \u0027from\u0027. When filtering by date, at least one of \u0027from\u0027 and \u0027to\u0027 has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "Filter result by the channel code",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "sources",
            "description": "Filter result by source",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "validationMessageCategory",
            "description": "Filter result by validation message category",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "OfferNotAvailable",
                "AutoUnitAssignment"
              ]
            }
          },
          {
            "in": "query",
            "name": "externalCode",
            "description": "Filter result by the external code. The result set will contain all reservations that have an external code starting with the\nprovided value",
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "Filters reservations by searching for the provided text across multiple fields.\nThe search is case-insensitive and includes:\n- Booker information (first name, last name, email, company name)\n- Primary guest information (first name, last name, email, company name)\n- Additional guest information (first name, last name, email, company name)\n- Reservation details (external code, external references, reservation ID)\n- Unit name\n- Group name",
            "type": "string"
          },
          {
            "in": "query",
            "name": "balanceFilter",
            "description": "This will filter reservations based on their balance.\u003Cbr /\u003EYou can provide an array of string expressions which all need to apply.\u003Cbr /\u003EEach expression has the form of \u0027OPERATION_VALUE\u0027 where VALUE needs to be of the valid format of the property type and OPERATION can be:\u003Cbr /\u003E\u0027eq\u0027 for equals\u003Cbr /\u003E\u0027neq\u0027 for not equals\u003Cbr /\u003E\u0027lt\u0027 for less than\u003Cbr /\u003E\u0027gt\u0027 for greater than\u003Cbr /\u003E\u0027lte\u0027 for less than or equals\u003Cbr /\u003E\u0027gte\u0027 for greater than or equals\u003Cbr /\u003EFor instance\u003Cbr /\u003E\u0027eq_5\u0027 would mean the value should equal 5\u003Cbr /\u003E\u0027lte_7\u0027 would mean the value should be less than or equal to 7",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "allFoliosHaveInvoice",
            "description": "If set to \u0060true\u0060, returns only reservations, in which all folios are closed and have an invoice.\nIf set to \u0060false\u0060, returns only reservations, in which some of the folios are open or don\u0027t have an invoice",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "isPreCheckedIn",
            "description": "If set to \u0060true\u0060, returns only the reservations marked as pre-checked-in.\nIf set to \u0060false\u0060, returns only the reservations not marked as pre-checked-in.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "hasActivePaymentAccount",
            "description": "If set to \u0060true\u0060, returns only the reservations with an active payment account.\nIf set to \u0060false\u0060, returns only the reservations without an active payment account.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "externalReferences",
            "description": "This will filter all reservation where the provided external references have an exact match on at least one of the properties in Apaleo.Api.Modules.Booking.Models.Reservation.ExternalReferencesModel",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "sort",
            "description": "List of all fields that can be used to sort the results. Possible values are: arrival:asc, arrival:desc, departure:asc, departure:desc, created:asc, created:desc, updated:asc, updated:desc, balance:asc, balance:desc, id:asc, id:desc, firstname:asc, firstname:desc, lastname:asc, lastname:desc, unitname:asc, unitname:desc. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "arrival:asc",
                "arrival:desc",
                "departure:asc",
                "departure:desc",
                "created:asc",
                "created:desc",
                "updated:asc",
                "updated:desc",
                "balance:asc",
                "balance:desc",
                "id:asc",
                "id:desc",
                "firstname:asc",
                "firstname:desc",
                "lastname:asc",
                "lastname:desc",
                "unitname:asc",
                "unitname:desc"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: booker, actions, timeSlices, services, assignedUnits, company. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "booker",
                "actions",
                "timeSlices",
                "services",
                "assignedUnits",
                "company"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ReservationListModel"
            }
          },
          "204": {
            "description": "No reservations found."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations/$count": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns the number of reservations fulfilling the criteria specified in the parameters.",
        "description": "If no parameters are set, returns the total count of reservations.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingReservations$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "bookingId",
            "description": "Filter result by booking id",
            "type": "string"
          },
          {
            "in": "query",
            "name": "propertyIds",
            "description": "Filter result by requested properties",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Filter result by requested rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "companyIds",
            "description": "Filter result by requested companies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitIds",
            "description": "Filter result by assigned units",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Filter result by requested unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Filter result by requested unit group types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "BedRoom",
                "MeetingRoom",
                "EventSpace",
                "ParkingLot",
                "Other"
              ]
            }
          },
          {
            "in": "query",
            "name": "blockIds",
            "description": "Filter result by requested blocks",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "marketSegmentIds",
            "description": "Filter result by requested market segments",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter result by reservation status",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Confirmed",
                "InHouse",
                "CheckedOut",
                "Canceled",
                "NoShow"
              ]
            }
          },
          {
            "in": "query",
            "name": "dateFilter",
            "description": "Filter by date and time attributes of reservation. Use in combination with the \u0027To\u0027 and \u0027From\u0027 attributes.\nAll filters will check if the date specified by the filter type is between from (included) and to (excluded).\nThe exception being filtering for \u0027stay\u0027, which will return all reservations that are overlapping with the interval specified by from and to.",
            "type": "string",
            "enum": [
              "Arrival",
              "Departure",
              "Stay",
              "Creation",
              "Modification",
              "Cancellation",
              "ArrivalAndCheckIn",
              "DepartureAndCheckOut"
            ]
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time interval. When filtering by date, at least one of \u0027from\u0027 and \u0027to\u0027 has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end of the time interval, must be larger than \u0027from\u0027. When filtering by date, at least one of \u0027from\u0027 and \u0027to\u0027 has to be specified\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "Filter result by the channel code",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "sources",
            "description": "Filter result by source",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "validationMessageCategory",
            "description": "Filter result by validation message category",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "OfferNotAvailable",
                "AutoUnitAssignment"
              ]
            }
          },
          {
            "in": "query",
            "name": "externalCode",
            "description": "Filter result by the external code. The result set will contain all reservations that have an external code starting with the\nprovided value",
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "Filters reservations by searching for the provided text across multiple fields.\nThe search is case-insensitive and includes:\n- Booker information (first name, last name, email, company name)\n- Primary guest information (first name, last name, email, company name)\n- Additional guest information (first name, last name, email, company name)\n- Reservation details (external code, external references, reservation ID)\n- Unit name\n- Group name",
            "type": "string"
          },
          {
            "in": "query",
            "name": "balanceFilter",
            "description": "This will filter reservations based on their balance.\u003Cbr /\u003EYou can provide an array of string expressions which all need to apply.\u003Cbr /\u003EEach expression has the form of \u0027OPERATION_VALUE\u0027 where VALUE needs to be of the valid format of the property type and OPERATION can be:\u003Cbr /\u003E\u0027eq\u0027 for equals\u003Cbr /\u003E\u0027neq\u0027 for not equals\u003Cbr /\u003E\u0027lt\u0027 for less than\u003Cbr /\u003E\u0027gt\u0027 for greater than\u003Cbr /\u003E\u0027lte\u0027 for less than or equals\u003Cbr /\u003E\u0027gte\u0027 for greater than or equals\u003Cbr /\u003EFor instance\u003Cbr /\u003E\u0027eq_5\u0027 would mean the value should equal 5\u003Cbr /\u003E\u0027lte_7\u0027 would mean the value should be less than or equal to 7",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "allFoliosHaveInvoice",
            "description": "If set to \u0060true\u0060, returns only reservations, in which all folios are closed and have an invoice.\nIf set to \u0060false\u0060, returns only reservations, in which some of the folios are open or don\u0027t have an invoice",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "isPreCheckedIn",
            "description": "If set to \u0060true\u0060, returns only the reservations marked as pre-checked-in.\nIf set to \u0060false\u0060, returns only the reservations not marked as pre-checked-in.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "hasActivePaymentAccount",
            "description": "If set to \u0060true\u0060, returns only the reservations with an active payment account.\nIf set to \u0060false\u0060, returns only the reservations without an active payment account.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "externalReferences",
            "description": "This will filter all reservation where the provided external references have an exact match on at least one of the properties in Apaleo.Api.Modules.Booking.Models.Reservation.ExternalReferencesModel",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CountModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations/{id}": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns a specific reservation.",
        "description": "Retrieves a reservation, specified by its ID.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation to be retrieved.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: timeSlices, services, booker, actions, company, assignedUnits. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "timeSlices",
                "services",
                "booker",
                "actions",
                "company",
                "assignedUnits"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ReservationModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Reservation"
        ],
        "summary": "Allows to modify certain reservation properties",
        "description": "Here is the list of operations that are currently allowed:\n- Add, replace and remove Comment\n- Add, replace and remove GuestComment\n- Add, replace and remove PaymentAccount\n- Add, replace and remove RegisteredCard\n- Add, replace and remove TravelPurpose\n- Add, replace and remove AdditionalGuests\n- Add a company (using company/Id, and only if not already set)\n- Add, replace and remove Commission\n- Replace PrimaryGuest\n- Remove ValidationMessages\n- Add, replace and remove MarketSegment\n- Replace IsOpenForCharges\n- Replace IsPreCheckedIn\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation to be modified.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Operation"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations/{id}/offers": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns offers for one specific reservation.",
        "description": "Calculates and returns offers for amending a specific reservation.\u003Cbr\u003EYou must have at least one of these scopes: \u0027offers.read, reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdOffersGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation to be amended.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "arrival",
            "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string"
          },
          {
            "in": "query",
            "name": "departure",
            "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string"
          },
          {
            "in": "query",
            "name": "adults",
            "description": "Number of adults",
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "childrenAges",
            "description": "Ages of children",
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "The channel code used to filter the rate plans",
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "promoCode",
            "description": "The promo code associated with a certain special offer, like corporate rate",
            "type": "string"
          },
          {
            "in": "query",
            "name": "corporateCode",
            "description": "The code associated with a corporate rate",
            "type": "string"
          },
          {
            "in": "query",
            "name": "requote",
            "description": "Whether the offers should be re-quoted based on current prices, or only additions like change of number of adults should be calculated.\nDefaults to \u0027false\u0027",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "description": "Return also offers that are currently not publicly bookable as restrictions are violated. By default only available offers are returned",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "The list of unit groups used to filter the offers.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ReservationStayOffersModel"
            }
          },
          "204": {
            "description": "There are no available offers for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offers.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations/{id}/service-offers": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns service offers for one specific reservation.",
        "description": "Calculates and returns service offers for a specific reservation.\u003Cbr\u003EYou must have at least one of these scopes: \u0027offers.read, reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdService-offersGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "channelCode",
            "description": "The channel code used to filter the services",
            "type": "string",
            "enum": [
              "Direct",
              "BookingCom",
              "Ibe",
              "ChannelManager",
              "Expedia",
              "Homelike",
              "Hrs",
              "AltoVita",
              "DesVu",
              "Gimsi"
            ]
          },
          {
            "in": "query",
            "name": "onlyDefaultDates",
            "description": "Depending on the postNextDay setting of a service it will by default be posted before or after midnight.\nBreakfast is usually delivered on the next morning, so all the dates from the day after arrival to the departure day\nare default dates and will have this flag set to true. For services like a dinner it is the other way around.\nWith this query parameter, you can also ask for the dates, that usually the service will not be booked. It defaults to true.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "description": "Return also offers that are currently not publicly bookable as restrictions are violated. By default only available offers are returned",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ServiceOffersModel"
            }
          },
          "204": {
            "description": "There are no available offers for the specified parameters."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "offers.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservations/{id}/services": {
      "get": {
        "tags": [
          "Reservation"
        ],
        "summary": "Returns the services booked for a specific reservation.",
        "description": "Returns the services booked for a specific reservation.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.read, reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdServicesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ReservationServiceListModel"
            }
          },
          "204": {
            "description": "There are no booked services for the specified reservation."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.read",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Reservation"
        ],
        "summary": "Removes a service from a reservation.",
        "description": "Removes a service from a reservation. The service will not be removed if it is mandatory, already posted or if the service date is in the past.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservationsByIdServicesDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "serviceId",
            "description": "The id of the service to delete",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/assign-unit": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Assign a unit to a reservation.",
        "description": "Assigns one of the available units to a reservation which is in state \u0027Confirmed\u0027 or \u0027InHouse\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.assign-unit, reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdAssign-unitPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation a unit should be assigned to.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "unitConditions",
            "description": "The optional unit conditions for unit that you want to auto assign for.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Clean",
                "CleanToBeInspected",
                "Dirty"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Unit assignment was successful.",
            "schema": {
              "$ref": "#/definitions/AutoAssignedUnitListModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.assign-unit",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/assign-unit/{unitId}": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Assign a specific unit to a reservation.",
        "description": "Assigns a specific unit to a reservation which is in state \u0027Confirmed\u0027 or \u0027InHouse\u0027.\nIf the unit is not available, the call will return an error, and no unit will be assigned.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.assign-unit, reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdAssign-unitByUnitIdPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation the unit should be assigned to.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "unitId",
            "description": "The id of the unit to be assigned.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start date and optional time for the unit assignment. If not specified, the reservation\u0027s arrival will be used.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string"
          },
          {
            "in": "query",
            "name": "to",
            "description": "The end date and optional time for the unit assignment. If not specified, the reservation\u0027s departure will be used.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
            "type": "string"
          },
          {
            "in": "query",
            "name": "lockUnit",
            "description": "Whether to lock the unit for the duration of the reservation. If not specified, the unit will not be locked.",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Unit assignment was successful.",
            "schema": {
              "$ref": "#/definitions/AssignedUnitModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.assign-unit",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/unassign-units": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Unassign units from a reservation.",
        "description": "Unassigns units for all time slices of the given reservation. If no units are assigned for the\nreservation nothing will happen. It will fail for reservations in status \u0027CheckedOut\u0027.\u003Cbr\u003EYou must have at least one of these scopes: \u0027reservations.assign-unit, reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdUnassign-unitsPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation the unit should be unassigned for.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Unassigning the unit was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.assign-unit",
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/checkin": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Check-in of a reservation.",
        "description": "Check in a specific reservation which is in status \u0027Confirmed\u0027, and has a unit assigned. This changes the status to \u0027InHouse\u0027, and sets the check-in date and time.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdCheckinPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be processed.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "withCityTax",
            "description": "Define if city tax should be added for this reservation or not. The default is \u0022true\u0022.",
            "type": "boolean"
          }
        ],
        "responses": {
          "204": {
            "description": "Check-in of the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/revert-checkin": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Reverses the check-in of a reservation.",
        "description": "\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdRevert-checkinPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the reservation to reverse the check-in for.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/checkout": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Check-out of a reservation.",
        "description": "Check out a specific reservation which is in status \u0027InHouse\u0027. This changes the status to \u0027CheckedOut\u0027, and sets the check-out date and time.\nAll open charges on the folio will be posted.\n\n\nCheck-out is only possible, if the departure date is not later than tomorrow. Otherwise, first amend the reservation and shorten the stay.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdCheckoutPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Check-out of the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/cancel": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Cancel a reservation.",
        "description": "Cancel a specific reservation which is in status \u0027Confirmed\u0027 and where the arrival time is in the future.\nThis changes the status to \u0027Canceled\u0027, and sets the cancellation date and time.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdCancelPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Cancellation of the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/noshow": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Set a reservation to No-show.",
        "description": "Set a specific reservation to No-show which is in status \u0027Confirmed\u0027 and where the arrival date is in the past.\nThis changes the status to \u0027NoShow\u0027, and sets the no-show date and time.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdNoshowPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be processed.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Setting the reservation to No-show was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/amend": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Allows you to amend the stay details of a reservation",
        "description": "Modifies the stay-related data of a reservation.\n\nIf a reservation is \u0027Confirmed\u0027, you can change all fields.\n\nIf a reservation is \u0027InHouse\u0027, only changes to future time slices are possible.\n\nChanges to reservations that are in the status \u0027CheckedOut\u0027 or \u0027Canceled\u0027 are not possible at all.\nRegardless of requote value, the prices for time slices will be re-quoted based on current prices\n- rate plan changes\n- reservation is part of a block. The current rates of the block will be applied.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdAmendPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be modified",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new stay details that should be applied to the reservation.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DesiredStayDetailsModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The reservation has been changed."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/amend/$force": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Allows you to amend the stay details of a reservation regardless of availability or restrictions.",
        "description": "Modifies the stay-related data of a reservation.\n\nIf a reservation is \u0027Confirmed\u0027, you can change all fields.\n\nIf a reservation is \u0027InHouse\u0027, only changes to future time slices are possible.\n\nChanges to reservations that are in the status \u0027CheckedOut\u0027 or \u0027Canceled\u0027 are not possible at all.\nRegardless of requote value, the prices for time slices will be re-quoted based on current prices\n- rate plan changes\n- reservation is part of a block. The current rates of the block will be applied.\u003Cbr\u003EYou must have this scope: \u0027reservations.force-manage\u0027.",
        "operationId": "BookingReservation-actionsByIdAmend$forcePut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation that should be modified",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new stay details that should be applied to the reservation.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DesiredStayDetailsModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The reservation has been changed."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.force-manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/book-service": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Book the service for a specific reservation.",
        "description": "Use this to book a service for a specific reservation.\nPlease note that when dates are specified, all desired dates must be specified or they will be removed if not posted to the folio.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdBook-servicePut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BookReservationServiceModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Booking of the service for the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/book-service/$force": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Book the service for a specific reservation regardless of availability.",
        "description": "Use this to book a service for a specific reservation.\nPlease note that when dates are specified, all desired dates must be specified or they will be removed if not posted to the folio.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdBook-service$forcePut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BookReservationServiceModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Booking of the service for the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "415": {
            "description": "Unsupported media type."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/remove-city-tax": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Removes the city tax from a reservation.",
        "description": "Use this is you want to remove the city tax from a reservation before the stay.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdRemove-city-taxPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Removal of the city tax for the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/add-city-tax": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Adds the city tax to a reservation.",
        "description": "Use this if you want to add the city tax to a reservation.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdAdd-city-taxPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Addition of the city tax for the reservation was successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/lock-unit": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Lock unit assignment for a reservation.",
        "description": "Locks the currently assigned unit(s) for a reservation, preventing any reassignment or unassignment operations.\nOnly reservations in \u0027Confirmed\u0027 or \u0027InHouse\u0027 status can be locked.\nAt least one unit must be assigned to the reservation before locking.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdLock-unitPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Reservation was locked successful."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/reservation-actions/{id}/unlock-unit": {
      "put": {
        "tags": [
          "ReservationActions"
        ],
        "summary": "Unlock unit assignment for a reservation.",
        "description": "Unlocks the currently assigned unit(s) for a reservation that were previously locked, allowing reassignment or unassignment operations.\nThe unit assignment must currently be in a locked state.\u003Cbr\u003EYou must have this scope: \u0027reservations.manage\u0027.",
        "operationId": "BookingReservation-actionsByIdUnlock-unitPut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the reservation",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Reservation was unlocked successfully."
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reservations.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/booking/v1/types/sources": {
      "get": {
        "tags": [
          "Types"
        ],
        "summary": "Returns a list of supported sources.",
        "description": "Returns a list of channels that could be used as a source to create bookings.",
        "operationId": "BookingTypesSourcesGet",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/SourceListModel"
            }
          },
          "404": {
            "description": "The Request-URI could not be found."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        }
      }
    },
    "/booking/v1/types/{type}/allowed-values": {
      "get": {
        "tags": [
          "Types"
        ],
        "summary": "Returns a list of values that a field of the specified type can take in the specified country.",
        "description": "\u003Cbr\u003EYou need to be authorized (no particular scope required)",
        "operationId": "BookingTypesByTypeAllowed-valuesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "type",
            "description": "The type to provide allowed values for",
            "required": true,
            "type": "string",
            "enum": [
              "Gender",
              "IdentificationType"
            ]
          },
          {
            "in": "query",
            "name": "countryCode",
            "description": "The code of the country in which the property is located in ISO 3166-1 alpha-2 format.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "Filter the result by the provided free text.\nIf specified, only values that contain one of the provided values will be returned.",
            "type": "string"
          },
          {
            "in": "query",
            "name": "pageNumber",
            "description": "Page number to retrieve. Default: 1. If the page has no items, the API returns 204 No Content.",
            "type": "integer",
            "default": 1
          },
          {
            "in": "query",
            "name": "pageSize",
            "description": "Items per page. Default: 500. Maximum: 500.",
            "type": "integer",
            "default": 500
          },
          {
            "in": "query",
            "name": "sort",
            "description": "List of all fields that can be used to sort the results. Possible values are: value:asc, value:desc. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "value:asc",
                "value:desc"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns values matching your criteria.",
            "schema": {
              "$ref": "#/definitions/AllowedValueListModel"
            }
          },
          "204": {
            "description": "There are no values matching your criteria."
          },
          "404": {
            "description": "There are no distinct values for this type. This means that any value is allowed."
          },
          "400": {
            "description": "Bad request."
          },
          "401": {
            "description": "You are unauthorized."
          },
          "403": {
            "description": "Forbidden."
          },
          "499": {
            "description": "Client closed request."
          },
          "500": {
            "description": "An unexpected error occurred."
          },
          "503": {
            "description": "The server is currently unavailable. Please try later."
          },
          "422": {
            "description": "Validation errors in the request body or query params.",
            "schema": {
              "$ref": "#/definitions/MessageItemCollection"
            }
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ]
      }
    }
  },
  "definitions": {
    "ActionModel[AuthorizationAction,NotAllowedAuthorizationActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "Cancel",
            "Refresh",
            "ExpirePaymentLink"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedAuthorizationActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionModel[BlockAction,NotAllowedBlockActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "Delete",
            "Confirm",
            "Release",
            "Cancel",
            "Pickup",
            "Modify",
            "Wash",
            "SetToOptional"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedBlockActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionModel[GroupAction,NotAllowedGroupActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "Delete"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedGroupActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionModel[PaymentAccountAction,NotAllowedPaymentAccountActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "Cancel",
            "ExpirePaymentLink"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedPaymentAccountActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionModel[ReservationAction,NotAllowedReservationActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "CheckIn",
            "CheckOut",
            "Cancel",
            "AmendTimeSlices",
            "AmendArrival",
            "AmendDeparture",
            "NoShow",
            "AssignUnit",
            "UnassignUnit",
            "RemoveCityTax",
            "AddCityTax",
            "RemoveService",
            "AddService",
            "CheckInRevert",
            "LockUnit",
            "UnlockUnit"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedReservationActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionModel[ReservationTimeSliceAction,NotAllowedReservationTimeSliceActionReason]": {
      "type": "object",
      "required": [
        "action",
        "isAllowed"
      ],
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "Amend"
          ]
        },
        "isAllowed": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActionReasonModel[NotAllowedReservationTimeSliceActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedAuthorizationActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "OnlySuccessfulAuthorizationCanBeCanceled",
            "OnlySuccessfulAuthorizationCanBeRefreshed",
            "NonActiveAuthorizationCanNotBeRefreshed",
            "OnlyPendingPaymentLinkAuthorizationCanBeExpired"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedBlockActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "DeleteNotAllowedForBlockWithReservations",
            "ReleaseNotAllowedForBlockWithReservations",
            "ReleaseNotAllowedForBlockInThePast",
            "ReleaseNotAllowedForBlockNotInStatusDefinite",
            "ConfirmNotAllowedForBlockNotInStatusTentative",
            "ConfirmNotAllowedForBlockInThePast",
            "CancelNotAllowedForBlockWithNotCancelledReservations",
            "CancelNotAllowedForBlockNotInStatusDefiniteOrTentative",
            "PickupNotAllowedForBlockNotInStatusDefinite",
            "PickupNotAllowedForBlockInThePast",
            "PickupNotAllowedForFullyPickedBlock",
            "ModifyNotAllowedForBlockInThePast",
            "ModifyNotAllowedForBlockInStatusCanceled",
            "WashNotAllowedForBlockNotInStatusDefinite",
            "WashNotAllowedForBlockWithoutReservations",
            "SetToOptionalNotAllowedForFeatureDisabled",
            "SetToOptionalNotAllowedForBlockNotInStatusTentative",
            "SetToOptionalNotAllowedForBlockInThePast"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedGroupActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "DeleteNotAllowedForGroupWithBlocks"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedPaymentAccountActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "OnlySuccessfulPaymentAccountCanBeCanceled",
            "OnlyPendingPaymentLinkPaymentAccountCanBeExpired"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedReservationActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "CheckInNotAllowedForReservationNotInStatusConfirmed",
            "CheckInNotAllowedBeforeArrivalDate",
            "CheckInNotAllowedAfterDepartureDateTime",
            "CheckInNotAllowedWithoutUnitAssignedForWholeStay",
            "CheckInRevertDisabled",
            "CheckInRevertNotAllowedForReservationNotInInHouseStatus",
            "CheckInRevertNotAllowedForReservationWithPostedCharges",
            "CheckOutNotAllowedForReservationNotInStatusInHouse",
            "CheckOutNotAllowedForPastReservationNotInStatusConfirmedOrInHouse",
            "CheckOutNotAllowedWithDepartureDateMoreThanOneDayInTheFuture",
            "CancelNotAllowedForReservationNotInStatusConfirmed",
            "AmendNotAllowedForNotAmendableTimeSlices",
            "AmendArrivalNotAllowedForNotAmendableTimeSlices",
            "AmendArrivalNotAllowedForReservationNotInStatusConfirmed",
            "AmendArrivalNotAllowedWhenMainFolioIsClosedOrClosing",
            "AmendDepartureNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "AmendDepartureNotAllowedForReservationDepartureDateTooFarInThePast",
            "AmendDepartureNotAllowedWhenMainFolioIsClosedOrClosing",
            "NoShowNotAllowedForReservationNotInStatusConfirmed",
            "NoShowNotAllowedBeforeArrivalDate",
            "AssignUnitNotAllowedForReservationInThePast",
            "AssignUnitNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "UnassignUnitNotAllowedForReservationInThePast",
            "UnassignUnitNotAllowedForReservationNotInStatusConfirmed",
            "UnassignUnitNotAllowedForReservationWithoutUnit",
            "RemoveCityTaxNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "RemoveCityTaxNotAllowedForReservationWithPostedCharges",
            "RemoveCityTaxNotAllowedForReservationWithoutCityTax",
            "AddCityTaxNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "AddCityTaxNotAllowedForReservationWithCityTax",
            "AddCityTaxNotAllowedForReservationForRatePlanNotSubjectToCityTax",
            "AddCityTaxNotAllowedForReservationWithPostedCharges",
            "RemoveServiceNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "RemoveServiceNotAllowedForReservationInThePast",
            "AddServiceNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "AddServiceNotAllowedForReservationInThePast",
            "AddServiceNotAllowedWhenMainFolioIsClosedOrClosing",
            "LockUnitNotAllowedForReservationNotInStatusConfirmedOrInHouse",
            "LockUnitNotAllowedForReservationWhenUnitsNotAssigned",
            "UnlockUnitNotAllowedForReservationNotLocked",
            "AssignUnitNotAllowedForLockedReservation",
            "UnassignUnitNotAllowedForLockedReservation"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ActionReasonModel[NotAllowedReservationTimeSliceActionReason]": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "AmendNotAllowedWhenTimeSliceIsInThePast",
            "AmendNotAllowedWhenTimeSliceIsAlreadyPosted",
            "AmendNotAllowedForReservationInFinalStatus",
            "AmendNotAllowedWhenMainFolioIsClosedOrClosing"
          ]
        },
        "message": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "AddReservationsModel": {
      "type": "object",
      "description": "With this request you can add reservations to an existing booking",
      "required": [
        "reservations"
      ],
      "properties": {
        "reservations": {
          "type": "array",
          "description": "List of reservations to add to the existing booking",
          "items": {
            "$ref": "#/definitions/CreateReservationModel"
          }
        },
        "transactionReference": {
          "type": "string",
          "description": "The reference of a payment transaction. This should be set when a payment transaction has been initiated and should be used to complete the transaction upon reservation creation.\nWhen set, the payment transaction completion is always triggered regardless of the reservation guarantee type and payment automation settings.",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "reservations": [
          {
            "arrival": "2026-09-04",
            "departure": "2026-09-06",
            "adults": 1,
            "comment": "I need a wake up service",
            "externalCode": "812864414|381",
            "channelCode": "BookingCom",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "guaranteeType": "Prepayment",
            "timeSlices": [
              {
                "ratePlanId": "MUC-NONREF-DBL"
              },
              {
                "ratePlanId": "MUC-NONREF-DBL"
              }
            ],
            "services": [
              {
                "serviceId": "MUC-BRKF"
              },
              {
                "serviceId": "MUC-YOGA",
                "dates": [
                  {
                    "serviceDate": "2026-09-05",
                    "amount": {
                      "amount": 35.0,
                      "currency": "EUR"
                    }
                  }
                ]
              }
            ],
            "companyId": "UMBRELLA",
            "corporateCode": "UMBRELLA-MUC_NONREF_DBL"
          },
          {
            "arrival": "2026-09-05",
            "departure": "2026-09-07",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "channelCode": "Direct",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Eric",
              "middleInitial": "E",
              "lastName": "Steinmetz",
              "email": "eric.e@steinmetz.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "guaranteeType": "CreditCard",
            "timeSlices": [
              {
                "ratePlanId": "BER-FLEX-DBL"
              },
              {
                "ratePlanId": "BER-FLEX-DBL"
              }
            ],
            "commission": {
              "commissionAmount": {
                "amount": 20.0,
                "currency": "EUR"
              },
              "beforeCommissionAmount": {
                "amount": 100.0,
                "currency": "EUR"
              }
            }
          }
        ],
        "transactionReference": "RFEUFHEW"
      }
    },
    "AllowedValueListModel": {
      "type": "object",
      "required": [
        "allowedValues",
        "count"
      ],
      "properties": {
        "allowedValues": {
          "type": "array",
          "description": "List of allowed values",
          "items": {
            "type": "string"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "allowedValues": [
          "PassportNumber",
          "DriverLicenseNumber"
        ],
        "count": 5
      }
    },
    "AmountModel": {
      "type": "object",
      "required": [
        "currency",
        "grossAmount",
        "netAmount",
        "vatPercent",
        "vatType"
      ],
      "properties": {
        "grossAmount": {
          "type": "number",
          "format": "double"
        },
        "netAmount": {
          "type": "number",
          "format": "double"
        },
        "vatType": {
          "type": "string",
          "enum": [
            "Null",
            "VeryReduced",
            "Reduced",
            "Normal",
            "Without",
            "Special",
            "Special1",
            "Special2",
            "ReducedCovid19",
            "NormalCovid19",
            "Mixed"
          ]
        },
        "vatPercent": {
          "type": "number",
          "format": "double"
        },
        "currency": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "example": {
        "grossAmount": 107.0,
        "netAmount": 100.0,
        "vatType": "Reduced",
        "vatPercent": 7.0,
        "currency": "USD"
      }
    },
    "AssignedUnitModel": {
      "type": "object",
      "required": [
        "unit"
      ],
      "properties": {
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "unit": {
          "id": "MUC-JQI",
          "name": "A.102",
          "description": "Double room",
          "unitGroupId": "MUC-DBL"
        }
      }
    },
    "AuthorizationCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Created authorization id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "HDQFGFOS"
      }
    },
    "AuthorizationListModel": {
      "type": "object",
      "required": [
        "authorizations",
        "count"
      ],
      "properties": {
        "authorizations": {
          "type": "array",
          "description": "List of authorizations",
          "items": {
            "$ref": "#/definitions/AuthorizationModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "authorizations": [
          {
            "id": "IUSENHBB",
            "target": {
              "type": "Booking",
              "id": "KYKXKLWL",
              "propertyId": "MUC"
            },
            "created": "2026-09-02T23:40:40.8365123Z",
            "updated": "2026-09-02T23:40:40.8365126Z",
            "externalReference": {
              "paymentTransactionId": "VT6G6BFUR6XE5MHZARAX2ODK7Y"
            },
            "amount": {
              "amount": 150.0,
              "currency": "EUR"
            },
            "remainingBalance": {
              "amount": 100.0,
              "currency": "EUR"
            },
            "status": "Success",
            "payerInteraction": "PaymentAccount",
            "expiresAt": "2026-10-02T23:40:40.8365132Z",
            "actions": [
              {
                "action": "Cancel",
                "isAllowed": false,
                "reasons": [
                  {
                    "code": "OnlySuccessfulAuthorizationCanBeCanceled",
                    "message": "Only a successful authorization can be canceled."
                  }
                ]
              },
              {
                "action": "Refresh",
                "isAllowed": true
              },
              {
                "action": "ExpirePaymentLink",
                "isAllowed": false,
                "reasons": [
                  {
                    "code": "OnlyPendingPaymentLinkAuthorizationCanBeExpired",
                    "message": "Only pending payment link authorization can be expired."
                  }
                ]
              }
            ]
          }
        ],
        "count": 1
      }
    },
    "AuthorizationModel": {
      "type": "object",
      "required": [
        "amount",
        "created",
        "id",
        "payerInteraction",
        "status",
        "target",
        "updated"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Authorization id"
        },
        "target": {
          "$ref": "#/definitions/AuthorizationTargetModel"
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "updated": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "externalReference": {
          "$ref": "#/definitions/ExternalAuthorizationReferenceModel"
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "remainingBalance": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "status": {
          "type": "string",
          "description": "Status of the authorization",
          "enum": [
            "Pending",
            "Success",
            "Failure",
            "Canceled",
            "Expired",
            "RefreshPending"
          ]
        },
        "failureReason": {
          "type": "string",
          "description": "Human-readable failure reason",
          "x-nullable": true
        },
        "payerInteraction": {
          "type": "string",
          "description": "Payer interaction of the authorization",
          "enum": [
            "Terminal",
            "PaymentAccount",
            "Authorization",
            "PaymentLink"
          ]
        },
        "expiresAt": {
          "type": "string",
          "description": "The date and time the authorization expires\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "paymentLinkUrl": {
          "type": "string",
          "description": "The URL to the payment link when authorization is created by payment link",
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for authorization",
          "items": {
            "$ref": "#/definitions/ActionModel[AuthorizationAction,NotAllowedAuthorizationActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "IUSENHBB",
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL",
          "propertyId": "MUC"
        },
        "created": "2026-09-02T23:40:40.8317268Z",
        "updated": "2026-09-02T23:40:40.8317279Z",
        "externalReference": {
          "paymentTransactionId": "VT6G6BFUR6XE5MHZARAX2ODK7Y"
        },
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        },
        "remainingBalance": {
          "amount": 100.0,
          "currency": "EUR"
        },
        "status": "Success",
        "payerInteraction": "PaymentAccount",
        "expiresAt": "2026-10-02T23:40:40.8317284Z",
        "actions": [
          {
            "action": "Cancel",
            "isAllowed": false,
            "reasons": [
              {
                "code": "OnlySuccessfulAuthorizationCanBeCanceled",
                "message": "Only a successful authorization can be canceled."
              }
            ]
          },
          {
            "action": "Refresh",
            "isAllowed": true
          },
          {
            "action": "ExpirePaymentLink",
            "isAllowed": false,
            "reasons": [
              {
                "code": "OnlyPendingPaymentLinkAuthorizationCanBeExpired",
                "message": "Only pending payment link authorization can be expired."
              }
            ]
          }
        ]
      }
    },
    "AuthorizationRefreshRequest": {
      "type": "object",
      "required": [
        "amount"
      ],
      "properties": {
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        }
      }
    },
    "AuthorizationTargetModel": {
      "type": "object",
      "required": [
        "id",
        "propertyId",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "Authorization target type",
          "enum": [
            "Booking",
            "Reservation"
          ]
        },
        "id": {
          "type": "string",
          "description": "Booking or reservation id"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property the authorization is to be created for. When target is Reservation, the property must be the same the reservation."
        }
      },
      "additionalProperties": false
    },
    "AutoAssignedUnitItemModel": {
      "type": "object",
      "required": [
        "from",
        "to",
        "unit"
      ],
      "properties": {
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        },
        "from": {
          "type": "string",
          "description": "The start date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "The end date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "AutoAssignedUnitListModel": {
      "type": "object",
      "required": [
        "timeSlices"
      ],
      "properties": {
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices with the respective assigned unit",
          "items": {
            "$ref": "#/definitions/AutoAssignedUnitItemModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "timeSlices": [
          {
            "unit": {
              "id": "MUC-JQI",
              "name": "A.102",
              "description": "Double room",
              "unitGroupId": "MUC-DBL"
            },
            "from": "2026-09-02T17:00:00\u002B02:00",
            "to": "2026-09-03T11:00:00\u002B02:00"
          },
          {
            "unit": {
              "id": "MUC-MTA",
              "name": "A.101",
              "description": "Single room",
              "unitGroupId": "MUC-SGL"
            },
            "from": "2026-09-03T17:00:00\u002B02:00",
            "to": "2026-09-04T11:00:00\u002B02:00"
          }
        ]
      }
    },
    "BlockCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Block id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-HSGTDG"
      }
    },
    "BlockItemModel": {
      "type": "object",
      "required": [
        "created",
        "from",
        "grossDailyRate",
        "group",
        "id",
        "modified",
        "pickedReservations",
        "property",
        "ratePlan",
        "status",
        "to",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Block id"
        },
        "group": {
          "$ref": "#/definitions/EmbeddedGroupModel"
        },
        "status": {
          "type": "string",
          "description": "Status of the block",
          "enum": [
            "Tentative",
            "Definite",
            "Canceled",
            "Optional"
          ]
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "grossDailyRate": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "from": {
          "type": "string",
          "description": "Start date and time from which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "pickedReservations": {
          "type": "integer",
          "description": "Number of reservations already picked from this block",
          "format": "int32"
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer used to create the block",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "The corporate code associated with a certain special offer used to create the block",
          "x-nullable": true
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of blocked units for each time slice",
          "items": {
            "$ref": "#/definitions/BlockTimeSliceModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this block",
          "items": {
            "$ref": "#/definitions/ActionModel[BlockAction,NotAllowedBlockActionReason]"
          },
          "x-nullable": true
        },
        "optionalCutoff": {
          "type": "string",
          "description": "Optional cutoff date, populated only when the block is in status Optional\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "optionalCutoffBehavior": {
          "type": "string",
          "description": "Optional cutoff behavior, populated only when the block is in status Optional",
          "enum": [
            "DoNothing",
            "AutoRelease"
          ],
          "x-nullable": true
        },
        "isOptionalDeductingInventory": {
          "type": "boolean",
          "description": "Whether this optional block reduces availability, populated only when the block is in status Optional",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "BlockListModel": {
      "type": "object",
      "required": [
        "blocks",
        "count"
      ],
      "properties": {
        "blocks": {
          "type": "array",
          "description": "List of blocks",
          "items": {
            "$ref": "#/definitions/BlockItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "blocks": [
          {
            "id": "MUC-HSGTDG",
            "group": {
              "id": "XPGMSXGF",
              "name": "apaleo Summer Festival 2027"
            },
            "status": "Tentative",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Single",
              "description": "Single",
              "type": "BedRoom"
            },
            "grossDailyRate": {
              "amount": 160.0,
              "currency": "EUR"
            },
            "from": "2026-09-07T17:00:00\u002B02:00",
            "to": "2026-09-08T11:00:00\u002B02:00",
            "pickedReservations": 0,
            "created": "0001-01-01T00:00:00Z",
            "modified": "0001-01-01T00:00:00Z",
            "timeSlices": [
              {
                "from": "2026-09-07T17:00:00\u002B02:00",
                "to": "2026-09-08T11:00:00\u002B02:00",
                "blockedUnits": 2,
                "pickedUnits": 0,
                "baseAmount": {
                  "grossAmount": 115.0,
                  "netAmount": 100.0,
                  "vatType": "Special",
                  "vatPercent": 15.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 120.0,
                  "currency": "EUR"
                }
              }
            ]
          },
          {
            "id": "MUC-JAIULS",
            "group": {
              "id": "XPGMSXGF",
              "name": "apaleo Summer Festival 2027"
            },
            "status": "Definite",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_DBL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "grossDailyRate": {
              "amount": 190.0,
              "currency": "EUR"
            },
            "from": "2026-09-07T17:00:00\u002B02:00",
            "to": "2026-09-09T11:00:00\u002B02:00",
            "pickedReservations": 1,
            "marketSegment": {
              "id": "CORP",
              "code": "CORP",
              "name": "Corporate Groups"
            },
            "created": "0001-01-01T00:00:00Z",
            "modified": "0001-01-01T00:00:00Z",
            "timeSlices": [
              {
                "from": "2026-09-07T17:00:00\u002B02:00",
                "to": "2026-09-08T11:00:00\u002B02:00",
                "blockedUnits": 2,
                "pickedUnits": 1,
                "baseAmount": {
                  "grossAmount": 115.0,
                  "netAmount": 100.0,
                  "vatType": "Special",
                  "vatPercent": 15.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 120.0,
                  "currency": "EUR"
                }
              },
              {
                "from": "2026-09-08T17:00:00\u002B02:00",
                "to": "2026-09-09T11:00:00\u002B02:00",
                "blockedUnits": 3,
                "pickedUnits": 1,
                "baseAmount": {
                  "grossAmount": 115.0,
                  "netAmount": 100.0,
                  "vatType": "Special",
                  "vatPercent": 15.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 120.0,
                  "currency": "EUR"
                }
              }
            ]
          }
        ],
        "count": 2
      }
    },
    "BlockModel": {
      "type": "object",
      "required": [
        "created",
        "from",
        "grossDailyRate",
        "group",
        "id",
        "modified",
        "pickedReservations",
        "property",
        "ratePlan",
        "status",
        "to",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Block id"
        },
        "group": {
          "$ref": "#/definitions/EmbeddedGroupModel"
        },
        "status": {
          "type": "string",
          "description": "Status of the block. Tentative will just mark inventory as requested, but still allows to sell it\nthrough other channels. Definite will block the inventory for selling through other channels",
          "enum": [
            "Tentative",
            "Definite",
            "Canceled",
            "Optional"
          ]
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "grossDailyRate": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "from": {
          "type": "string",
          "description": "Start date and time from which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "pickedReservations": {
          "type": "integer",
          "description": "Number of reservations already picked from this block",
          "format": "int32"
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer used to create the block",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "The corporate code associated with a certain special offer used to create the block",
          "x-nullable": true
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices for this block",
          "items": {
            "$ref": "#/definitions/BlockTimeSliceModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this block",
          "items": {
            "$ref": "#/definitions/ActionModel[BlockAction,NotAllowedBlockActionReason]"
          },
          "x-nullable": true
        },
        "optionalCutoff": {
          "type": "string",
          "description": "Optional cutoff date, populated only when the block is in status Optional\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "optionalCutoffBehavior": {
          "type": "string",
          "description": "Optional cutoff behavior, populated only when the block is in status Optional",
          "enum": [
            "DoNothing",
            "AutoRelease"
          ],
          "x-nullable": true
        },
        "isOptionalDeductingInventory": {
          "type": "boolean",
          "description": "Whether this optional block reduces availability, populated only when the block is in status Optional",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-HSGTDG",
        "group": {
          "id": "XPGMSXGF",
          "name": "apaleo Summer Festival 2027"
        },
        "status": "Tentative",
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "ratePlan": {
          "id": "MUC-NONREF_SGL",
          "code": "NONREF",
          "name": "Non Refundable",
          "description": "Non Refundable",
          "isSubjectToCityTax": false
        },
        "unitGroup": {
          "id": "MUC-SGL",
          "code": "SGL",
          "name": "Single",
          "description": "Single",
          "type": "BedRoom"
        },
        "grossDailyRate": {
          "amount": 160.0,
          "currency": "EUR"
        },
        "from": "2026-09-07T17:00:00\u002B02:00",
        "to": "2026-09-09T11:00:00\u002B02:00",
        "pickedReservations": 0,
        "marketSegment": {
          "id": "CORP",
          "code": "CORP",
          "name": "Corporate Groups"
        },
        "created": "0001-01-01T00:00:00Z",
        "modified": "0001-01-01T00:00:00Z",
        "timeSlices": [
          {
            "from": "2026-09-07T17:00:00\u002B02:00",
            "to": "2026-09-08T11:00:00\u002B02:00",
            "blockedUnits": 2,
            "pickedUnits": 0,
            "baseAmount": {
              "grossAmount": 115.0,
              "netAmount": 100.0,
              "vatType": "Special",
              "vatPercent": 15.0,
              "currency": "EUR"
            },
            "totalGrossAmount": {
              "amount": 120.0,
              "currency": "EUR"
            }
          },
          {
            "from": "2026-09-08T17:00:00\u002B02:00",
            "to": "2026-09-09T11:00:00\u002B02:00",
            "blockedUnits": 3,
            "pickedUnits": 0,
            "baseAmount": {
              "grossAmount": 1071.0,
              "netAmount": 900.0,
              "vatType": "Special",
              "vatPercent": 19.0,
              "currency": "EUR"
            },
            "totalGrossAmount": {
              "amount": 120.0,
              "currency": "EUR"
            }
          }
        ]
      }
    },
    "BlockTimeSliceModel": {
      "type": "object",
      "required": [
        "baseAmount",
        "blockedUnits",
        "from",
        "pickedUnits",
        "to",
        "totalGrossAmount"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Start date and time from which units will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which units will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "blockedUnits": {
          "type": "integer",
          "description": "Number of units blocked for this time slice",
          "format": "int32"
        },
        "pickedUnits": {
          "type": "integer",
          "description": "Number of units which have picked reservations for this time slice",
          "format": "int32"
        },
        "baseAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "BookReservationServiceModel": {
      "type": "object",
      "required": [
        "serviceId"
      ],
      "properties": {
        "serviceId": {
          "type": "string",
          "description": "The id of the service you want to book"
        },
        "count": {
          "type": "integer",
          "description": "The number of services to book for each service date. It defaults to the service offer count when not specified.",
          "format": "int32",
          "x-nullable": true
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "dates": {
          "type": "array",
          "description": "The optional dates you want to book the service for; if not specified the default service pattern will be used (e.g. whole stay).",
          "items": {
            "$ref": "#/definitions/Date"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "serviceId": "MUC-SPA",
        "dates": [
          {
            "serviceDate": "2026-09-02",
            "amount": {
              "amount": 25.0,
              "currency": "EUR"
            }
          },
          {
            "serviceDate": "2026-09-03"
          }
        ]
      }
    },
    "BookerModel": {
      "type": "object",
      "required": [
        "lastName"
      ],
      "properties": {
        "title": {
          "type": "string",
          "description": "Title of the booker",
          "enum": [
            "Mr",
            "Ms",
            "Dr",
            "Prof",
            "Mrs",
            "Other"
          ],
          "x-nullable": true
        },
        "gender": {
          "type": "string",
          "description": "Gender of the booker",
          "enum": [
            "Female",
            "Male",
            "Other",
            "Unknown"
          ],
          "x-nullable": true
        },
        "firstName": {
          "type": "string",
          "description": "First name of the booker",
          "x-nullable": true
        },
        "middleInitial": {
          "type": "string",
          "description": "Middle initial of the booker",
          "x-nullable": true
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the booker",
          "minLength": 1
        },
        "email": {
          "type": "string",
          "description": "Email address of the booker",
          "x-nullable": true
        },
        "phone": {
          "type": "string",
          "description": "Phone number of the booker",
          "x-nullable": true
        },
        "address": {
          "$ref": "#/definitions/PersonAddressModel"
        },
        "nationalityCountryCode": {
          "type": "string",
          "description": "The booker\u0027s nationality, in ISO 3166-1 alpha-2 code",
          "x-nullable": true
        },
        "identificationNumber": {
          "type": "string",
          "description": "The booker\u0027s identification number for the given identificationType.",
          "x-nullable": true
        },
        "identificationIssueDate": {
          "type": "string",
          "description": "The issue date of the booker\u0027s identification document.",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "identificationExpiryDate": {
          "type": "string",
          "description": "The expiry date of the booker\u0027s identification document.",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "identificationType": {
          "type": "string",
          "description": "The type of the identificationNumber",
          "enum": [
            "SocialInsuranceNumber",
            "PassportNumber",
            "IdNumber",
            "DriverLicenseNumber",
            "VisaNumber",
            "ForeignerIdentityNumber",
            "TaxIdentificationNumber",
            "Other"
          ],
          "x-nullable": true
        },
        "company": {
          "$ref": "#/definitions/PersonCompanyModel"
        },
        "preferredLanguage": {
          "type": "string",
          "description": "ISO 639-1 language code (the language, not the country code):\ne.g. vi not vn, ja not jp, cs not cz, zh not cn.",
          "x-nullable": true
        },
        "birthDate": {
          "type": "string",
          "description": "Birth date",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "birthPlace": {
          "type": "string",
          "description": "The place of birth",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "BookingCreatedModel": {
      "type": "object",
      "required": [
        "id",
        "reservationIds"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Booking id"
        },
        "reservationIds": {
          "type": "array",
          "description": "List of ids for newly created reservations",
          "items": {
            "$ref": "#/definitions/ReservationCreatedModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "XPGMSXGF",
        "reservationIds": [
          {
            "id": "XPGMSXGF-1"
          },
          {
            "id": "XPGMSXGF-2"
          }
        ]
      }
    },
    "BookingItemModel": {
      "type": "object",
      "description": "A booking holds all shared metadata for a set of reservations",
      "required": [
        "created",
        "id",
        "modified"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Booking id"
        },
        "groupId": {
          "type": "string",
          "description": "Group id",
          "x-nullable": true
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the booking has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the booking has an active payment account without having to retrieve the payment account details."
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comment by the booker",
          "x-nullable": true
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "reservations": {
          "type": "array",
          "description": "Reservations within this booking",
          "items": {
            "$ref": "#/definitions/BookingReservationModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "BookingListModel": {
      "type": "object",
      "required": [
        "bookings",
        "count"
      ],
      "properties": {
        "bookings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BookingItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "bookings": [
          {
            "id": "XPGMSXGF",
            "booker": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 5",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              }
            },
            "paymentAccount": {
              "accountNumber": "1111",
              "accountHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "isVirtual": false,
              "isActive": false
            },
            "hasActivePaymentAccount": true,
            "registeredCard": {
              "cardNumber": "1111",
              "cardHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "note": "Credit card will be available after 2025-06-23 10:00:00",
              "isVirtual": false
            },
            "comment": "The comment from the front desk or reservation office",
            "bookerComment": "The comment from the booker provided via the booking channel",
            "created": "0001-01-01T00:00:00Z",
            "modified": "0001-01-01T00:00:00Z",
            "reservations": [
              {
                "id": "XPGMSXGF-1",
                "status": "Confirmed",
                "externalCode": "345343345|334",
                "channelCode": "BookingCom",
                "hasActivePaymentAccount": false,
                "arrival": "2026-09-04T17:00:00\u002B02:00",
                "departure": "2026-09-06T11:00:00\u002B02:00",
                "adults": 1,
                "childrenAges": [
                  6
                ],
                "totalGrossAmount": {
                  "amount": 130.0,
                  "currency": "EUR"
                },
                "property": {
                  "id": "MUC",
                  "code": "MUC",
                  "name": "Demo Hotel Munich",
                  "description": "This is the demo hotel Munich"
                },
                "ratePlan": {
                  "id": "MUC-NONREF_SGL",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "Non Refundable",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-SGL",
                  "code": "SGL",
                  "name": "Single",
                  "description": "Single",
                  "type": "BedRoom"
                },
                "guestComment": "The comment from the guest provided via the booking channel",
                "cancellationFee": {
                  "id": "MUC-FLE",
                  "code": "FLE",
                  "name": "Flexible",
                  "description": "Free cancellation until 36 hours before arrival.",
                  "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
                  "fee": {
                    "amount": 30.0,
                    "currency": "EUR"
                  }
                },
                "noShowFee": {
                  "id": "MUC-NONREF",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "No free no-show",
                  "fee": {
                    "amount": 130.0,
                    "currency": "EUR"
                  }
                },
                "isPreCheckedIn": false,
                "isOpenForCharges": true,
                "externalReferences": {
                  "globalDistributionSystemId": "A2PA6WHY",
                  "onlineTravelAgencyId": "5247241379",
                  "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
                  "channelManagerId": "123295310",
                  "centralReservationSystemId": "91200088",
                  "legacyId": "988232144060772"
                }
              }
            ]
          }
        ],
        "count": 1
      }
    },
    "BookingModel": {
      "type": "object",
      "description": "A booking holds all shared metadata for a set of reservations",
      "required": [
        "created",
        "id",
        "modified"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Booking id"
        },
        "groupId": {
          "type": "string",
          "description": "Group id",
          "x-nullable": true
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the booking has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the booking has an active payment account without having to retrieve the payment account details."
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comment by the booker",
          "x-nullable": true
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "propertyValues": {
          "type": "array",
          "description": "Property specific values like total amount and balance",
          "items": {
            "$ref": "#/definitions/PropertyValueModel"
          },
          "x-nullable": true
        },
        "reservations": {
          "type": "array",
          "description": "Reservations within this booking",
          "items": {
            "$ref": "#/definitions/BookingReservationModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "XPGMSXGF",
        "booker": {
          "title": "Mr",
          "gender": "Male",
          "firstName": "Jon",
          "middleInitial": "D",
          "lastName": "Doe",
          "email": "john.d@doe.com",
          "phone": "\u002B4989123343",
          "address": {
            "addressLine1": "My Street 5",
            "postalCode": "12453",
            "city": "MyCity",
            "countryCode": "GB"
          }
        },
        "paymentAccount": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "isVirtual": false,
          "isActive": false
        },
        "hasActivePaymentAccount": true,
        "registeredCard": {
          "cardNumber": "1111",
          "cardHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "note": "Credit card will be available after 2025-06-23 10:00:00",
          "isVirtual": false
        },
        "comment": "The comment from the front desk or reservation office",
        "bookerComment": "The comment from the booker provided via the booking channel",
        "created": "0001-01-01T00:00:00Z",
        "modified": "0001-01-01T00:00:00Z",
        "reservations": [
          {
            "id": "XPGMSXGF-1",
            "status": "Confirmed",
            "externalCode": "345343345|334",
            "channelCode": "BookingCom",
            "paymentAccount": {
              "accountNumber": "1111",
              "accountHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "isVirtual": false,
              "isActive": false
            },
            "hasActivePaymentAccount": true,
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "totalGrossAmount": {
              "amount": 130.0,
              "currency": "EUR"
            },
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_DBL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "guestComment": "The comment from the guest provided via the booking channel",
            "cancellationFee": {
              "id": "MUC-FLE",
              "code": "FLE",
              "name": "Flexible",
              "description": "Free cancellation until 36 hours before arrival.",
              "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
              "fee": {
                "amount": 30.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "id": "MUC-NONREF",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 130.0,
                "currency": "EUR"
              }
            },
            "company": {
              "id": "MUC-UMBRELLA",
              "code": "UMBRELLA",
              "name": "Umbrella Corp.",
              "canCheckOutOnAr": true
            },
            "isPreCheckedIn": false,
            "isOpenForCharges": true,
            "externalReferences": {
              "globalDistributionSystemId": "A2PA6WHY",
              "onlineTravelAgencyId": "5247241379",
              "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
              "channelManagerId": "123295310",
              "centralReservationSystemId": "91200088",
              "legacyId": "988232144060772"
            }
          }
        ]
      }
    },
    "BookingReservationModel": {
      "type": "object",
      "required": [
        "adults",
        "arrival",
        "cancellationFee",
        "channelCode",
        "departure",
        "id",
        "isOpenForCharges",
        "noShowFee",
        "property",
        "ratePlan",
        "status",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Reservation id"
        },
        "status": {
          "type": "string",
          "description": "Status of the reservation",
          "enum": [
            "Confirmed",
            "InHouse",
            "CheckedOut",
            "Canceled",
            "NoShow"
          ]
        },
        "externalCode": {
          "type": "string",
          "description": "Code in external system",
          "x-nullable": true
        },
        "channelCode": {
          "type": "string",
          "description": "Channel code\u003Cbr /\u003E\u003Cb\u003EDeprecated values:\u003C/b\u003E Homelike: Homelike channel is deprecated and no longer accepts new bookings or rate plans.",
          "enum": [
            "Direct",
            "BookingCom",
            "Ibe",
            "ChannelManager",
            "Expedia",
            "Homelike",
            "Hrs",
            "AltoVita",
            "DesVu",
            "Gimsi"
          ]
        },
        "source": {
          "type": "string",
          "description": "Source of the reservation (e.g Hotels.com, Orbitz, etc.)",
          "x-nullable": true
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the reservation has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the reservation has an active payment account without having to retrieve the payment account details."
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "arrival": {
          "type": "string",
          "description": "Date of arrival\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "departure": {
          "type": "string",
          "description": "Date of departure\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "The ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "services": {
          "type": "array",
          "description": "The list of additional services (extras, add-ons) reserved for the stay",
          "items": {
            "$ref": "#/definitions/ReservationServiceItemModel"
          },
          "x-nullable": true
        },
        "guestComment": {
          "type": "string",
          "description": "Additional information and comment by the guest",
          "x-nullable": true
        },
        "cancellationFee": {
          "$ref": "#/definitions/ReservationCancellationFeeModel"
        },
        "noShowFee": {
          "$ref": "#/definitions/ReservationNoShowFeeModel"
        },
        "company": {
          "$ref": "#/definitions/EmbeddedCompanyModel"
        },
        "isPreCheckedIn": {
          "type": "boolean",
          "description": "Indicates whether the reservation is marked as pre-checked-in or not."
        },
        "isOpenForCharges": {
          "type": "boolean",
          "description": "Whether the reservation can accept charges on its folios. This is purely informational and no validation is performed on this field. Defaults to true."
        },
        "externalReferences": {
          "$ref": "#/definitions/ExternalReferencesModel"
        }
      },
      "additionalProperties": false
    },
    "CommissionModel": {
      "type": "object",
      "required": [
        "commissionAmount"
      ],
      "properties": {
        "commissionAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "beforeCommissionAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "CountModel": {
      "type": "object",
      "required": [
        "count"
      ],
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "count": 50
      }
    },
    "CreateAuthorizationPaymentAccountRequest": {
      "type": "object",
      "required": [
        "target",
        "transactionReference"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/PaymentAccountTargetModel"
        },
        "transactionReference": {
          "type": "string",
          "description": "Reference to the original authorization transaction",
          "minLength": 1
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL"
        },
        "transactionReference": "K9DTTJQD4HNG5S82"
      }
    },
    "CreateAuthorizationRequest": {
      "type": "object",
      "required": [
        "amount",
        "target",
        "transactionReference"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/AuthorizationTargetModel"
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "transactionReference": {
          "type": "string",
          "description": "Reference to the original authorization transaction",
          "minLength": 1
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL",
          "propertyId": "MUC"
        },
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        },
        "transactionReference": "K9DTTJQD4HNG5S82"
      }
    },
    "CreateBlockModel": {
      "type": "object",
      "required": [
        "from",
        "grossDailyRate",
        "groupId",
        "ratePlanId",
        "to"
      ],
      "properties": {
        "groupId": {
          "type": "string",
          "description": "ID of the group that reserved the block"
        },
        "ratePlanId": {
          "type": "string",
          "description": "The rate plan"
        },
        "from": {
          "type": "string",
          "description": "Start date and time from which the inventory will be blocked\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which the inventory will be blocked. Cannot be more than 5 years after the start date.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "grossDailyRate": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of blocked units for each time slice",
          "items": {
            "$ref": "#/definitions/CreateBlockTimeSliceModel"
          },
          "x-nullable": true
        },
        "blockedUnits": {
          "type": "integer",
          "description": "Number of units to block for the defined time period",
          "format": "int32",
          "x-nullable": true
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "The corporate code associated with a certain special offer",
          "x-nullable": true
        },
        "marketSegmentId": {
          "type": "string",
          "description": "The market segment Id for this block.\nMust be a valid market segment ID defined at the property level.\nPicked-up reservations will inherit this value by default",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "groupId": "XPGMSXGF",
        "ratePlanId": "MUC-NONREF-SGL",
        "from": "2026-09-07",
        "to": "2026-09-10",
        "grossDailyRate": {
          "amount": 160.0,
          "currency": "EUR"
        },
        "timeSlices": [
          {
            "blockedUnits": 3
          },
          {
            "blockedUnits": 0
          },
          {
            "blockedUnits": 7
          }
        ],
        "marketSegmentId": "BUSR"
      }
    },
    "CreateBlockTimeSliceModel": {
      "type": "object",
      "required": [
        "blockedUnits"
      ],
      "properties": {
        "blockedUnits": {
          "type": "integer",
          "description": "Number of units blocked for the time slice",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "CreateBookingModel": {
      "type": "object",
      "description": "With this request you can create a booking",
      "required": [
        "booker",
        "reservations"
      ],
      "properties": {
        "paymentAccount": {
          "$ref": "#/definitions/CreatePaymentAccountModel"
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comments by the booker",
          "x-nullable": true
        },
        "reservations": {
          "type": "array",
          "description": "List of reservations to create",
          "items": {
            "$ref": "#/definitions/CreateReservationModel"
          }
        },
        "transactionReference": {
          "type": "string",
          "description": "The reference of a payment transaction. This should be set when a payment transaction has been initiated and should be used to complete the transaction upon reservation creation.\nWhen set, the payment transaction completion is always triggered regardless of the reservation guarantee type and payment automation settings.",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "paymentAccount": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "payerReference": "4ea6462b-cca3-4c17-a035-c7b5132db83c",
          "isVirtual": false
        },
        "booker": {
          "title": "Mr",
          "gender": "Male",
          "firstName": "Jon",
          "middleInitial": "D",
          "lastName": "Doe",
          "email": "john.d@doe.com",
          "phone": "\u002B4989123343",
          "address": {
            "addressLine1": "My Street 1",
            "postalCode": "12453",
            "city": "MyCity",
            "countryCode": "GB"
          }
        },
        "reservations": [
          {
            "arrival": "2026-09-04",
            "departure": "2026-09-06",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "guestComment": "I need a wake up service",
            "channelCode": "Direct",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "guaranteeType": "Prepayment",
            "travelPurpose": "Business",
            "timeSlices": [
              {
                "ratePlanId": "MUC-NONREF-FAMILY"
              },
              {
                "ratePlanId": "MUC-NONREF-FAMILY"
              }
            ],
            "services": [
              {
                "serviceId": "MUC-BRKF"
              },
              {
                "serviceId": "MUC-YOGA",
                "dates": [
                  {
                    "serviceDate": "2026-09-05",
                    "amount": {
                      "amount": 35.0,
                      "currency": "EUR"
                    }
                  }
                ]
              }
            ],
            "prePaymentAmount": {
              "amount": 50.0,
              "currency": "EUR"
            },
            "externalReferences": {
              "globalDistributionSystemId": "A2PA6WHY",
              "onlineTravelAgencyId": "5247241379",
              "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
              "channelManagerId": "123295310",
              "centralReservationSystemId": "91200088"
            }
          },
          {
            "arrival": "2026-09-05",
            "departure": "2026-09-07",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "channelCode": "Direct",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Eric",
              "middleInitial": "E",
              "lastName": "Steinmetz",
              "email": "eric.e@steinmetz.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "guaranteeType": "CreditCard",
            "timeSlices": [
              {
                "ratePlanId": "BER-FLEX-DBL",
                "totalAmount": {
                  "amount": 120.0,
                  "currency": "EUR"
                }
              },
              {
                "ratePlanId": "BER-FLEX-DBL",
                "totalAmount": {
                  "amount": 125.0,
                  "currency": "EUR"
                }
              }
            ],
            "companyId": "BER-UMBRELLA",
            "commission": {
              "commissionAmount": {
                "amount": 20.0,
                "currency": "EUR"
              },
              "beforeCommissionAmount": {
                "amount": 100.0,
                "currency": "EUR"
              }
            },
            "externalReferences": {
              "globalDistributionSystemId": "A2PA6WHY",
              "onlineTravelAgencyId": "5247241379",
              "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
              "channelManagerId": "123295310",
              "centralReservationSystemId": "91200088"
            }
          }
        ],
        "transactionReference": "564578124534890J"
      }
    },
    "CreateExternalReferencesModel": {
      "type": "object",
      "properties": {
        "globalDistributionSystemId": {
          "type": "string",
          "description": "The ID of the global distribution system.",
          "x-nullable": true
        },
        "onlineTravelAgencyId": {
          "type": "string",
          "description": "The ID of the online travel agency.",
          "x-nullable": true
        },
        "onlineBookingToolId": {
          "type": "string",
          "description": "The ID of the online booking tool.",
          "x-nullable": true
        },
        "channelManagerId": {
          "type": "string",
          "description": "The ID of the channel manager.",
          "x-nullable": true
        },
        "centralReservationSystemId": {
          "type": "string",
          "description": "The ID of the central reservation system.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "CreateGroupModel": {
      "type": "object",
      "description": "With this request you can create a group booking request",
      "required": [
        "booker",
        "name",
        "propertyIds"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the group",
          "minLength": 1
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comment by the booker",
          "x-nullable": true
        },
        "paymentAccount": {
          "$ref": "#/definitions/CreatePaymentAccountModel"
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "propertyIds": {
          "type": "array",
          "description": "List of property ids the group booking belongs to",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "name": "apaleo Summer Festival 2027",
        "booker": {
          "title": "Mr",
          "gender": "Male",
          "firstName": "Jon",
          "middleInitial": "D",
          "lastName": "Doe",
          "email": "john.d@doe.com",
          "phone": "\u002B4989123343",
          "address": {
            "addressLine1": "My Street 1",
            "postalCode": "12453",
            "city": "MyCity",
            "countryCode": "GB"
          }
        },
        "paymentAccount": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "payerReference": "4ea6462b-cca3-4c17-a035-c7b5132db83c",
          "isVirtual": false
        },
        "registeredCard": {
          "cardNumber": "1111",
          "cardHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "note": "Credit card will be available after 2025-06-23 10:00:00",
          "isVirtual": false
        },
        "propertyIds": [
          "MUC"
        ]
      }
    },
    "CreatePaymentAccountAuthorizationRequest": {
      "type": "object",
      "required": [
        "amount",
        "target"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/AuthorizationTargetModel"
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "accountOwner": {
          "type": "string",
          "description": "Account owner of the payment account, default is \u0060Guest\u0060.\nWill be ignored if PaymentAccountId is provided. - \u003Cb\u003EDEPRECATED: AccountOwner is deprecated, use PaymentAccountId instead. This field will be removed on May 15, 2026. From this date onwards, PaymentAccountId will be a required parameter.\u003C/b\u003E",
          "enum": [
            "Guest",
            "Booker"
          ]
        },
        "paymentAccountId": {
          "type": "string",
          "description": "Optional payment account id.\nIf passed, it is verified that the provided payment account is available for the target.\nFrom Feb 15, 2026 onwards, PaymentAccountId will be a required parameter.",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL",
          "propertyId": "MUC"
        },
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        },
        "accountOwner": "Guest",
        "paymentAccountId": "UBMFXUFH"
      }
    },
    "CreatePaymentAccountModel": {
      "type": "object",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "The account number (e.g. masked credit card number or last 4 digits)",
          "x-nullable": true
        },
        "accountHolder": {
          "type": "string",
          "description": "The account holder (e.g. card holder)",
          "x-nullable": true
        },
        "expiryMonth": {
          "type": "string",
          "description": "The credit card\u0027s expiration month",
          "x-nullable": true
        },
        "expiryYear": {
          "type": "string",
          "description": "The credit card\u0027s expiration year",
          "x-nullable": true
        },
        "paymentMethod": {
          "type": "string",
          "description": "The payment method (e.g. visa)",
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the shopper / customer",
          "x-nullable": true
        },
        "payerReference": {
          "type": "string",
          "description": "The reference used to uniquely identify the shopper (e.g. user ID or account ID). Used for recurring payments",
          "x-nullable": true
        },
        "isVirtual": {
          "type": "boolean",
          "description": "Indicates if the payment account is a virtual credit card. If not specified it defaults to \u0027false\u0027"
        },
        "inactiveReason": {
          "type": "string",
          "description": "A reason why account is inactive when PayerReference was not provided - \u003Cb\u003EDEPRECATED: InactiveReason is deprecated. To add a payment account that is not yet active, use a RegisteredCard instead\u003C/b\u003E",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "CreatePaymentLinkAuthorizationRequest": {
      "type": "object",
      "required": [
        "amount",
        "countryCode",
        "expiresAt",
        "target"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/AuthorizationTargetModel"
        },
        "expiresAt": {
          "type": "string",
          "description": "The date that the link expires\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "countryCode": {
          "type": "string",
          "description": "The payer\u0027s country code"
        },
        "description": {
          "type": "string",
          "description": "Authorization description. It will be shown on the payment form of the link",
          "maxLength": 280,
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the payer or cardholder. It can be used to verify the identity of the payer and\nallow to catch a fraudulent usage of the payment account if the email address does not match the one\non file at the bank",
          "x-nullable": true
        },
        "returnUrl": {
          "type": "string",
          "description": "Website URL used for redirection after payment is completed using the payment link.",
          "maxLength": 8000,
          "pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$",
          "x-nullable": true
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL",
          "propertyId": "MUC"
        },
        "expiresAt": "2026-09-04T23:40:40.8209166Z",
        "countryCode": "DE",
        "description": "Consumption authorization for the reservation",
        "payerEmail": "0chai@hemenal5.space",
        "returnUrl": "https://example.com/return",
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        }
      }
    },
    "CreatePaymentLinkPaymentAccountRequest": {
      "type": "object",
      "required": [
        "countryCode",
        "expiresAt",
        "propertyId",
        "target"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/PaymentAccountTargetModel"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property which configuration (e.g. currency) is used to create payment account.\nFor reservation payment accounts should match the reservation property."
        },
        "expiresAt": {
          "type": "string",
          "description": "The date that the link expires\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "countryCode": {
          "type": "string",
          "description": "The payer\u0027s country code"
        },
        "description": {
          "type": "string",
          "description": "Payment account description. It will be shown on the payment form of the link",
          "maxLength": 280,
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the payer or cardholder. It can be used to verify the identity of the payer and\nallow to catch a fraudulent usage of the payment account if the email address does not match the one\non file at the bank",
          "x-nullable": true
        },
        "returnUrl": {
          "type": "string",
          "description": "Website URL used for redirection after payment is completed using the payment link.",
          "maxLength": 8000,
          "pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL"
        },
        "propertyId": "MUC",
        "expiresAt": "2026-09-04T23:40:40.9740268Z",
        "countryCode": "DE",
        "description": "Payment information for the booking",
        "payerEmail": "user@email.com",
        "returnUrl": "https://example.com/return"
      }
    },
    "CreateReservationModel": {
      "type": "object",
      "description": "With this request you can create a reservation",
      "required": [
        "adults",
        "arrival",
        "channelCode",
        "departure",
        "timeSlices"
      ],
      "properties": {
        "arrival": {
          "type": "string",
          "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "departure": {
          "type": "string",
          "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "Ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "guestComment": {
          "type": "string",
          "description": "Additional information and comments by the guest",
          "x-nullable": true
        },
        "externalCode": {
          "type": "string",
          "description": "Code in some system",
          "x-nullable": true
        },
        "channelCode": {
          "type": "string",
          "description": "Distribution channel of the reservation. When set to ChannelManager, source is required.\nFor all other channel codes, source must be omitted.",
          "enum": [
            "Direct",
            "BookingCom",
            "Ibe",
            "ChannelManager",
            "Expedia",
            "Homelike",
            "Hrs",
            "AltoVita",
            "DesVu",
            "Gimsi"
          ]
        },
        "source": {
          "type": "string",
          "description": "Required when channelCode is ChannelManager and must exactly match one of the supported sources.",
          "x-nullable": true
        },
        "primaryGuest": {
          "$ref": "#/definitions/GuestModel"
        },
        "additionalGuests": {
          "type": "array",
          "description": "Additional guests of the reservation.",
          "items": {
            "$ref": "#/definitions/GuestModel"
          },
          "x-nullable": true
        },
        "guaranteeType": {
          "type": "string",
          "description": "The guarantee that has to be applied for this reservation. It has to be the same or stronger than\nthe minimum guarantee required by the selected rate plan",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ],
          "x-nullable": true
        },
        "travelPurpose": {
          "type": "string",
          "description": "Purpose of the trip, leisure or business",
          "enum": [
            "Business",
            "Leisure"
          ],
          "x-nullable": true
        },
        "timeSlices": {
          "type": "array",
          "description": "Gross prices including services and taxes for each time slice. They will be applied to the reservation timeslices\nin the order specified from arrival to departure",
          "items": {
            "$ref": "#/definitions/CreateReservationTimeSliceModel"
          }
        },
        "services": {
          "type": "array",
          "description": "Additional services (extras, add-ons) that should be added to the reservation",
          "items": {
            "$ref": "#/definitions/BookReservationServiceModel"
          },
          "x-nullable": true
        },
        "companyId": {
          "type": "string",
          "description": "Set this if this reservation belongs to a company",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "Corporate code provided during creation. Used to find offers during amend.",
          "x-nullable": true
        },
        "prePaymentAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "commission": {
          "$ref": "#/definitions/CommissionModel"
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer",
          "x-nullable": true
        },
        "externalReferences": {
          "$ref": "#/definitions/CreateExternalReferencesModel"
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        }
      },
      "additionalProperties": false
    },
    "CreateReservationTimeSliceModel": {
      "type": "object",
      "required": [
        "ratePlanId"
      ],
      "properties": {
        "ratePlanId": {
          "type": "string",
          "description": "The rate plan id for this time slice"
        },
        "totalAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "CreateStoredPaymentMethodAuthorizationPaymentAccountRequest": {
      "type": "object",
      "required": [
        "payerReference",
        "storedPaymentMethodId",
        "target"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/PaymentAccountTargetModel"
        },
        "payerReference": {
          "type": "string",
          "description": "Reference to uniquely identify the payer",
          "minLength": 1
        },
        "storedPaymentMethodId": {
          "type": "string",
          "description": "Reference to uniquely identify the stored recurring authorization, or LATEST to use the latest stored payment method\nfor the given payerReference",
          "minLength": 1
        },
        "isVirtual": {
          "type": "boolean",
          "description": "Indicates if the payment account is a virtual credit card"
        },
        "accountDetails": {
          "$ref": "#/definitions/PaymentAccountDetailsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL"
        },
        "payerReference": "4c5b0e9d-819e-481f-bc32-85068267e641",
        "storedPaymentMethodId": "K9DTTJQD4HNG5S82",
        "isVirtual": false,
        "accountDetails": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "john@example.com"
        }
      }
    },
    "CreateTerminalAuthorizationRequest": {
      "type": "object",
      "required": [
        "amount",
        "target",
        "terminalId"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/AuthorizationTargetModel"
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "terminalId": {
          "type": "string",
          "description": "Terminal to be used for the authorization",
          "minLength": 1
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL",
          "propertyId": "MUC"
        },
        "amount": {
          "amount": 150.0,
          "currency": "EUR"
        },
        "terminalId": "V400m-324689704"
      }
    },
    "CreateTerminalPaymentAccountRequest": {
      "type": "object",
      "required": [
        "propertyId",
        "target",
        "terminalId"
      ],
      "properties": {
        "target": {
          "$ref": "#/definitions/PaymentAccountTargetModel"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property which configuration (e.g. currency) is used to create payment account.\nFor reservation payment accounts should match the reservation property."
        },
        "terminalId": {
          "type": "string",
          "description": "Terminal to be used for the payment account",
          "minLength": 1
        }
      },
      "additionalProperties": false,
      "example": {
        "target": {
          "type": "Booking",
          "id": "KYKXKLWL"
        },
        "propertyId": "MUC",
        "terminalId": "V400m-324689704"
      }
    },
    "CutoffOptionalBlockModel": {
      "type": "object",
      "required": [
        "expectedOptionalCutoffUtc"
      ],
      "properties": {
        "expectedOptionalCutoffUtc": {
          "type": "string",
          "description": "The optional cutoff timestamp the scheduler fired for. It is compared against the block\u0027s stored\noptional cutoff so a stale or replayed callback (the cutoff was moved, or the block already left\n\u0027Optional\u0027) is ignored.\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "Date": {
      "type": "object",
      "required": [
        "serviceDate"
      ],
      "properties": {
        "serviceDate": {
          "type": "string",
          "description": "The date the service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "count": {
          "type": "integer",
          "description": "The number of services to book for this date. It defaults to the service offer count when not specified.",
          "format": "int32",
          "x-nullable": true
        },
        "amount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "DesiredStayDetailsModel": {
      "type": "object",
      "required": [
        "adults",
        "arrival",
        "departure",
        "timeSlices"
      ],
      "properties": {
        "arrival": {
          "type": "string",
          "description": "Date and optional time of arrival\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "departure": {
          "type": "string",
          "description": "Date and optional time of departure. Cannot be more than 5 years after arrival.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "Ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "requote": {
          "type": "boolean",
          "description": "Whether the prices for time slices with no change to the rate plan should be re-quoted based on current prices, or if\nonly additions like change of number of adults should be calculated. If a reservation is part of a block, the time slices prices will always be re-quoted to the current price of the block. Defaults to \u0027false\u0027.",
          "x-nullable": true
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices",
          "items": {
            "$ref": "#/definitions/DesiredTimeSliceModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "arrival": "2026-09-04T17:00:00\u002B02:00",
        "departure": "2026-09-06T11:00:00\u002B02:00",
        "adults": 1,
        "childrenAges": [
          6
        ],
        "requote": false,
        "timeSlices": [
          {
            "ratePlanId": "MUC-NONREF-DBL",
            "totalGrossAmount": {
              "amount": 86.00,
              "currency": "EUR"
            }
          },
          {
            "ratePlanId": "MUC-NONREF-DBL",
            "totalGrossAmount": {
              "amount": 101.00,
              "currency": "EUR"
            }
          }
        ]
      }
    },
    "DesiredTimeSliceModel": {
      "type": "object",
      "required": [
        "ratePlanId"
      ],
      "properties": {
        "ratePlanId": {
          "type": "string",
          "description": "The rate plan id for this time slice"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "EmbeddedCompanyModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The company ID"
        },
        "code": {
          "type": "string",
          "description": "The code of the company",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name of the company",
          "x-nullable": true
        },
        "canCheckOutOnAr": {
          "type": "boolean",
          "description": "Whether or not the company can check out on AR",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedGroupModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Group booking id"
        },
        "name": {
          "type": "string",
          "description": "Name of the group",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedMarketSegmentModel": {
      "type": "object",
      "description": "The market segment identifier to help categorize your bookings for revenue management and reporting purposes.",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The market segment id"
        },
        "code": {
          "type": "string",
          "description": "The market segment code",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The market segment name",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedPropertyModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The property id"
        },
        "code": {
          "type": "string",
          "description": "The code for the property that can be shown in reports and table views",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the property",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the property",
          "readOnly": true,
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedRatePlanModel": {
      "type": "object",
      "required": [
        "id",
        "isSubjectToCityTax"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The rate plan id"
        },
        "code": {
          "type": "string",
          "description": "The code for the rate plan that can be shown in reports and table views",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the rate plan",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the rate plan",
          "x-nullable": true
        },
        "isSubjectToCityTax": {
          "type": "boolean",
          "description": "Whether the rate plan is subject to city tax or not"
        }
      },
      "additionalProperties": false
    },
    "EmbeddedServiceModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The service id"
        },
        "code": {
          "type": "string",
          "description": "The code for the service",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the service",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the service",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedUnitGroupModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The unit group id"
        },
        "code": {
          "type": "string",
          "description": "The code for the unit group that can be shown in reports and table views",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the unit group",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the unit group",
          "x-nullable": true
        },
        "type": {
          "type": "string",
          "description": "The unit group type",
          "enum": [
            "BedRoom",
            "MeetingRoom",
            "EventSpace",
            "ParkingLot",
            "Other"
          ],
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "EmbeddedUnitModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The unit id"
        },
        "name": {
          "type": "string",
          "description": "The name for the unit",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the unit",
          "x-nullable": true
        },
        "unitGroupId": {
          "type": "string",
          "description": "The unit group id",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ExternalAuthorizationReferenceModel": {
      "type": "object",
      "required": [
        "paymentTransactionId"
      ],
      "properties": {
        "paymentTransactionId": {
          "type": "string",
          "description": "Identifies the payment authorization in the Payment Transaction API",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ExternalPaymentAccountReferenceModel": {
      "type": "object",
      "required": [
        "paymentTransactionId"
      ],
      "properties": {
        "paymentTransactionId": {
          "type": "string",
          "description": "Identifies the payment authorization in the Payment Transaction API",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ExternalReferencesModel": {
      "type": "object",
      "properties": {
        "globalDistributionSystemId": {
          "type": "string",
          "description": "The ID of the global distribution system.",
          "x-nullable": true
        },
        "onlineTravelAgencyId": {
          "type": "string",
          "description": "The ID of the online travel agency.",
          "x-nullable": true
        },
        "onlineBookingToolId": {
          "type": "string",
          "description": "The ID of the online booking tool.",
          "x-nullable": true
        },
        "channelManagerId": {
          "type": "string",
          "description": "The ID of the channel manager.",
          "x-nullable": true
        },
        "centralReservationSystemId": {
          "type": "string",
          "description": "The Central Reservation System Identifier",
          "x-nullable": true
        },
        "legacyId": {
          "type": "string",
          "description": "The ID of the legacy PMS system.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "GroupBlockModel": {
      "type": "object",
      "required": [
        "blockedUnits",
        "created",
        "from",
        "grossDailyRate",
        "id",
        "modified",
        "pickedReservations",
        "property",
        "ratePlan",
        "status",
        "to",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Block id"
        },
        "status": {
          "type": "string",
          "description": "Status of the block",
          "enum": [
            "Tentative",
            "Definite",
            "Canceled",
            "Optional"
          ]
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "grossDailyRate": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "from": {
          "type": "string",
          "description": "Start date and time from which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which the inventory will be blocked\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "blockedUnits": {
          "type": "integer",
          "description": "Number of units blocked",
          "format": "int32"
        },
        "pickedReservations": {
          "type": "integer",
          "description": "Number of reservations already picked from this block",
          "format": "int32"
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "GroupCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id of newly created group booking"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "XPGMSXGF"
      }
    },
    "GroupItemModel": {
      "type": "object",
      "required": [
        "created",
        "id",
        "modified",
        "name",
        "propertyIds"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Group id"
        },
        "from": {
          "type": "string",
          "description": "Start date and time of the earliest block for this group\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "to": {
          "type": "string",
          "description": "End date and time of the latest block for this group\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "Name of the group",
          "minLength": 1
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comment by the booker",
          "x-nullable": true
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the booking has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the booking has an active payment account without having to retrieve the payment account details."
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "blocks": {
          "type": "array",
          "description": "Blocks within this group",
          "items": {
            "$ref": "#/definitions/GroupBlockModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this group",
          "items": {
            "$ref": "#/definitions/ActionModel[GroupAction,NotAllowedGroupActionReason]"
          },
          "x-nullable": true
        },
        "propertyIds": {
          "type": "array",
          "description": "The list of property ids this group belongs to",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "GroupListModel": {
      "type": "object",
      "required": [
        "count",
        "groups"
      ],
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GroupItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "groups": [
          {
            "id": "XPGMSXGF",
            "name": "apaleo Summer Festival 2027",
            "booker": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 5",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              }
            },
            "paymentAccount": {
              "accountNumber": "1111",
              "accountHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "isVirtual": false,
              "isActive": false
            },
            "hasActivePaymentAccount": true,
            "created": "0001-01-01T00:00:00Z",
            "modified": "0001-01-01T00:00:00Z",
            "blocks": [
              {
                "id": "MUC-JAIULS",
                "status": "Definite",
                "property": {
                  "id": "MUC",
                  "code": "MUC",
                  "name": "Demo Hotel Munich",
                  "description": "This is the demo hotel Munich"
                },
                "ratePlan": {
                  "id": "MUC-NONREF_DBL",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "Non Refundable",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "type": "BedRoom"
                },
                "marketSegment": {
                  "id": "CORP",
                  "code": "CORP",
                  "name": "Corporate Groups"
                },
                "grossDailyRate": {
                  "amount": 190.0,
                  "currency": "EUR"
                },
                "from": "2026-09-08T14:43:10.0179467\u002B02:00",
                "to": "2026-09-14T14:43:10.0179467\u002B02:00",
                "blockedUnits": 8,
                "pickedReservations": 3,
                "created": "2026-09-02T14:43:10.0179467\u002B02:00",
                "modified": "2026-09-02T14:43:10.0179467\u002B02:00"
              }
            ],
            "propertyIds": [
              "MUC"
            ]
          }
        ],
        "count": 1
      }
    },
    "GroupModel": {
      "type": "object",
      "required": [
        "created",
        "id",
        "modified",
        "name",
        "propertyIds"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Group id"
        },
        "name": {
          "type": "string",
          "description": "Name of the group",
          "minLength": 1
        },
        "from": {
          "type": "string",
          "description": "Start date and time of the earliest block for this group\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "to": {
          "type": "string",
          "description": "End date and time of the latest block for this group\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "bookerComment": {
          "type": "string",
          "description": "Additional information and comment by the booker",
          "x-nullable": true
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the booking has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the booking has an active payment account without having to retrieve the payment account details."
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "blocks": {
          "type": "array",
          "description": "Blocks within this group",
          "items": {
            "$ref": "#/definitions/GroupBlockModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this group",
          "items": {
            "$ref": "#/definitions/ActionModel[GroupAction,NotAllowedGroupActionReason]"
          },
          "x-nullable": true
        },
        "propertyIds": {
          "type": "array",
          "description": "The list of property ids this group belongs to",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "XPGMSXGF",
        "name": "apaleo Summer Festival 2027",
        "from": "2026-09-07T14:43:10.0179467\u002B02:00",
        "to": "2026-09-14T14:43:10.0179467\u002B02:00",
        "booker": {
          "title": "Mr",
          "gender": "Male",
          "firstName": "Jon",
          "middleInitial": "D",
          "lastName": "Doe",
          "email": "john.d@doe.com",
          "phone": "\u002B4989123343",
          "address": {
            "addressLine1": "My Street 5",
            "postalCode": "12453",
            "city": "MyCity",
            "countryCode": "GB"
          }
        },
        "paymentAccount": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "isVirtual": false,
          "isActive": false
        },
        "hasActivePaymentAccount": false,
        "created": "0001-01-01T00:00:00Z",
        "modified": "0001-01-01T00:00:00Z",
        "blocks": [
          {
            "id": "MUC-HSGTDG",
            "status": "Tentative",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Single",
              "description": "Single",
              "type": "BedRoom"
            },
            "grossDailyRate": {
              "amount": 160.0,
              "currency": "EUR"
            },
            "from": "2026-09-07T14:43:10.0179467\u002B02:00",
            "to": "2026-09-12T14:43:10.0179467\u002B02:00",
            "blockedUnits": 10,
            "pickedReservations": 0,
            "created": "2026-09-02T14:43:10.0179467\u002B02:00",
            "modified": "2026-09-02T14:43:10.0179467\u002B02:00"
          },
          {
            "id": "MUC-JAIULS",
            "status": "Definite",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_DBL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "marketSegment": {
              "id": "CORP",
              "code": "CORP",
              "name": "Corporate Groups"
            },
            "grossDailyRate": {
              "amount": 190.0,
              "currency": "EUR"
            },
            "from": "2026-09-08T14:43:10.0179467\u002B02:00",
            "to": "2026-09-14T14:43:10.0179467\u002B02:00",
            "blockedUnits": 8,
            "pickedReservations": 3,
            "created": "2026-09-02T14:43:10.0179467\u002B02:00",
            "modified": "2026-09-02T14:43:10.0179467\u002B02:00"
          }
        ],
        "propertyIds": [
          "MUC"
        ]
      }
    },
    "GuestModel": {
      "type": "object",
      "required": [
        "lastName"
      ],
      "properties": {
        "title": {
          "type": "string",
          "description": "Title of the guest",
          "enum": [
            "Mr",
            "Ms",
            "Dr",
            "Prof",
            "Mrs",
            "Other"
          ],
          "x-nullable": true
        },
        "gender": {
          "type": "string",
          "description": "Gender of the guest\nAllowed values for this field depend on the country in which the property is located.\nUse /booking/v1/types/Gender/allowed-values to check what values are allowed.",
          "enum": [
            "Female",
            "Male",
            "Other",
            "Unknown"
          ],
          "x-nullable": true
        },
        "firstName": {
          "type": "string",
          "description": "First name of the guest",
          "x-nullable": true
        },
        "middleInitial": {
          "type": "string",
          "description": "Middle initial of the guest",
          "x-nullable": true
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the guest",
          "minLength": 1
        },
        "secondLastName": {
          "type": "string",
          "description": "Second last name of the guest",
          "x-nullable": true
        },
        "email": {
          "type": "string",
          "description": "Email address of the guest",
          "x-nullable": true
        },
        "phone": {
          "type": "string",
          "description": "Phone number of the guest",
          "x-nullable": true
        },
        "address": {
          "$ref": "#/definitions/PersonAddressModel"
        },
        "nationalityCountryCode": {
          "type": "string",
          "description": "The guest\u0027s nationality, in ISO 3166-1 alpha-2 code",
          "x-nullable": true
        },
        "identificationNumber": {
          "type": "string",
          "description": "The guest\u0027s identification number for the given identificationType.",
          "x-nullable": true
        },
        "identificationAdditionalNumber": {
          "type": "string",
          "description": "The guest\u0027s additional identification number for the given identificationType.",
          "x-nullable": true
        },
        "identificationIssueDate": {
          "type": "string",
          "description": "The issue date of the guest\u0027s identification document.",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "identificationExpiryDate": {
          "type": "string",
          "description": "The expiry date of the guest\u0027s identification document.",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "identificationIssuePlace": {
          "type": "string",
          "description": "The issue place of the guest\u0027s identification document.",
          "x-nullable": true
        },
        "identificationType": {
          "type": "string",
          "description": "The type of the identificationNumber\nAllowed values for this field depend on the country in which the property is located.\nUse /booking/v1/types/IdentificationType/allowed-values to check what values are allowed.",
          "enum": [
            "SocialInsuranceNumber",
            "PassportNumber",
            "IdNumber",
            "DriverLicenseNumber",
            "VisaNumber",
            "ForeignerIdentityNumber",
            "TaxIdentificationNumber",
            "Other"
          ],
          "x-nullable": true
        },
        "personalTaxId": {
          "type": "string",
          "description": "The personal tax id of the guest",
          "x-nullable": true
        },
        "company": {
          "$ref": "#/definitions/PersonCompanyModel"
        },
        "preferredLanguage": {
          "type": "string",
          "description": "ISO 639-1 language code (the language, not the country code):\ne.g. vi not vn, ja not jp, cs not cz, zh not cn.",
          "x-nullable": true
        },
        "birthDate": {
          "type": "string",
          "description": "Guest\u0027s birthdate",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "birthPlace": {
          "type": "string",
          "description": "Guest\u0027s place of birth",
          "x-nullable": true
        },
        "birthFirstName": {
          "type": "string",
          "description": "Guest\u0027s first name right after birth",
          "x-nullable": true
        },
        "birthLastName": {
          "type": "string",
          "description": "Guest\u0027s last name right after birth",
          "x-nullable": true
        },
        "motherFirstName": {
          "type": "string",
          "description": "Guest\u0027s mother\u0027s first name",
          "x-nullable": true
        },
        "motherLastName": {
          "type": "string",
          "description": "Guest\u0027s mother\u0027s last name",
          "x-nullable": true
        },
        "borderCrossingPlace": {
          "type": "string",
          "description": "The place through which the guest crossed the border",
          "x-nullable": true
        },
        "borderCrossingDate": {
          "type": "string",
          "description": "Date on which the guest crossed the border",
          "format": "date",
          "example": "2020-10-10",
          "x-nullable": true
        },
        "nextDestination": {
          "type": "string",
          "description": "The guest\u0027s next destination address",
          "x-nullable": true
        },
        "relationshipToPrimaryGuest": {
          "type": "string",
          "description": "The relationship of the guest to the primary guest.",
          "enum": [
            "Grandparent",
            "Grandchild",
            "GreatGrandparent",
            "GreatGrandchild",
            "Parent",
            "Child",
            "Sibling",
            "ParentInLaw",
            "ChildInLaw",
            "SiblingInLaw",
            "Spouse",
            "UncleOrAunt",
            "NephewOrNiece",
            "Guardian",
            "Other"
          ],
          "x-nullable": true
        },
        "vehicleRegistration": {
          "$ref": "#/definitions/VehicleRegistrationModel"
        }
      },
      "additionalProperties": false
    },
    "MessageItemCollection": {
      "type": "object",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "MonetaryValueModel": {
      "type": "object",
      "required": [
        "amount",
        "currency"
      ],
      "properties": {
        "amount": {
          "type": "number",
          "format": "double"
        },
        "currency": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "OfferCancellationFeeModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "dueDateTime",
        "fee",
        "name"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of the cancellation policy applied"
        },
        "name": {
          "type": "string",
          "description": "The name of the cancellation policy applied",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description of the cancellation policy applied",
          "minLength": 1
        },
        "dueDateTime": {
          "type": "string",
          "description": "The date and time the cancellation fee will be due. After that time this fee will\nbe charged in case of cancellation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "fee": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "OfferCityTaxItemModel": {
      "type": "object",
      "required": [
        "amount",
        "serviceDate"
      ],
      "properties": {
        "serviceDate": {
          "type": "string",
          "description": "The date for this city tax",
          "format": "date",
          "example": "2020-10-10"
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        }
      },
      "additionalProperties": false
    },
    "OfferCityTaxModel": {
      "type": "object",
      "required": [
        "code",
        "dates",
        "id",
        "name",
        "totalGrossAmount"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the city tax"
        },
        "code": {
          "type": "string",
          "description": "The code of the city tax"
        },
        "name": {
          "type": "string",
          "description": "The name for the city tax",
          "minLength": 1
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "dates": {
          "type": "array",
          "description": "Split per day for the city tax",
          "items": {
            "$ref": "#/definitions/OfferCityTaxItemModel"
          }
        }
      },
      "additionalProperties": false
    },
    "OfferFeeModel": {
      "type": "object",
      "required": [
        "code",
        "id",
        "name",
        "totalAmount"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The fee id"
        },
        "code": {
          "type": "string",
          "description": "The code for the fee"
        },
        "name": {
          "type": "string",
          "description": "The name for the fee",
          "minLength": 1
        },
        "totalAmount": {
          "$ref": "#/definitions/AmountModel"
        }
      },
      "additionalProperties": false
    },
    "OfferModel": {
      "type": "object",
      "required": [
        "arrival",
        "availableUnits",
        "cancellationFee",
        "departure",
        "isCorporate",
        "minGuaranteeType",
        "noShowFee",
        "prePaymentAmount",
        "ratePlan",
        "taxDetails",
        "timeSlices",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "arrival": {
          "type": "string",
          "description": "The earliest arrival date and time for this offer\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "departure": {
          "type": "string",
          "description": "The latest departure date and time for this offer\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "unitGroup": {
          "$ref": "#/definitions/OfferUnitGroupModel"
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee type for this offer",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "availableUnits": {
          "type": "integer",
          "description": "The number of available units for that offer",
          "format": "int32"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "cancellationFee": {
          "$ref": "#/definitions/OfferCancellationFeeModel"
        },
        "noShowFee": {
          "$ref": "#/definitions/OfferNoShowFeeModel"
        },
        "timeSlices": {
          "type": "array",
          "description": "The breakdown for each time slice for this offer",
          "items": {
            "$ref": "#/definitions/OfferTimeSliceModel"
          }
        },
        "services": {
          "type": "array",
          "description": "The list of the mandatory services for this offer. Such services will be automatically booked when booking this offer",
          "items": {
            "$ref": "#/definitions/ServiceOfferModel"
          },
          "x-nullable": true
        },
        "fees": {
          "type": "array",
          "description": "The details of the fees that will be added on top of the Apaleo.Api.Modules.Booking.Models.Offer.StayOffer.OfferModel.TotalGrossAmount when creating the booking",
          "items": {
            "$ref": "#/definitions/OfferFeeModel"
          },
          "x-nullable": true
        },
        "taxDetails": {
          "type": "array",
          "description": "Tax breakdown, displaying net and tax amount for each VAT type",
          "items": {
            "$ref": "#/definitions/TaxDetailModel"
          }
        },
        "validationMessages": {
          "type": "array",
          "description": "Validation rules that were applied to the offer and show the reason why the offer is not bookable",
          "items": {
            "$ref": "#/definitions/OfferValidationMessageModel"
          },
          "x-nullable": true
        },
        "companyId": {
          "type": "string",
          "description": "ID of the company the offer is created for",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "The corporate rate code the offer is created for",
          "x-nullable": true
        },
        "isCorporate": {
          "type": "boolean",
          "description": "Whether the offer is for a corporate rate plan"
        },
        "prePaymentAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "cityTaxes": {
          "type": "array",
          "description": "Details of city taxes for this offer, if any",
          "items": {
            "$ref": "#/definitions/OfferCityTaxModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "OfferNoShowFeeModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "name"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of the no-show policy applied"
        },
        "name": {
          "type": "string",
          "description": "The name of the no-show policy applied",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description of the no-show policy applied",
          "minLength": 1
        },
        "fee": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "OfferServiceModel": {
      "type": "object",
      "required": [
        "amount",
        "count",
        "pricingMode",
        "service",
        "serviceDate"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/EmbeddedServiceModel"
        },
        "serviceDate": {
          "type": "string",
          "description": "The date this service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "count": {
          "type": "integer",
          "description": "The default count of offered services. For services whose pricing unit is \u0027Person\u0027 it will be based on the adults and children specified, otherwise 1.",
          "format": "int32"
        },
        "availableCount": {
          "type": "integer",
          "description": "If set - the number of services available (only for the limited service).\nIf not set - the service is unlimited.",
          "format": "int32",
          "x-nullable": true
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        },
        "pricingMode": {
          "type": "string",
          "description": "Whether the service price is included in or added to the base rate",
          "enum": [
            "Included",
            "Additional"
          ]
        }
      },
      "additionalProperties": false
    },
    "OfferTimeSliceModel": {
      "type": "object",
      "required": [
        "availableUnits",
        "baseAmount",
        "from",
        "to",
        "totalGrossAmount"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The start date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "The end date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "availableUnits": {
          "type": "integer",
          "description": "The number of available units for that time slice",
          "format": "int32"
        },
        "baseAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "includedServices": {
          "type": "array",
          "description": "The breakdown for services included in the offer",
          "items": {
            "$ref": "#/definitions/OfferServiceModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "OfferUnitGroupModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "id",
        "maxPersons",
        "name",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The unit group id"
        },
        "code": {
          "type": "string",
          "description": "The code for the unit group that can be shown in reports and table views"
        },
        "name": {
          "type": "string",
          "description": "The name for the unit group",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description for the unit group",
          "minLength": 1
        },
        "maxPersons": {
          "type": "integer",
          "description": "Maximum number of persons for the unit group",
          "format": "int32"
        },
        "rank": {
          "type": "integer",
          "description": "The unit group rank",
          "format": "int32",
          "x-nullable": true
        },
        "type": {
          "type": "string",
          "description": "The unit group type",
          "enum": [
            "BedRoom",
            "MeetingRoom",
            "EventSpace",
            "ParkingLot",
            "Other"
          ]
        }
      },
      "additionalProperties": false
    },
    "OfferValidationMessageModel": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The message Code",
          "enum": [
            "UnitGroupFullyBooked",
            "UnitGroupCapacityExceeded",
            "RatePlanRestrictionsViolated",
            "RatePlanSurchargesNotSet",
            "RateRestrictionsViolated",
            "RatePlanChannelNotSet",
            "RatesNotSet",
            "BlockFullyBooked",
            "IncludedServicesAmountExceededRateAmount",
            "ServiceFullyBooked",
            "RateDoesNotSatifyHurdles"
          ]
        },
        "message": {
          "type": "string",
          "description": "The message description",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "Operation": {
      "type": "object",
      "properties": {
        "value": {
          "x-nullable": true
        },
        "path": {
          "type": "string",
          "x-nullable": true
        },
        "op": {
          "type": "string",
          "x-nullable": true
        },
        "from": {
          "type": "string",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PayableAmountModel": {
      "type": "object",
      "required": [
        "guest"
      ],
      "properties": {
        "guest": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "PaymentAccountCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Created payment account id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "UBMFXUFH"
      }
    },
    "PaymentAccountDetailsModel": {
      "type": "object",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "The last 4 characters of the card or account number",
          "maxLength": 4,
          "x-nullable": true
        },
        "accountHolder": {
          "type": "string",
          "description": "The account or card holder",
          "x-nullable": true
        },
        "expiryMonth": {
          "type": "string",
          "description": "The credit card\u0027s expiration month",
          "x-nullable": true
        },
        "expiryYear": {
          "type": "string",
          "description": "The credit card\u0027s expiration year",
          "x-nullable": true
        },
        "paymentMethod": {
          "type": "string",
          "description": "The payment method (e.g. visa)",
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the shopper / customer",
          "format": "email",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PaymentAccountModel": {
      "type": "object",
      "description": "DEPRECATED: PaymentAccountModel is deprecated, use \u0060/booking/v1/payment-accounts\u0060 instead. This model will be removed on May 15, 2026.",
      "required": [
        "isActive"
      ],
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "The account number (e.g. masked credit card number or last 4 digits)",
          "x-nullable": true
        },
        "accountHolder": {
          "type": "string",
          "description": "The account holder (e.g. card holder)",
          "x-nullable": true
        },
        "expiryMonth": {
          "type": "string",
          "description": "The credit card\u0027s expiration month",
          "x-nullable": true
        },
        "expiryYear": {
          "type": "string",
          "description": "The credit card\u0027s expiration year",
          "x-nullable": true
        },
        "paymentMethod": {
          "type": "string",
          "description": "The payment method (e.g. Visa)",
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the shopper / customer",
          "x-nullable": true
        },
        "payerReference": {
          "type": "string",
          "description": "The payer reference. It is used to make recurring captures and its usage is allowed only in the scope of the booking.\nFor the reason above this is a write-only field.",
          "x-nullable": true
        },
        "isVirtual": {
          "type": "boolean",
          "description": "Indicates if the payment account is a virtual credit card. If not specified it defaults to \u0027false\u0027"
        },
        "isActive": {
          "type": "boolean",
          "description": "Indicates if the payment account can be used for capturing payments. A payment account is active, when it has a valid payer reference set"
        },
        "inactiveReason": {
          "type": "string",
          "description": "A reason why account is inactive",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PaymentAccountPaymentLinkModel": {
      "type": "object",
      "properties": {
        "expiresAt": {
          "type": "string",
          "description": "The date and time the payment link expires\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "url": {
          "type": "string",
          "description": "The URL to the payment link",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PaymentAccountTargetModel": {
      "type": "object",
      "required": [
        "id",
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "Payment account target type",
          "enum": [
            "Booking",
            "Reservation"
          ]
        },
        "id": {
          "type": "string",
          "description": "Booking or reservation id"
        }
      },
      "additionalProperties": false
    },
    "PaymentAccountV2ListModel": {
      "type": "object",
      "required": [
        "count",
        "paymentAccounts"
      ],
      "properties": {
        "paymentAccounts": {
          "type": "array",
          "description": "List of payment accounts",
          "items": {
            "$ref": "#/definitions/PaymentAccountV2Model"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "paymentAccounts": [
          {
            "id": "QWERTYUI",
            "target": {
              "type": "Booking",
              "id": "ASDFGHJK"
            },
            "created": "2026-09-02T22:40:40.9851009Z",
            "updated": "2026-09-02T23:40:40.985101Z",
            "externalReference": {
              "paymentTransactionId": "VT6G6BFUR6XE5MHZARAX2ODK7Y"
            },
            "status": "Pending",
            "payerInteraction": "PaymentLink",
            "paymentLink": {
              "expiresAt": "2026-09-03T22:40:40.9851011Z",
              "url": "https://test.adyen.link/PL0E1BC57CAEE63F2F0"
            },
            "accountDetails": {
              "accountNumber": "1111",
              "accountHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com"
            },
            "isVirtual": false,
            "actions": [
              {
                "action": "Cancel",
                "isAllowed": false,
                "reasons": [
                  {
                    "code": "OnlySuccessfulPaymentAccountCanBeCanceled",
                    "message": "Only a successful payment account can be canceled."
                  }
                ]
              }
            ]
          }
        ],
        "count": 1
      }
    },
    "PaymentAccountV2Model": {
      "type": "object",
      "required": [
        "created",
        "id",
        "payerInteraction",
        "status",
        "target",
        "updated"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Payment account id"
        },
        "target": {
          "$ref": "#/definitions/PaymentAccountTargetModel"
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "updated": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "externalReference": {
          "$ref": "#/definitions/ExternalPaymentAccountReferenceModel"
        },
        "status": {
          "type": "string",
          "description": "Status of the payment account",
          "enum": [
            "Pending",
            "Success",
            "Failure",
            "Canceled",
            "Expired"
          ]
        },
        "failureReason": {
          "type": "string",
          "description": "Human-readable failure reason",
          "x-nullable": true
        },
        "payerInteraction": {
          "type": "string",
          "description": "Payer interaction of the payment account",
          "enum": [
            "PciToken",
            "Terminal",
            "Authorization",
            "PaymentLink"
          ]
        },
        "paymentLink": {
          "$ref": "#/definitions/PaymentAccountPaymentLinkModel"
        },
        "accountDetails": {
          "$ref": "#/definitions/PaymentAccountDetailsModel"
        },
        "isVirtual": {
          "type": "boolean",
          "description": "Indicates if the payment account is a virtual credit card. If not specified it defaults to \u0027false\u0027"
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for payment account",
          "items": {
            "$ref": "#/definitions/ActionModel[PaymentAccountAction,NotAllowedPaymentAccountActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "QWERTYUI",
        "target": {
          "type": "Booking",
          "id": "ASDFGHJK"
        },
        "created": "2026-09-02T22:40:40.9803537Z",
        "updated": "2026-09-02T23:40:40.9803552Z",
        "externalReference": {
          "paymentTransactionId": "VT6G6BFUR6XE5MHZARAX2ODK7Y"
        },
        "status": "Pending",
        "payerInteraction": "PaymentLink",
        "paymentLink": {
          "expiresAt": "2026-09-03T22:40:40.980356Z",
          "url": "https://test.adyen.link/PL0E1BC57CAEE63F2F0"
        },
        "accountDetails": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com"
        },
        "isVirtual": false,
        "actions": [
          {
            "action": "Cancel",
            "isAllowed": false,
            "reasons": [
              {
                "code": "OnlySuccessfulPaymentAccountCanBeCanceled",
                "message": "Only a successful payment account can be canceled."
              }
            ]
          }
        ]
      }
    },
    "PerOccupancyPriceItemModel": {
      "type": "object",
      "required": [
        "adults",
        "price"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "price": {
          "$ref": "#/definitions/PriceModel"
        }
      },
      "additionalProperties": false
    },
    "PeriodModel": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer",
          "description": "The number of hours within the period",
          "format": "int64",
          "x-nullable": true
        },
        "days": {
          "type": "integer",
          "description": "The number of days within the period",
          "format": "int32",
          "x-nullable": true
        },
        "months": {
          "type": "integer",
          "description": "The number of months within the period",
          "format": "int32",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PersonAddressModel": {
      "type": "object",
      "properties": {
        "addressLine1": {
          "type": "string",
          "x-nullable": true
        },
        "addressLine2": {
          "type": "string",
          "x-nullable": true
        },
        "postalCode": {
          "type": "string",
          "x-nullable": true
        },
        "city": {
          "type": "string",
          "x-nullable": true
        },
        "regionCode": {
          "type": "string",
          "description": "ISO 3166-2 region code including the country prefix (e.g. US-CA, DE-BY).",
          "x-nullable": true
        },
        "countryCode": {
          "type": "string",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PersonCompanyModel": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the company",
          "x-nullable": true
        },
        "taxId": {
          "type": "string",
          "description": "Tax or Vat ID of the company",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PickUpReservationModel": {
      "type": "object",
      "description": "With this request you can pick up a reservation",
      "required": [
        "adults",
        "arrival",
        "blockId",
        "departure"
      ],
      "properties": {
        "blockId": {
          "type": "string",
          "description": "ID of the block"
        },
        "services": {
          "type": "array",
          "description": "Additional services (extras, add-ons) that should be added to the reservation",
          "items": {
            "$ref": "#/definitions/BookReservationServiceModel"
          },
          "x-nullable": true
        },
        "arrival": {
          "type": "string",
          "description": "Date of arrival and the optional time with UTC offset\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "departure": {
          "type": "string",
          "description": "Date of departure and the optional time with UTC offset\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "The ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "guestComment": {
          "type": "string",
          "description": "Additional information and comment by the guest",
          "x-nullable": true
        },
        "primaryGuest": {
          "$ref": "#/definitions/GuestModel"
        },
        "additionalGuests": {
          "type": "array",
          "description": "Additional guests of the reservation.",
          "items": {
            "$ref": "#/definitions/GuestModel"
          },
          "x-nullable": true
        },
        "travelPurpose": {
          "type": "string",
          "description": "The purpose of the trip, leisure or business",
          "enum": [
            "Business",
            "Leisure"
          ],
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "PickUpReservationsModel": {
      "type": "object",
      "description": "With this request you can pick up reservations to an existing group booking",
      "required": [
        "reservations"
      ],
      "properties": {
        "reservations": {
          "type": "array",
          "description": "List of reservations to pick up to the existing group booking",
          "items": {
            "$ref": "#/definitions/PickUpReservationModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "reservations": [
          {
            "blockId": "MUC-QJNXJR",
            "arrival": "2026-09-04",
            "departure": "2026-09-06",
            "adults": 1,
            "comment": "I need a wake up service",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "company": {
                "name": "Company GmbH",
                "taxId": "1442"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            }
          },
          {
            "blockId": "MUC-WKMCKT",
            "arrival": "2026-09-05",
            "departure": "2026-09-07",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Eric",
              "middleInitial": "E",
              "lastName": "Steinmetz",
              "email": "eric.e@steinmetz.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 1",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            }
          }
        ]
      }
    },
    "PriceModel": {
      "type": "object",
      "required": [
        "afterTax",
        "beforeTax",
        "currency",
        "grossAmount",
        "taxes"
      ],
      "properties": {
        "grossAmount": {
          "type": "number",
          "description": "Price including all included services and VAT - \u003Cb\u003EDEPRECATED: This field will be removed soon, use BeforeTax \u002B Taxes.Tax instead\u003C/b\u003E",
          "format": "double"
        },
        "beforeTax": {
          "type": "number",
          "description": "Price including all included services without VAT or any other taxes like city tax",
          "format": "double"
        },
        "afterTax": {
          "type": "number",
          "description": "Price including all included services, VAT and any other taxes like city tax",
          "format": "double"
        },
        "taxes": {
          "$ref": "#/definitions/TaxesModel"
        },
        "currency": {
          "type": "string",
          "description": "The currency for all prices and tax details"
        }
      },
      "additionalProperties": false,
      "example": {
        "grossAmount": 100.0,
        "beforeTax": 91.57,
        "afterTax": 101.71,
        "taxes": {
          "tax": 8.43,
          "cityTax": 1.71
        },
        "currency": "USD"
      }
    },
    "PropertyValueModel": {
      "type": "object",
      "required": [
        "balance",
        "property",
        "totalGrossAmount"
      ],
      "properties": {
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "balance": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "RateRestrictionsModel": {
      "type": "object",
      "required": [
        "closed",
        "closedOnArrival",
        "closedOnDeparture"
      ],
      "properties": {
        "minLengthOfStay": {
          "type": "integer",
          "description": "The minimum length of stay in order to book the rate. If at least this number\nof time slices are covered by the stay duration the rate will be offered.",
          "format": "int32",
          "maximum": 2147483647,
          "minimum": 1,
          "x-nullable": true
        },
        "maxLengthOfStay": {
          "type": "integer",
          "description": "The maximum length of stay in order to book the rate. If not more than this number\nof time slices are covered by the stay duration the rate will be offered.",
          "format": "int32",
          "maximum": 2147483647,
          "minimum": 1,
          "x-nullable": true
        },
        "closed": {
          "type": "boolean",
          "description": "Whether the rate can be booked for a stay-through reservation"
        },
        "closedOnArrival": {
          "type": "boolean",
          "description": "Whether the rate can be booked on the reservation\u0027s arrival date"
        },
        "closedOnDeparture": {
          "type": "boolean",
          "description": "Whether the rate can be booked on the reservation\u0027s departure date"
        }
      },
      "additionalProperties": false
    },
    "RegisteredCardModel": {
      "type": "object",
      "description": "Use registered card when you need to show details about a card you intend to add to\nthe booking/reservation in the future as a real payment account.\nIt is NOT a replacement of the deprecated PaymentAccount field.",
      "properties": {
        "cardNumber": {
          "type": "string",
          "description": "The last 4 characters of the card number",
          "maxLength": 4,
          "x-nullable": true
        },
        "cardHolder": {
          "type": "string",
          "description": "The account holder (e.g. cardholder)",
          "x-nullable": true
        },
        "expiryMonth": {
          "type": "string",
          "description": "The credit card\u0027s expiration month",
          "x-nullable": true
        },
        "expiryYear": {
          "type": "string",
          "description": "The credit card\u0027s expiration year",
          "x-nullable": true
        },
        "paymentMethod": {
          "type": "string",
          "description": "The payment method (e.g. Visa)",
          "x-nullable": true
        },
        "payerEmail": {
          "type": "string",
          "description": "The email address of the shopper / customer",
          "x-nullable": true
        },
        "note": {
          "type": "string",
          "description": "Optional information, e.g. about card activation or failure to do so",
          "x-nullable": true
        },
        "isVirtual": {
          "type": "boolean",
          "description": "Indicates if the payment account is a virtual credit card."
        }
      },
      "additionalProperties": false
    },
    "ReplaceBlockModel": {
      "type": "object",
      "required": [
        "from",
        "grossDailyRate",
        "timeSlices",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Start date and time from which the inventory will be blocked\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "to": {
          "type": "string",
          "description": "End date and time until which the inventory will be blocked. Cannot be more than 5 years after the start date.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "grossDailyRate": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices",
          "items": {
            "$ref": "#/definitions/CreateBlockTimeSliceModel"
          }
        },
        "marketSegmentId": {
          "type": "string",
          "description": "Market segment ID for this block",
          "x-nullable": true
        },
        "status": {
          "type": "string",
          "description": "The status to transition the block to as part of this edit. When omitted, the block keeps its current\nstatus and the amend is a plain update. Requires the optional block status feature to be enabled\n(unless the block is already in status Optional). \u0027Canceled\u0027 is not supported here; use the cancel action.\nChanging the status to Optional requires OptionalCutoff, IsOptionalDeductingInventory and OptionalCutoffBehavior.",
          "enum": [
            "Tentative",
            "Definite",
            "Canceled",
            "Optional"
          ],
          "x-nullable": true
        },
        "optionalCutoff": {
          "type": "string",
          "description": "The date and time by which a decision should be made on this optional block.\nRequires the optional block status feature to be enabled.\nRequired when changing the block\u0027s status to Optional.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "x-nullable": true
        },
        "isOptionalDeductingInventory": {
          "type": "boolean",
          "description": "Whether this optional block reduces availability like a definite block.\nRequires the optional block status feature to be enabled (unless the block is already in status Optional).\nRequired when changing the block\u0027s status to Optional.",
          "x-nullable": true
        },
        "optionalCutoffBehavior": {
          "type": "string",
          "description": "What happens when the optional cutoff date is reached.\nRequires the optional block status feature to be enabled (unless the block is already in status Optional).\nRequired when changing the block\u0027s status to Optional.",
          "enum": [
            "DoNothing",
            "AutoRelease"
          ],
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "from": "2026-09-07",
        "to": "2026-09-10",
        "grossDailyRate": {
          "amount": 160.0,
          "currency": "EUR"
        },
        "timeSlices": [
          {
            "blockedUnits": 3
          },
          {
            "blockedUnits": 0
          },
          {
            "blockedUnits": 7
          }
        ],
        "marketSegmentId": "BUSR"
      }
    },
    "ReservationAssignedUnitModel": {
      "type": "object",
      "required": [
        "timeRanges",
        "unit"
      ],
      "properties": {
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        },
        "timeRanges": {
          "type": "array",
          "description": "The time ranges for which the unit is assigned to the reservation",
          "items": {
            "$ref": "#/definitions/ReservationAssignedUnitTimeRangeModel"
          }
        }
      },
      "additionalProperties": false
    },
    "ReservationAssignedUnitTimeRangeModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The start date and time of the period for which the unit is assigned to the reservation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "The end date and time of the period for which the unit is assigned to the reservation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "ReservationCancellationFeeModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "dueDateTime",
        "fee",
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the cancellation policy applied"
        },
        "code": {
          "type": "string",
          "description": "The code of the cancellation policy applied"
        },
        "name": {
          "type": "string",
          "description": "The name of the cancellation policy applied",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description of the cancellation policy applied",
          "minLength": 1
        },
        "dueDateTime": {
          "type": "string",
          "description": "The date and time the cancellation fee will be due. After that time this fee will\nbe charged in case of cancellation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "fee": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "ReservationCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id of the reservation"
        }
      },
      "additionalProperties": false
    },
    "ReservationItemModel": {
      "type": "object",
      "required": [
        "adults",
        "arrival",
        "balance",
        "bookingId",
        "cancellationFee",
        "channelCode",
        "created",
        "departure",
        "guaranteeType",
        "hasCityTax",
        "id",
        "isOpenForCharges",
        "modified",
        "noShowFee",
        "property",
        "ratePlan",
        "status",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Reservation id"
        },
        "bookingId": {
          "type": "string",
          "description": "Booking id"
        },
        "blockId": {
          "type": "string",
          "description": "Block id",
          "x-nullable": true
        },
        "groupName": {
          "type": "string",
          "description": "Name of the group",
          "x-nullable": true
        },
        "status": {
          "type": "string",
          "description": "Status of the reservation",
          "enum": [
            "Confirmed",
            "InHouse",
            "CheckedOut",
            "Canceled",
            "NoShow"
          ]
        },
        "checkInTime": {
          "type": "string",
          "description": "Time of check-in\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "checkOutTime": {
          "type": "string",
          "description": "Time of check-out\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "cancellationTime": {
          "type": "string",
          "description": "Time of cancellation, if the reservation was canceled\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "noShowTime": {
          "type": "string",
          "description": "Time of setting no-show reservation status\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "arrival": {
          "type": "string",
          "description": "Date of arrival\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "departure": {
          "type": "string",
          "description": "Date of departure\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "The ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "guestComment": {
          "type": "string",
          "description": "Additional information and comment by the guest",
          "x-nullable": true
        },
        "externalCode": {
          "type": "string",
          "description": "Code in external system",
          "x-nullable": true
        },
        "channelCode": {
          "type": "string",
          "description": "Channel code\u003Cbr /\u003E\u003Cb\u003EDeprecated values:\u003C/b\u003E Homelike: Homelike channel is deprecated and no longer accepts new bookings or rate plans.",
          "enum": [
            "Direct",
            "BookingCom",
            "Ibe",
            "ChannelManager",
            "Expedia",
            "Homelike",
            "Hrs",
            "AltoVita",
            "DesVu",
            "Gimsi"
          ]
        },
        "source": {
          "type": "string",
          "description": "Source of the reservation (e.g Hotels.com, Orbitz, etc.)",
          "x-nullable": true
        },
        "primaryGuest": {
          "$ref": "#/definitions/GuestModel"
        },
        "additionalGuests": {
          "type": "array",
          "description": "Additional guests of the reservation.",
          "items": {
            "$ref": "#/definitions/GuestModel"
          },
          "x-nullable": true
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the reservation has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the reservation has an active payment account without having to retrieve the payment account details."
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "guaranteeType": {
          "type": "string",
          "description": "The strongest guarantee for the rate plans booked in this reservation",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company",
            "Ota"
          ]
        },
        "cancellationFee": {
          "$ref": "#/definitions/ReservationCancellationFeeModel"
        },
        "noShowFee": {
          "$ref": "#/definitions/ReservationNoShowFeeModel"
        },
        "travelPurpose": {
          "type": "string",
          "description": "The purpose of the trip, leisure or business",
          "enum": [
            "Business",
            "Leisure"
          ],
          "x-nullable": true
        },
        "balance": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "assignedUnits": {
          "type": "array",
          "description": "The list of units assigned to this reservation",
          "items": {
            "$ref": "#/definitions/ReservationAssignedUnitModel"
          },
          "x-nullable": true
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices with the reserved units / unit groups for the stay",
          "items": {
            "$ref": "#/definitions/TimeSliceModel"
          },
          "x-nullable": true
        },
        "services": {
          "type": "array",
          "description": "The list of additional services (extras, add-ons) reserved for the stay",
          "items": {
            "$ref": "#/definitions/ReservationServiceItemModel"
          },
          "x-nullable": true
        },
        "validationMessages": {
          "type": "array",
          "description": "Validation rules are applied to reservations during their lifetime.\nFor example a reservation that was created while the house or unit group is already fully booked.\nWhenever a rule was or is currently violated, a validation message will be added to this list.\nThey can be deleted whenever the hotel staff worked them off.",
          "items": {
            "$ref": "#/definitions/ReservationValidationMessageModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this reservation",
          "items": {
            "$ref": "#/definitions/ActionModel[ReservationAction,NotAllowedReservationActionReason]"
          },
          "x-nullable": true
        },
        "company": {
          "$ref": "#/definitions/EmbeddedCompanyModel"
        },
        "corporateCode": {
          "type": "string",
          "description": "Corporate code provided during creation. Used to find offers during amend.",
          "x-nullable": true
        },
        "allFoliosHaveInvoice": {
          "type": "boolean",
          "description": "Whether all folios of a reservation have an invoice"
        },
        "hasCityTax": {
          "type": "boolean",
          "description": "Whether the city tax has already been added to the reservation. Set to false, if the property does not have city tax configured"
        },
        "commission": {
          "$ref": "#/definitions/CommissionModel"
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer used to create the reservation",
          "x-nullable": true
        },
        "isPreCheckedIn": {
          "type": "boolean",
          "description": "Indicates whether the reservation is marked as pre-checked-in or not."
        },
        "isOpenForCharges": {
          "type": "boolean",
          "description": "Whether the reservation can accept charges on its folios. This is purely informational and no validation is performed on this field. Defaults to true."
        },
        "externalReferences": {
          "$ref": "#/definitions/ExternalReferencesModel"
        },
        "isUnitAssignmentLocked": {
          "type": "boolean",
          "description": "Indicates whether the unit assignments for this reservation are locked"
        }
      },
      "additionalProperties": false
    },
    "ReservationListModel": {
      "type": "object",
      "required": [
        "count",
        "reservations"
      ],
      "properties": {
        "reservations": {
          "type": "array",
          "description": "List of reservations",
          "items": {
            "$ref": "#/definitions/ReservationItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "reservations": [
          {
            "id": "XPGMSXGF-1",
            "bookingId": "XPGMSXGF",
            "status": "Confirmed",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Single",
              "description": "Single",
              "type": "BedRoom"
            },
            "unit": {
              "id": "MUC-MTA",
              "name": "A.101",
              "description": "Single room",
              "unitGroupId": "MUC-SGL"
            },
            "totalGrossAmount": {
              "amount": 110.0,
              "currency": "EUR"
            },
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "created": "2026-09-02T14:43:10.0179467\u002B02:00",
            "modified": "2026-09-02T14:43:10.0179467\u002B02:00",
            "adults": 1,
            "channelCode": "Direct",
            "primaryGuest": {
              "title": "Mr",
              "gender": "Male",
              "firstName": "Jon",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "john.d@doe.com",
              "phone": "\u002B4989123343",
              "address": {
                "addressLine1": "My Street 3",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "paymentAccount": {
              "accountNumber": "1111",
              "accountHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "isVirtual": false,
              "isActive": false
            },
            "hasActivePaymentAccount": true,
            "registeredCard": {
              "cardNumber": "1111",
              "cardHolder": "John Doe",
              "expiryMonth": "8",
              "expiryYear": "2018",
              "paymentMethod": "visa",
              "payerEmail": "s.hopper@test.com",
              "note": "Credit card will be available after 2025-06-23 10:00:00",
              "isVirtual": false
            },
            "guaranteeType": "CreditCard",
            "cancellationFee": {
              "id": "MUC-NONREF",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "100% of the accommodation.",
              "dueDateTime": "2026-09-02T14:43:10.0179467\u002B02:00",
              "fee": {
                "amount": 110.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "id": "MUC-NOSHOW",
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 110.0,
                "currency": "EUR"
              }
            },
            "balance": {
              "amount": -110.0,
              "currency": "EUR"
            },
            "timeSlices": [
              {
                "from": "2026-09-04T17:00:00\u002B02:00",
                "to": "2026-09-05T17:00:00\u002B02:00",
                "serviceDate": "2026-09-04",
                "ratePlan": {
                  "id": "MUC-NONREF_SGL",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "Non Refundable",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-SGL",
                  "code": "SGL",
                  "name": "Single",
                  "description": "Single",
                  "type": "BedRoom"
                },
                "unit": {
                  "id": "MUC-MTA",
                  "name": "A.101",
                  "description": "Single room",
                  "unitGroupId": "MUC-SGL"
                },
                "baseAmount": {
                  "grossAmount": 65.0,
                  "netAmount": 60.75,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 86.0,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-BRKF",
                      "code": "BRKF",
                      "name": "Breakfast",
                      "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator."
                    },
                    "serviceDate": "2026-09-04",
                    "count": 0,
                    "amount": {
                      "grossAmount": 9.99,
                      "netAmount": 8.39,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false
                  }
                ]
              }
            ],
            "company": {
              "id": "MUC-UMBRELLA",
              "code": "UMBRELLA",
              "name": "Umbrella Corp.",
              "canCheckOutOnAr": false
            },
            "corporateCode": "UMBRELLA-DBL",
            "allFoliosHaveInvoice": false,
            "hasCityTax": false,
            "isPreCheckedIn": false,
            "isOpenForCharges": true,
            "externalReferences": {
              "globalDistributionSystemId": "A2PA6WHY",
              "onlineTravelAgencyId": "5247241379",
              "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
              "channelManagerId": "123295310",
              "centralReservationSystemId": "91200088",
              "legacyId": "988232144060772"
            },
            "isUnitAssignmentLocked": false
          },
          {
            "id": "APFDRQSX-1",
            "bookingId": "APFDRQSX",
            "status": "CheckedOut",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "ratePlan": {
              "id": "MUC-FLEX_DBL",
              "code": "FLEX",
              "name": "Flexible",
              "description": "Flexible",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "unit": {
              "id": "MUC-JQI",
              "name": "A.102",
              "description": "Double room",
              "unitGroupId": "MUC-DBL"
            },
            "totalGrossAmount": {
              "amount": 120.0,
              "currency": "EUR"
            },
            "arrival": "2026-09-07T14:43:10.0179467\u002B02:00",
            "departure": "2026-09-09T14:43:10.0179467\u002B02:00",
            "created": "2026-09-02T14:43:10.0179467\u002B02:00",
            "modified": "2026-09-02T14:43:10.0179467\u002B02:00",
            "adults": 1,
            "childrenAges": [
              6
            ],
            "channelCode": "Direct",
            "primaryGuest": {
              "title": "Ms",
              "gender": "Female",
              "firstName": "Jane",
              "middleInitial": "D",
              "lastName": "Doe",
              "email": "jane.d@doe.com",
              "phone": "\u002B4989123789",
              "address": {
                "addressLine1": "My Street 5",
                "postalCode": "12453",
                "city": "MyCity",
                "countryCode": "GB"
              },
              "vehicleRegistration": {
                "number": "APA322",
                "countryCode": "DE"
              }
            },
            "hasActivePaymentAccount": false,
            "guaranteeType": "CreditCard",
            "cancellationFee": {
              "id": "MUC-FLEX",
              "code": "FLEX",
              "name": "Flexible",
              "description": "Free cancellation.",
              "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
              "fee": {
                "amount": 120.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "id": "MUC-NOSHOW",
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 120.0,
                "currency": "EUR"
              }
            },
            "balance": {
              "amount": -120.0,
              "currency": "EUR"
            },
            "timeSlices": [
              {
                "from": "2026-09-07T14:43:10.0179467\u002B02:00",
                "to": "2026-09-08T14:43:10.0179467\u002B02:00",
                "serviceDate": "2026-09-07",
                "ratePlan": {
                  "id": "MUC-FLEX_DBL",
                  "code": "FLEX",
                  "name": "Flexible",
                  "description": "Flexible",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "type": "BedRoom"
                },
                "unit": {
                  "id": "MUC-JQI",
                  "name": "A.102",
                  "description": "Double room",
                  "unitGroupId": "MUC-DBL"
                },
                "baseAmount": {
                  "grossAmount": 65.0,
                  "netAmount": 60.75,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 86.0,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-BRKF",
                      "code": "BRKF",
                      "name": "Breakfast",
                      "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator."
                    },
                    "serviceDate": "2026-09-07",
                    "count": 0,
                    "amount": {
                      "grossAmount": 9.99,
                      "netAmount": 8.39,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false
                  }
                ]
              },
              {
                "from": "2026-09-08T14:43:10.0179467\u002B02:00",
                "to": "2026-09-09T14:43:10.0179467\u002B02:00",
                "serviceDate": "2026-09-08",
                "ratePlan": {
                  "id": "MUC-FLEX_DBL",
                  "code": "FLEX",
                  "name": "Flexible",
                  "description": "Flexible",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "type": "BedRoom"
                },
                "unit": {
                  "id": "MUC-JQI",
                  "name": "A.102",
                  "description": "Double room",
                  "unitGroupId": "MUC-DBL"
                },
                "baseAmount": {
                  "grossAmount": 65.0,
                  "netAmount": 60.75,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 86.0,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-BRKF",
                      "code": "BRKF",
                      "name": "Breakfast",
                      "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator."
                    },
                    "serviceDate": "2026-09-08",
                    "count": 0,
                    "amount": {
                      "grossAmount": 9.99,
                      "netAmount": 8.39,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false
                  }
                ]
              }
            ],
            "validationMessages": [
              {
                "category": "OfferNotAvailable",
                "code": "RatePlanRestrictionsViolated",
                "message": "The restrictions of the rate plan are not considered"
              }
            ],
            "allFoliosHaveInvoice": false,
            "hasCityTax": true,
            "commission": {
              "commissionAmount": {
                "amount": 10.0,
                "currency": "EUR"
              },
              "beforeCommissionAmount": {
                "amount": 100.0,
                "currency": "EUR"
              }
            },
            "isPreCheckedIn": false,
            "isOpenForCharges": true,
            "externalReferences": {
              "globalDistributionSystemId": "A2PA6WHY",
              "onlineTravelAgencyId": "5247241379",
              "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
              "channelManagerId": "123295310",
              "centralReservationSystemId": "91200088",
              "legacyId": "988232144060772"
            },
            "isUnitAssignmentLocked": false
          }
        ],
        "count": 0
      }
    },
    "ReservationModel": {
      "type": "object",
      "required": [
        "adults",
        "arrival",
        "balance",
        "bookingId",
        "cancellationFee",
        "channelCode",
        "created",
        "departure",
        "guaranteeType",
        "hasCityTax",
        "id",
        "isOpenForCharges",
        "modified",
        "noShowFee",
        "payableAmount",
        "property",
        "ratePlan",
        "status",
        "taxDetails",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Reservation id"
        },
        "bookingId": {
          "type": "string",
          "description": "Booking id"
        },
        "blockId": {
          "type": "string",
          "description": "Block id",
          "x-nullable": true
        },
        "groupName": {
          "type": "string",
          "description": "Name of the group",
          "x-nullable": true
        },
        "status": {
          "type": "string",
          "description": "Status of the reservation",
          "enum": [
            "Confirmed",
            "InHouse",
            "CheckedOut",
            "Canceled",
            "NoShow"
          ]
        },
        "checkInTime": {
          "type": "string",
          "description": "Time of check-in\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "checkOutTime": {
          "type": "string",
          "description": "Time of check-out\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "cancellationTime": {
          "type": "string",
          "description": "Time of cancellation, if the reservation was canceled\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "noShowTime": {
          "type": "string",
          "description": "Time of setting no-show reservation status\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time",
          "x-nullable": true
        },
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "arrival": {
          "type": "string",
          "description": "Date of arrival\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "departure": {
          "type": "string",
          "description": "Date of departure\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "created": {
          "type": "string",
          "description": "Date of creation\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "modified": {
          "type": "string",
          "description": "Date of last modification\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "adults": {
          "type": "integer",
          "description": "Number of adults",
          "format": "int32"
        },
        "childrenAges": {
          "type": "array",
          "description": "The ages of the children",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "x-nullable": true
        },
        "comment": {
          "type": "string",
          "description": "Additional information and comments",
          "x-nullable": true
        },
        "guestComment": {
          "type": "string",
          "description": "Additional information and comment by the guest",
          "x-nullable": true
        },
        "externalCode": {
          "type": "string",
          "description": "Code in external system",
          "x-nullable": true
        },
        "channelCode": {
          "type": "string",
          "description": "Channel code\u003Cbr /\u003E\u003Cb\u003EDeprecated values:\u003C/b\u003E Homelike: Homelike channel is deprecated and no longer accepts new bookings or rate plans.",
          "enum": [
            "Direct",
            "BookingCom",
            "Ibe",
            "ChannelManager",
            "Expedia",
            "Homelike",
            "Hrs",
            "AltoVita",
            "DesVu",
            "Gimsi"
          ]
        },
        "source": {
          "type": "string",
          "description": "Source of the reservation (e.g Hotels.com, Orbitz, etc.)",
          "x-nullable": true
        },
        "primaryGuest": {
          "$ref": "#/definitions/GuestModel"
        },
        "additionalGuests": {
          "type": "array",
          "description": "Additional guests of the reservation.",
          "items": {
            "$ref": "#/definitions/GuestModel"
          },
          "x-nullable": true
        },
        "booker": {
          "$ref": "#/definitions/BookerModel"
        },
        "paymentAccount": {
          "$ref": "#/definitions/PaymentAccountModel"
        },
        "hasActivePaymentAccount": {
          "type": "boolean",
          "description": "True if the reservation has at least one active payment account, false otherwise. This is a read-only property and is not set by the client.\nIt is used to determine if the reservation has an active payment account without having to retrieve the payment account details."
        },
        "registeredCard": {
          "$ref": "#/definitions/RegisteredCardModel"
        },
        "timeSlices": {
          "type": "array",
          "description": "The list of time slices with the reserved units / unit groups for the stay",
          "items": {
            "$ref": "#/definitions/TimeSliceModel"
          },
          "x-nullable": true
        },
        "services": {
          "type": "array",
          "description": "The list of additional services (extras, add-ons) reserved for the stay",
          "items": {
            "$ref": "#/definitions/ReservationServiceItemModel"
          },
          "x-nullable": true
        },
        "guaranteeType": {
          "type": "string",
          "description": "The strongest guarantee for the rate plans booked in this reservation",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company",
            "Ota"
          ]
        },
        "cancellationFee": {
          "$ref": "#/definitions/ReservationCancellationFeeModel"
        },
        "noShowFee": {
          "$ref": "#/definitions/ReservationNoShowFeeModel"
        },
        "travelPurpose": {
          "type": "string",
          "description": "The purpose of the trip, leisure or business",
          "enum": [
            "Business",
            "Leisure"
          ],
          "x-nullable": true
        },
        "balance": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "assignedUnits": {
          "type": "array",
          "description": "The list of units assigned to this reservation",
          "items": {
            "$ref": "#/definitions/ReservationAssignedUnitModel"
          },
          "x-nullable": true
        },
        "validationMessages": {
          "type": "array",
          "description": "Validation rules are applied to reservations during their lifetime.\nFor example a reservation that was created while the house or unit group is already fully booked.\nWhenever a rule was or is currently violated, a validation message will be added to this list.\nThey can be deleted whenever the hotel staff worked them off.",
          "items": {
            "$ref": "#/definitions/ReservationValidationMessageModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions for this reservation",
          "items": {
            "$ref": "#/definitions/ActionModel[ReservationAction,NotAllowedReservationActionReason]"
          },
          "x-nullable": true
        },
        "company": {
          "$ref": "#/definitions/EmbeddedCompanyModel"
        },
        "corporateCode": {
          "type": "string",
          "description": "Corporate code provided during creation. Used to find offers during amend.",
          "x-nullable": true
        },
        "allFoliosHaveInvoice": {
          "type": "boolean",
          "description": "Whether all folios of a reservation have an invoice"
        },
        "taxDetails": {
          "type": "array",
          "description": "Tax breakdown, displaying net and tax amount for each VAT type",
          "items": {
            "$ref": "#/definitions/TaxDetailModel"
          }
        },
        "hasCityTax": {
          "type": "boolean",
          "description": "Whether the city tax has already been added to the reservation. Set to false, if the property does not have city tax configured"
        },
        "commission": {
          "$ref": "#/definitions/CommissionModel"
        },
        "promoCode": {
          "type": "string",
          "description": "The promo code associated with a certain special offer used to create the reservation",
          "x-nullable": true
        },
        "payableAmount": {
          "$ref": "#/definitions/PayableAmountModel"
        },
        "isPreCheckedIn": {
          "type": "boolean",
          "description": "Indicates whether the reservation is marked as pre-checked-in or not."
        },
        "isOpenForCharges": {
          "type": "boolean",
          "description": "Whether the reservation can accept charges on its folios. This is purely informational and no validation is performed on this field. Defaults to true."
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "externalReferences": {
          "$ref": "#/definitions/ExternalReferencesModel"
        },
        "isUnitAssignmentLocked": {
          "type": "boolean",
          "description": "Indicates whether the unit assignments for this reservation are locked"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "XPGMSXGF-1",
        "bookingId": "XPGMSXGF",
        "status": "Confirmed",
        "unit": {
          "id": "MUC-MTA",
          "name": "A.101",
          "description": "Single room",
          "unitGroupId": "MUC-SGL"
        },
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "ratePlan": {
          "id": "MUC-NONREF_SGL",
          "code": "NONREF",
          "name": "Non Refundable",
          "description": "Non Refundable",
          "isSubjectToCityTax": false
        },
        "unitGroup": {
          "id": "MUC-SGL",
          "code": "SGL",
          "name": "Single",
          "description": "Single",
          "type": "BedRoom"
        },
        "totalGrossAmount": {
          "amount": 222.0,
          "currency": "EUR"
        },
        "arrival": "2026-09-04T17:00:00\u002B02:00",
        "departure": "2026-09-06T11:00:00\u002B02:00",
        "created": "2026-09-02T14:43:10.0179467\u002B02:00",
        "modified": "2026-09-02T14:43:10.0179467\u002B02:00",
        "adults": 1,
        "childrenAges": [
          6
        ],
        "externalCode": "812864414|369",
        "channelCode": "BookingCom",
        "primaryGuest": {
          "title": "Mr",
          "gender": "Male",
          "firstName": "Jon",
          "middleInitial": "D",
          "lastName": "Doe",
          "email": "john.d@doe.com",
          "phone": "\u002B4989123343",
          "address": {
            "addressLine1": "My Street 5",
            "postalCode": "12453",
            "city": "MyCity",
            "countryCode": "GB"
          },
          "vehicleRegistration": {
            "number": "APA322",
            "countryCode": "DE"
          }
        },
        "paymentAccount": {
          "accountNumber": "1111",
          "accountHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "isVirtual": false,
          "isActive": false
        },
        "hasActivePaymentAccount": false,
        "registeredCard": {
          "cardNumber": "1111",
          "cardHolder": "John Doe",
          "expiryMonth": "8",
          "expiryYear": "2018",
          "paymentMethod": "visa",
          "payerEmail": "s.hopper@test.com",
          "note": "Credit card will be available after 2025-06-23 10:00:00",
          "isVirtual": false
        },
        "timeSlices": [
          {
            "from": "2026-09-04T17:00:00\u002B02:00",
            "to": "2026-09-05T11:00:00\u002B02:00",
            "serviceDate": "2026-09-04",
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Single",
              "description": "Single",
              "type": "BedRoom"
            },
            "unit": {
              "id": "MUC-MTA",
              "name": "A.101",
              "description": "Single room",
              "unitGroupId": "MUC-SGL"
            },
            "baseAmount": {
              "grossAmount": 65.0,
              "netAmount": 60.75,
              "vatType": "Reduced",
              "vatPercent": 7.0,
              "currency": "EUR"
            },
            "totalGrossAmount": {
              "amount": 86.0,
              "currency": "EUR"
            },
            "includedServices": [
              {
                "service": {
                  "id": "MUC-BRKF",
                  "code": "BRKF",
                  "name": "Breakfast",
                  "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator."
                },
                "serviceDate": "2026-09-05",
                "count": 0,
                "amount": {
                  "grossAmount": 9.99,
                  "netAmount": 8.39,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "bookedAsExtra": false
              }
            ]
          },
          {
            "from": "2026-09-05T17:00:00\u002B02:00",
            "to": "2026-09-06T11:00:00\u002B02:00",
            "serviceDate": "2026-09-05",
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Single",
              "description": "Single",
              "type": "BedRoom"
            },
            "unit": {
              "id": "MUC-MTA",
              "name": "A.101",
              "description": "Single room",
              "unitGroupId": "MUC-SGL"
            },
            "baseAmount": {
              "grossAmount": 91.01,
              "netAmount": 85.06,
              "vatType": "Reduced",
              "vatPercent": 7.0,
              "currency": "EUR"
            },
            "totalGrossAmount": {
              "amount": 101.0,
              "currency": "EUR"
            },
            "includedServices": [
              {
                "service": {
                  "id": "MUC-BRKF",
                  "code": "BRKF",
                  "name": "Breakfast",
                  "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator."
                },
                "serviceDate": "2026-09-06",
                "count": 0,
                "amount": {
                  "grossAmount": 9.99,
                  "netAmount": 8.39,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "bookedAsExtra": false
              }
            ]
          }
        ],
        "guaranteeType": "CreditCard",
        "cancellationFee": {
          "id": "MUC-FLEX",
          "code": "FLEX",
          "name": "Flexible",
          "description": "Free cancellation.",
          "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
          "fee": {
            "amount": 202.0,
            "currency": "EUR"
          }
        },
        "noShowFee": {
          "id": "MUC-NOSHOW",
          "code": "NOSHOW",
          "name": "Non Refundable",
          "description": "No free no-show",
          "fee": {
            "amount": 202.0,
            "currency": "EUR"
          }
        },
        "balance": {
          "amount": -222.0,
          "currency": "EUR"
        },
        "validationMessages": [
          {
            "category": "OfferNotAvailable",
            "code": "RatePlanRestrictionsViolated",
            "message": "The restrictions of the rate plan are not considered"
          }
        ],
        "company": {
          "id": "MUC-UMBRELLA",
          "code": "UMBRELLA",
          "name": "Umbrella Corp.",
          "canCheckOutOnAr": false
        },
        "corporateCode": "UMBRELLA_DBL",
        "allFoliosHaveInvoice": false,
        "taxDetails": [
          {
            "vatType": "Null",
            "vatPercent": 0.0,
            "net": {
              "amount": 10.0,
              "currency": "EUR"
            },
            "tax": {
              "amount": 10.0,
              "currency": "EUR"
            }
          }
        ],
        "hasCityTax": true,
        "commission": {
          "commissionAmount": {
            "amount": 10.0,
            "currency": "EUR"
          },
          "beforeCommissionAmount": {
            "amount": 100.0,
            "currency": "EUR"
          }
        },
        "payableAmount": {
          "guest": {
            "amount": 10.0,
            "currency": "EUR"
          }
        },
        "isPreCheckedIn": false,
        "isOpenForCharges": true,
        "externalReferences": {
          "globalDistributionSystemId": "A2PA6WHY",
          "onlineTravelAgencyId": "5247241379",
          "onlineBookingToolId": "APA_HQL-C26181420|WAW-MUN-BC2-1U1",
          "channelManagerId": "123295310",
          "centralReservationSystemId": "91200088",
          "legacyId": "988232144060772"
        },
        "isUnitAssignmentLocked": false
      }
    },
    "ReservationNoShowFeeModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the no-show policy applied"
        },
        "code": {
          "type": "string",
          "description": "The code of the no-show policy applied"
        },
        "name": {
          "type": "string",
          "description": "The name of the no-show policy applied",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description of the no-show policy applied",
          "minLength": 1
        },
        "fee": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "ReservationServiceItemModel": {
      "type": "object",
      "required": [
        "dates",
        "service",
        "totalAmount"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/ServiceModel"
        },
        "totalAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "dates": {
          "type": "array",
          "description": "The dates the service will be delivered with its price",
          "items": {
            "$ref": "#/definitions/ServiceDateItemModel"
          }
        }
      },
      "additionalProperties": false
    },
    "ReservationServiceListModel": {
      "type": "object",
      "required": [
        "count",
        "services"
      ],
      "properties": {
        "services": {
          "type": "array",
          "description": "The list of services booked for the reservation",
          "items": {
            "$ref": "#/definitions/ReservationServiceItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "services": [
          {
            "service": {
              "id": "MUC-YOGA",
              "code": "YOGA",
              "name": "Sun Salutation",
              "description": "Start the day with a private Yoga session with one of our certified trainers.",
              "pricingUnit": "Person",
              "defaultGrossPrice": {
                "amount": 35.0,
                "currency": "EUR"
              }
            },
            "totalAmount": {
              "grossAmount": 30.0,
              "netAmount": 25.0,
              "vatType": "Normal",
              "vatPercent": 19.0,
              "currency": "EUR"
            },
            "dates": [
              {
                "serviceDate": "2026-09-02",
                "count": 1,
                "amount": {
                  "grossAmount": 30.0,
                  "netAmount": 25.0,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "isMandatory": false
              }
            ]
          }
        ],
        "count": 1
      }
    },
    "ReservationServiceModel": {
      "type": "object",
      "required": [
        "amount",
        "bookedAsExtra",
        "count",
        "service",
        "serviceDate"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/EmbeddedServiceModel"
        },
        "serviceDate": {
          "type": "string",
          "description": "The date this service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "count": {
          "type": "integer",
          "description": "The count of booked services",
          "format": "int32"
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        },
        "bookedAsExtra": {
          "type": "boolean",
          "description": "Whether this service is already booked as extra"
        }
      },
      "additionalProperties": false
    },
    "ReservationStayOfferModel": {
      "type": "object",
      "required": [
        "arrival",
        "availableUnits",
        "cancellationFee",
        "departure",
        "isCorporate",
        "minGuaranteeType",
        "noShowFee",
        "taxDetails",
        "timeSlices",
        "totalGrossAmount"
      ],
      "properties": {
        "arrival": {
          "type": "string",
          "description": "The earliest arrival date and time for this offer\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "departure": {
          "type": "string",
          "description": "The latest departure date and time for this offer\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee type for this offer",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "availableUnits": {
          "type": "integer",
          "description": "The number of available units for that offer",
          "format": "int32"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "cancellationFee": {
          "$ref": "#/definitions/OfferCancellationFeeModel"
        },
        "noShowFee": {
          "$ref": "#/definitions/OfferNoShowFeeModel"
        },
        "timeSlices": {
          "type": "array",
          "description": "The breakdown for each time slice for this offer",
          "items": {
            "$ref": "#/definitions/ReservationStayOfferTimeSliceModel"
          }
        },
        "services": {
          "type": "array",
          "description": "The breakdown for extra services reserved for this offer",
          "items": {
            "$ref": "#/definitions/ServiceOfferModel"
          },
          "x-nullable": true
        },
        "fees": {
          "type": "array",
          "description": "The details of the fees that will be added on top of the Apaleo.Api.Modules.Booking.Models.Offer.StayOffer.ReservationStayOfferModel.TotalGrossAmount when creating the reservation",
          "items": {
            "$ref": "#/definitions/OfferFeeModel"
          },
          "x-nullable": true
        },
        "taxDetails": {
          "type": "array",
          "description": "Tax breakdown, displaying net and tax amount for each VAT type",
          "items": {
            "$ref": "#/definitions/TaxDetailModel"
          }
        },
        "validationMessages": {
          "type": "array",
          "description": "Validation rules that were applied to the offer and show the reason why the offer is not bookable",
          "items": {
            "$ref": "#/definitions/OfferValidationMessageModel"
          },
          "x-nullable": true
        },
        "companyId": {
          "type": "string",
          "description": "ID of the company the offer is created for",
          "x-nullable": true
        },
        "corporateCode": {
          "type": "string",
          "description": "The corporate rate code the offer is created for",
          "x-nullable": true
        },
        "isCorporate": {
          "type": "boolean",
          "description": "Whether the offer is for a corporate rate plan"
        },
        "cityTaxes": {
          "type": "array",
          "description": "Details of city taxes for this offer, if any",
          "items": {
            "$ref": "#/definitions/OfferCityTaxModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ReservationStayOfferServiceModel": {
      "type": "object",
      "required": [
        "amount",
        "bookedAsExtra",
        "count",
        "pricingMode",
        "service",
        "serviceDate"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/EmbeddedServiceModel"
        },
        "serviceDate": {
          "type": "string",
          "description": "The date this service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "count": {
          "type": "integer",
          "description": "The default count of offered services. For services whose pricing unit is \u0027Person\u0027 it will be based on the adults and children specified, otherwise 1.",
          "format": "int32"
        },
        "availableCount": {
          "type": "integer",
          "description": "If set - the number of services available (only for the limited service).\nIf not set - the service is unlimited.",
          "format": "int32",
          "x-nullable": true
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        },
        "bookedAsExtra": {
          "type": "boolean",
          "description": "Whether this service is already booked as extra"
        },
        "pricingMode": {
          "type": "string",
          "description": "Whether the service price is included in or added to the base rate",
          "enum": [
            "Included",
            "Additional"
          ]
        }
      },
      "additionalProperties": false
    },
    "ReservationStayOfferTimeSliceModel": {
      "type": "object",
      "required": [
        "baseAmount",
        "from",
        "ratePlan",
        "to",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The start date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "The end date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/OfferUnitGroupModel"
        },
        "baseAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "includedServices": {
          "type": "array",
          "description": "The breakdown for services included in the offer",
          "items": {
            "$ref": "#/definitions/ReservationStayOfferServiceModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ReservationStayOffersModel": {
      "type": "object",
      "required": [
        "offers",
        "property"
      ],
      "properties": {
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "offers": {
          "type": "array",
          "description": "List of offered unit groups with rates",
          "items": {
            "$ref": "#/definitions/ReservationStayOfferModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "offers": [
          {
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "minGuaranteeType": "PM6Hold",
            "availableUnits": 4,
            "totalGrossAmount": {
              "amount": 214.0,
              "currency": "EUR"
            },
            "cancellationFee": {
              "code": "FLEX",
              "name": "Flexible",
              "description": "Free cancellation.",
              "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
              "fee": {
                "amount": 214.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 214.0,
                "currency": "EUR"
              }
            },
            "timeSlices": [
              {
                "from": "2026-09-04T17:00:00\u002B02:00",
                "to": "2026-09-05T11:00:00\u002B02:00",
                "ratePlan": {
                  "id": "MUC-FLEX_DBL",
                  "code": "FLEX",
                  "name": "Flexible",
                  "description": "Flexible",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "maxPersons": 2,
                  "rank": 1,
                  "type": "BedRoom"
                },
                "baseAmount": {
                  "grossAmount": 40.00,
                  "netAmount": 37.38,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 50.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Included"
                  }
                ]
              },
              {
                "from": "2026-09-05T11:00:00\u002B02:00",
                "to": "2026-09-06T11:00:00\u002B02:00",
                "ratePlan": {
                  "id": "MUC-NONREF_SGL",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "Non Refundable",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-SGL",
                  "code": "SGL",
                  "name": "Standard",
                  "description": "Standard",
                  "maxPersons": 1,
                  "rank": 2,
                  "type": "BedRoom"
                },
                "baseAmount": {
                  "grossAmount": 59.00,
                  "netAmount": 55.14,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 69.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Included"
                  },
                  {
                    "service": {
                      "id": "MUC-CLEANING"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 2,
                    "amount": {
                      "grossAmount": 25.0,
                      "netAmount": 21.0,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Additional"
                  }
                ]
              }
            ],
            "services": [
              {
                "service": {
                  "id": "MUC-BRKF",
                  "code": "BRKF",
                  "name": "Breakfast",
                  "description": "Best breakfast on this side of the Wei\u00DFwurst\u00E4quator.",
                  "pricingUnit": "Person",
                  "defaultGrossPrice": {
                    "amount": 10.0,
                    "currency": "EUR"
                  }
                },
                "count": 1,
                "totalAmount": {
                  "grossAmount": 11.9,
                  "netAmount": 10.0,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "prePaymentAmount": {
                  "amount": 27.0,
                  "currency": "EUR"
                },
                "dates": [
                  {
                    "serviceDate": "2026-09-05",
                    "amount": {
                      "grossAmount": 11.9,
                      "netAmount": 10.0,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "isDefaultDate": false,
                    "isMandatory": false
                  }
                ]
              }
            ],
            "taxDetails": [
              {
                "vatType": "Normal",
                "vatPercent": 14.0,
                "net": {
                  "amount": 200.0,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 14.0,
                  "currency": "EUR"
                }
              }
            ],
            "isCorporate": false,
            "cityTaxes": [
              {
                "id": "MUC",
                "code": "MUC",
                "name": "Munich City Tax",
                "totalGrossAmount": {
                  "amount": 11.9,
                  "currency": "EUR"
                },
                "dates": [
                  {
                    "serviceDate": "2026-09-05",
                    "amount": {
                      "grossAmount": 11.9,
                      "netAmount": 10.0,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    }
                  }
                ]
              }
            ]
          },
          {
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "minGuaranteeType": "PM6Hold",
            "availableUnits": 8,
            "totalGrossAmount": {
              "amount": 214.0,
              "currency": "EUR"
            },
            "cancellationFee": {
              "code": "FLEX",
              "name": "Flexible",
              "description": "Free cancellation.",
              "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
              "fee": {
                "amount": 214.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 214.0,
                "currency": "EUR"
              }
            },
            "timeSlices": [
              {
                "from": "2026-09-04T17:00:00\u002B02:00",
                "to": "2026-09-05T11:00:00\u002B02:00",
                "ratePlan": {
                  "id": "MUC-FLEX_DBL",
                  "code": "FLEX",
                  "name": "Flexible",
                  "description": "Flexible",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "maxPersons": 2,
                  "rank": 1,
                  "type": "BedRoom"
                },
                "baseAmount": {
                  "grossAmount": 90.00,
                  "netAmount": 84.11,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 100.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Included"
                  }
                ]
              },
              {
                "from": "2026-09-05T11:00:00\u002B02:00",
                "to": "2026-09-06T11:00:00\u002B02:00",
                "ratePlan": {
                  "id": "MUC-NONREF_SGL",
                  "code": "NONREF",
                  "name": "Non Refundable",
                  "description": "Non Refundable",
                  "isSubjectToCityTax": false
                },
                "unitGroup": {
                  "id": "MUC-SGL",
                  "code": "SGL",
                  "name": "Standard",
                  "description": "Standard",
                  "maxPersons": 1,
                  "rank": 2,
                  "type": "BedRoom"
                },
                "baseAmount": {
                  "grossAmount": 124.00,
                  "netAmount": 115.89,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 134.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Included"
                  },
                  {
                    "service": {
                      "id": "MUC-CLEANING"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 2,
                    "amount": {
                      "grossAmount": 25.0,
                      "netAmount": 21.0,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "bookedAsExtra": false,
                    "pricingMode": "Additional"
                  }
                ]
              }
            ],
            "taxDetails": [
              {
                "vatType": "Reduced",
                "vatPercent": 14.0,
                "net": {
                  "amount": 100.0,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 14.0,
                  "currency": "EUR"
                }
              }
            ],
            "isCorporate": false
          }
        ]
      }
    },
    "ReservationValidationMessageModel": {
      "type": "object",
      "required": [
        "category",
        "code",
        "message"
      ],
      "properties": {
        "category": {
          "type": "string",
          "description": "The message category",
          "enum": [
            "OfferNotAvailable",
            "AutoUnitAssignment"
          ]
        },
        "code": {
          "type": "string",
          "description": "The message Code",
          "enum": [
            "UnitGroupFullyBooked",
            "UnitGroupCapacityExceeded",
            "RatePlanRestrictionsViolated",
            "RatePlanSurchargesNotSet",
            "RateRestrictionsViolated",
            "RatePlanChannelNotSet",
            "RatesNotSet",
            "BlockFullyBooked",
            "UnitMoved",
            "IncludedServicesAmountExceededRateAmount",
            "RatePlanCompanyRestrictionsViolated",
            "ServiceFullyBooked",
            "RateDoesNotSatifyHurdles"
          ]
        },
        "message": {
          "type": "string",
          "description": "The message description",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "ReservationsCreatedModel": {
      "type": "object",
      "required": [
        "reservationIds"
      ],
      "properties": {
        "reservationIds": {
          "type": "array",
          "description": "List of ids for newly created reservations",
          "items": {
            "$ref": "#/definitions/ReservationCreatedModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "reservationIds": [
          {
            "id": "XPGMSXGF-1"
          },
          {
            "id": "XPGMSXGF-2"
          }
        ]
      }
    },
    "ServiceDateItemModel": {
      "type": "object",
      "required": [
        "amount",
        "count",
        "isMandatory",
        "serviceDate"
      ],
      "properties": {
        "serviceDate": {
          "type": "string",
          "description": "The date this service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "count": {
          "type": "integer",
          "description": "The count of booked services",
          "format": "int32"
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        },
        "isMandatory": {
          "type": "boolean",
          "description": "Rate plans can have additional services. When booking an offer for such rate plans, those services are automatically booked.\nThey are marked as mandatory and they cannot be removed."
        }
      },
      "additionalProperties": false
    },
    "ServiceModel": {
      "type": "object",
      "required": [
        "code",
        "defaultGrossPrice",
        "description",
        "id",
        "name",
        "pricingUnit"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The service id"
        },
        "code": {
          "type": "string",
          "description": "The code for the service"
        },
        "name": {
          "type": "string",
          "description": "The name for the service",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description for the service",
          "minLength": 1
        },
        "pricingUnit": {
          "type": "string",
          "description": "Defines the granularity (room, person) for which this item is offered and priced",
          "enum": [
            "Room",
            "Person"
          ]
        },
        "defaultGrossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "ServiceOfferItemModel": {
      "type": "object",
      "required": [
        "amount",
        "isDefaultDate",
        "isMandatory",
        "serviceDate"
      ],
      "properties": {
        "serviceDate": {
          "type": "string",
          "description": "The date this service is delivered",
          "format": "date",
          "example": "2020-10-10"
        },
        "amount": {
          "$ref": "#/definitions/AmountModel"
        },
        "isDefaultDate": {
          "type": "boolean",
          "description": "Depending on the postNextDay setting of the service it will by default be posted before or after midnight.\nBreakfast is usually delivered on the next morning, so all the dates from the day after arrival to the departure day\nare default dates and will have this flag set to true. Those are also the dates the service will be booked for if\nyou do not specify dates in the book-service call. Still, you can override this and also book the dates set to IsDefaultDate = false."
        },
        "isMandatory": {
          "type": "boolean",
          "description": "Rate plans can have additional services. When booking an offer for such rate plans, those services are automatically booked.\nThey are marked as mandatory and they cannot be removed."
        },
        "availableCount": {
          "type": "integer",
          "description": "The number of services available.",
          "format": "int32",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ServiceOfferModel": {
      "type": "object",
      "required": [
        "count",
        "dates",
        "prePaymentAmount",
        "service",
        "totalAmount"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/ServiceModel"
        },
        "count": {
          "type": "integer",
          "description": "The default count of offered services. For services whose pricing unit is \u0027Person\u0027 it will be based on the adults and children specified, otherwise 1.",
          "format": "int32"
        },
        "availableCount": {
          "type": "integer",
          "description": "The number of services available.",
          "format": "int32",
          "x-nullable": true
        },
        "totalAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "prePaymentAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "fees": {
          "type": "array",
          "description": "The details of the fees that will be added on top of the Apaleo.Api.Modules.Booking.Models.Offer.ServiceOffer.ServiceOfferModel.TotalAmount when booking the service",
          "items": {
            "$ref": "#/definitions/OfferFeeModel"
          },
          "x-nullable": true
        },
        "dates": {
          "type": "array",
          "description": "The dates the service will be delivered with its price",
          "items": {
            "$ref": "#/definitions/ServiceOfferItemModel"
          }
        },
        "validationMessages": {
          "type": "array",
          "description": "Validation rules that were applied to the offer and show the reason why the offer is not bookable",
          "items": {
            "$ref": "#/definitions/OfferValidationMessageModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ServiceOffersModel": {
      "type": "object",
      "required": [
        "services"
      ],
      "properties": {
        "services": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServiceOfferModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "services": [
          {
            "service": {
              "id": "MUC-WLAN",
              "code": "WLAN",
              "name": "High-Speed WLAN",
              "description": "Upgrade the complimentary internet access to a high speed connection.",
              "pricingUnit": "Room",
              "defaultGrossPrice": {
                "amount": 5.0,
                "currency": "EUR"
              }
            },
            "count": 1,
            "availableCount": 2,
            "totalAmount": {
              "grossAmount": 20.0,
              "netAmount": 16.8,
              "vatType": "Normal",
              "vatPercent": 19.0,
              "currency": "EUR"
            },
            "prePaymentAmount": {
              "amount": 20.0,
              "currency": "EUR"
            },
            "dates": [
              {
                "serviceDate": "2026-09-02",
                "amount": {
                  "grossAmount": 10.0,
                  "netAmount": 8.4,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "isDefaultDate": false,
                "isMandatory": false,
                "availableCount": 5
              },
              {
                "serviceDate": "2026-09-03",
                "amount": {
                  "grossAmount": 10.0,
                  "netAmount": 8.4,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "isDefaultDate": false,
                "isMandatory": false,
                "availableCount": 2
              }
            ]
          },
          {
            "service": {
              "id": "MUC-YOGA",
              "code": "YOGA",
              "name": "Sun Salutation",
              "description": "Start the day with a private Yoga session with one of our certified trainers.",
              "pricingUnit": "Person",
              "defaultGrossPrice": {
                "amount": 35.0,
                "currency": "EUR"
              }
            },
            "count": 1,
            "totalAmount": {
              "grossAmount": 30.0,
              "netAmount": 25.21,
              "vatType": "Normal",
              "vatPercent": 19.0,
              "currency": "EUR"
            },
            "prePaymentAmount": {
              "amount": 30.0,
              "currency": "EUR"
            },
            "dates": [
              {
                "serviceDate": "2026-09-03",
                "amount": {
                  "grossAmount": 30.0,
                  "netAmount": 25.21,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "isDefaultDate": false,
                "isMandatory": false
              }
            ]
          }
        ]
      }
    },
    "SetBlockToOptionalModel": {
      "type": "object",
      "required": [
        "isOptionalDeductingInventory",
        "optionalCutoff",
        "optionalCutoffBehavior"
      ],
      "properties": {
        "optionalCutoff": {
          "type": "string",
          "description": "The date (or date and time) by which a decision must be made on this optional block. A bare date is\ninterpreted as the end of that day in the property\u0027s time zone.\u003Cbr /\u003ESpecify either a pure date or a date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "isOptionalDeductingInventory": {
          "type": "boolean",
          "description": "Whether this optional block reduces availability like a definite block"
        },
        "optionalCutoffBehavior": {
          "type": "string",
          "description": "What happens when the optional cutoff date is reached",
          "enum": [
            "DoNothing",
            "AutoRelease"
          ]
        }
      },
      "additionalProperties": false
    },
    "SourceListModel": {
      "type": "object",
      "required": [
        "sources"
      ],
      "properties": {
        "sources": {
          "type": "array",
          "description": "List of sources.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "sources": [
          "Booking.com",
          "Expedia"
        ]
      }
    },
    "StartOptionalBlockModel": {
      "type": "object",
      "required": [
        "expectedStartDateUtc"
      ],
      "properties": {
        "expectedStartDateUtc": {
          "type": "string",
          "description": "The block start timestamp the scheduler fired for. It is compared against the block\u0027s stored start so a\nstale or replayed callback (the start was moved, or the block already left \u0027Optional\u0027) is ignored.\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "StayOffersModel": {
      "type": "object",
      "required": [
        "offers",
        "property"
      ],
      "properties": {
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "offers": {
          "type": "array",
          "description": "List of offered unit groups with rates",
          "items": {
            "$ref": "#/definitions/OfferModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "offers": [
          {
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Standard",
              "description": "Standard",
              "maxPersons": 1,
              "rank": 2,
              "type": "BedRoom"
            },
            "minGuaranteeType": "PM6Hold",
            "availableUnits": 4,
            "ratePlan": {
              "id": "MUC-NONREF_SGL",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable",
              "isSubjectToCityTax": false
            },
            "totalGrossAmount": {
              "amount": 279.0,
              "currency": "EUR"
            },
            "cancellationFee": {
              "code": "FLEX",
              "name": "Flexible",
              "description": "Free cancellation.",
              "dueDateTime": "2026-09-04T17:00:00\u002B02:00",
              "fee": {
                "amount": 279.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 279.0,
                "currency": "EUR"
              }
            },
            "timeSlices": [
              {
                "from": "2026-09-04T17:00:00\u002B02:00",
                "to": "2026-09-05T11:00:00\u002B02:00",
                "availableUnits": 4,
                "baseAmount": {
                  "grossAmount": 107.0,
                  "netAmount": 100.0,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 117.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Included"
                  }
                ]
              },
              {
                "from": "2026-09-05T11:00:00\u002B02:00",
                "to": "2026-09-06T11:00:00\u002B02:00",
                "availableUnits": 5,
                "baseAmount": {
                  "grossAmount": 107.0,
                  "netAmount": 100.0,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 142.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-05",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Included"
                  },
                  {
                    "service": {
                      "id": "MUC-CLEANING"
                    },
                    "serviceDate": "2026-09-05",
                    "count": 1,
                    "availableCount": 2,
                    "amount": {
                      "grossAmount": 25.0,
                      "netAmount": 21.01,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Additional"
                  }
                ]
              }
            ],
            "services": [
              {
                "service": {
                  "id": "MUC-PARKING",
                  "code": "PARKING",
                  "name": "Parking",
                  "description": "Parking spot per night",
                  "pricingUnit": "Room",
                  "defaultGrossPrice": {
                    "amount": 20.0,
                    "currency": "EUR"
                  }
                },
                "count": 1,
                "availableCount": 3,
                "totalAmount": {
                  "grossAmount": 20.0,
                  "netAmount": 16.81,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "prePaymentAmount": {
                  "amount": 0.0,
                  "currency": "EUR"
                },
                "dates": [
                  {
                    "serviceDate": "2026-09-04",
                    "amount": {
                      "grossAmount": 20.0,
                      "netAmount": 16.81,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "isDefaultDate": true,
                    "isMandatory": false,
                    "availableCount": 3
                  }
                ]
              }
            ],
            "taxDetails": [
              {
                "vatType": "Reduced",
                "vatPercent": 7.0,
                "net": {
                  "amount": 200.0,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 14.0,
                  "currency": "EUR"
                }
              },
              {
                "vatType": "Normal",
                "vatPercent": 19.0,
                "net": {
                  "amount": 54.62,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 10.38,
                  "currency": "EUR"
                }
              }
            ],
            "isCorporate": false,
            "prePaymentAmount": {
              "amount": 0.0,
              "currency": "EUR"
            },
            "cityTaxes": [
              {
                "id": "MUC-TAX",
                "code": "TAX",
                "name": "City tax",
                "totalGrossAmount": {
                  "amount": 119.0,
                  "currency": "EUR"
                },
                "dates": [
                  {
                    "serviceDate": "2021-08-27",
                    "amount": {
                      "grossAmount": 119.0,
                      "netAmount": 100.0,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    }
                  }
                ]
              }
            ]
          },
          {
            "arrival": "2026-09-04T17:00:00\u002B02:00",
            "departure": "2026-09-06T11:00:00\u002B02:00",
            "unitGroup": {
              "id": "MUC-SGL",
              "code": "SGL",
              "name": "Standard",
              "description": "Standard",
              "maxPersons": 1,
              "rank": 2,
              "type": "BedRoom"
            },
            "minGuaranteeType": "Prepayment",
            "availableUnits": 4,
            "ratePlan": {
              "id": "MUC-FLEX_SGL",
              "code": "FLEX",
              "name": "Flexible",
              "description": "Flexible",
              "isSubjectToCityTax": false
            },
            "totalGrossAmount": {
              "amount": 503.0,
              "currency": "EUR"
            },
            "cancellationFee": {
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Full stay amount due 24 hours after booking.",
              "dueDateTime": "2026-09-03T14:43:10.0179467\u002B02:00",
              "fee": {
                "amount": 503.0,
                "currency": "EUR"
              }
            },
            "noShowFee": {
              "code": "NOSHOW",
              "name": "Non Refundable",
              "description": "No free no-show",
              "fee": {
                "amount": 503.0,
                "currency": "EUR"
              }
            },
            "timeSlices": [
              {
                "from": "2026-09-04T17:00:00\u002B02:00",
                "to": "2026-09-05T11:00:00\u002B02:00",
                "availableUnits": 4,
                "baseAmount": {
                  "grossAmount": 214.0,
                  "netAmount": 200.0,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 224.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-04",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Included"
                  }
                ]
              },
              {
                "from": "2026-09-05T11:00:00\u002B02:00",
                "to": "2026-09-06T11:00:00\u002B02:00",
                "availableUnits": 5,
                "baseAmount": {
                  "grossAmount": 214.0,
                  "netAmount": 200.0,
                  "vatType": "Reduced",
                  "vatPercent": 7.0,
                  "currency": "EUR"
                },
                "totalGrossAmount": {
                  "amount": 249.00,
                  "currency": "EUR"
                },
                "includedServices": [
                  {
                    "service": {
                      "id": "MUC-WLAN"
                    },
                    "serviceDate": "2026-09-05",
                    "count": 1,
                    "availableCount": 5,
                    "amount": {
                      "grossAmount": 10.0,
                      "netAmount": 8.4,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Included"
                  },
                  {
                    "service": {
                      "id": "MUC-CLEANING"
                    },
                    "serviceDate": "2026-09-05",
                    "count": 1,
                    "availableCount": 2,
                    "amount": {
                      "grossAmount": 25.0,
                      "netAmount": 21.01,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "pricingMode": "Additional"
                  }
                ]
              }
            ],
            "services": [
              {
                "service": {
                  "id": "MUC-SPA",
                  "code": "SPA",
                  "name": "Spa access",
                  "description": "Spa access per stay",
                  "pricingUnit": "Person",
                  "defaultGrossPrice": {
                    "amount": 30.0,
                    "currency": "EUR"
                  }
                },
                "count": 1,
                "availableCount": 2,
                "totalAmount": {
                  "grossAmount": 30.0,
                  "netAmount": 25.21,
                  "vatType": "Normal",
                  "vatPercent": 19.0,
                  "currency": "EUR"
                },
                "prePaymentAmount": {
                  "amount": 0.0,
                  "currency": "EUR"
                },
                "dates": [
                  {
                    "serviceDate": "2026-09-04",
                    "amount": {
                      "grossAmount": 30.0,
                      "netAmount": 25.21,
                      "vatType": "Normal",
                      "vatPercent": 19.0,
                      "currency": "EUR"
                    },
                    "isDefaultDate": true,
                    "isMandatory": false,
                    "availableCount": 2
                  }
                ]
              }
            ],
            "taxDetails": [
              {
                "vatType": "Reduced",
                "vatPercent": 7.0,
                "net": {
                  "amount": 400.0,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 28.0,
                  "currency": "EUR"
                }
              },
              {
                "vatType": "Normal",
                "vatPercent": 19.0,
                "net": {
                  "amount": 63.02,
                  "currency": "EUR"
                },
                "tax": {
                  "amount": 11.98,
                  "currency": "EUR"
                }
              }
            ],
            "isCorporate": false,
            "prePaymentAmount": {
              "amount": 503.0,
              "currency": "EUR"
            }
          }
        ]
      }
    },
    "TaxDetailModel": {
      "type": "object",
      "required": [
        "net",
        "tax",
        "vatPercent",
        "vatType"
      ],
      "properties": {
        "vatType": {
          "type": "string",
          "enum": [
            "Null",
            "VeryReduced",
            "Reduced",
            "Normal",
            "Without",
            "Special",
            "Special1",
            "Special2",
            "ReducedCovid19",
            "NormalCovid19",
            "Mixed"
          ]
        },
        "vatPercent": {
          "type": "number",
          "format": "double"
        },
        "net": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "tax": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "TaxesModel": {
      "type": "object",
      "required": [
        "cityTax",
        "tax"
      ],
      "properties": {
        "tax": {
          "type": "number",
          "description": "The amount of taxes, which are VAT or Sales Taxes depending on the country of the property",
          "format": "double"
        },
        "cityTax": {
          "type": "number",
          "description": "The amount of City Tax including VAT",
          "format": "double"
        }
      },
      "additionalProperties": false
    },
    "TimeSliceItemModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Date and time the time slice begins\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "Date and time the time slice ends\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "offers": {
          "type": "array",
          "description": "List of offers for this time slice",
          "items": {
            "$ref": "#/definitions/TimeSliceOfferItemModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "TimeSliceListModel": {
      "type": "object",
      "required": [
        "count"
      ],
      "properties": {
        "timeSlices": {
          "type": "array",
          "description": "List of time slices",
          "items": {
            "$ref": "#/definitions/TimeSliceItemModel"
          },
          "x-nullable": true
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "timeSlices": [
          {
            "from": "2026-09-02T17:00:00\u002B02:00",
            "to": "2026-09-03T11:00:00\u002B02:00",
            "offers": [
              {
                "unitGroup": {
                  "id": "MUC-SGL",
                  "code": "SGL",
                  "name": "Single",
                  "description": "Single",
                  "type": "BedRoom"
                },
                "minGuaranteeType": "PM6Hold",
                "available": 4,
                "availableUnits": 0,
                "restrictions": {
                  "minLengthOfStay": 2,
                  "maxLengthOfStay": 30,
                  "closed": false,
                  "closedOnArrival": true,
                  "closedOnDeparture": true
                },
                "prices": [
                  {
                    "adults": 1,
                    "price": {
                      "grossAmount": 123.0,
                      "beforeTax": 111.81,
                      "afterTax": 133.0,
                      "taxes": {
                        "tax": 11.19,
                        "cityTax": 10.0
                      },
                      "currency": "EUR"
                    }
                  },
                  {
                    "adults": 2,
                    "price": {
                      "grossAmount": 170.0,
                      "beforeTax": 154.54,
                      "afterTax": 180.0,
                      "taxes": {
                        "tax": 15.46,
                        "cityTax": 10.0
                      },
                      "currency": "EUR"
                    }
                  }
                ]
              },
              {
                "unitGroup": {
                  "id": "MUC-DBL",
                  "code": "DBL",
                  "name": "Double",
                  "description": "Double",
                  "type": "BedRoom"
                },
                "minGuaranteeType": "PM6Hold",
                "available": 2,
                "availableUnits": 0,
                "restrictions": {
                  "minLengthOfStay": 2,
                  "maxLengthOfStay": 30,
                  "closed": false,
                  "closedOnArrival": true,
                  "closedOnDeparture": true
                },
                "prices": [
                  {
                    "adults": 1,
                    "price": {
                      "grossAmount": 456.0,
                      "beforeTax": 414.54,
                      "afterTax": 466.0,
                      "taxes": {
                        "tax": 41.46,
                        "cityTax": 10.0
                      },
                      "currency": "EUR"
                    }
                  },
                  {
                    "adults": 2,
                    "price": {
                      "grossAmount": 630.0,
                      "beforeTax": 572.72,
                      "afterTax": 610.0,
                      "taxes": {
                        "tax": 57.28,
                        "cityTax": 10.0
                      },
                      "currency": "EUR"
                    }
                  }
                ]
              }
            ]
          }
        ],
        "count": 1
      }
    },
    "TimeSliceModel": {
      "type": "object",
      "required": [
        "baseAmount",
        "from",
        "ratePlan",
        "serviceDate",
        "to",
        "totalGrossAmount",
        "unitGroup"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The start date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "description": "The end date and time for this time slice\u003Cbr /\u003EA date and time (without fractional second part) in UTC or with UTC offset as defined in \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "format": "date-time"
        },
        "serviceDate": {
          "type": "string",
          "description": "The service date for this time slice",
          "format": "date",
          "example": "2020-10-10"
        },
        "ratePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "unit": {
          "$ref": "#/definitions/EmbeddedUnitModel"
        },
        "baseAmount": {
          "$ref": "#/definitions/AmountModel"
        },
        "totalGrossAmount": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "includedServices": {
          "type": "array",
          "description": "The list of services included in the rate plan (package elements)",
          "items": {
            "$ref": "#/definitions/ReservationServiceModel"
          },
          "x-nullable": true
        },
        "actions": {
          "type": "array",
          "description": "The list of actions allowed for this time slice",
          "items": {
            "$ref": "#/definitions/ActionModel[ReservationTimeSliceAction,NotAllowedReservationTimeSliceActionReason]"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "TimeSliceOfferItemModel": {
      "type": "object",
      "required": [
        "available",
        "availableUnits",
        "unitGroup"
      ],
      "properties": {
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee type for the offer",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company",
            "Ota"
          ],
          "x-nullable": true
        },
        "minAdvance": {
          "$ref": "#/definitions/PeriodModel"
        },
        "maxAdvance": {
          "$ref": "#/definitions/PeriodModel"
        },
        "available": {
          "type": "integer",
          "description": "The number of available units for the offer",
          "format": "int32"
        },
        "availableUnits": {
          "type": "integer",
          "description": "The number of available units for the offer considering overbookings",
          "format": "int32"
        },
        "restrictions": {
          "$ref": "#/definitions/RateRestrictionsModel"
        },
        "prices": {
          "type": "array",
          "description": "The prices for this offer",
          "items": {
            "$ref": "#/definitions/PerOccupancyPriceItemModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "VehicleRegistrationModel": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string",
          "description": "The number of a vehicle registration plate",
          "maxLength": 30,
          "x-nullable": true
        },
        "countryCode": {
          "type": "string",
          "description": "Code of the country of vehicle registration",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    }
  },
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "implicit",
      "authorizationUrl": "https://identity.apaleo.com/connect/authorize",
      "scopes": {
        "admin": "Full access",
        "reservations.import": "Import reservations"
      }
    }
  },
  "tags": [
    {
      "name": "Authorization"
    },
    {
      "name": "AuthorizationActions"
    },
    {
      "name": "Block"
    },
    {
      "name": "BlockActions"
    },
    {
      "name": "Booking"
    },
    {
      "name": "Group"
    },
    {
      "name": "Offer"
    },
    {
      "name": "PaymentAccount"
    },
    {
      "name": "PaymentAccountActions"
    },
    {
      "name": "Reservation"
    },
    {
      "name": "ReservationActions"
    },
    {
      "name": "Types"
    }
  ]
}