{
  "swagger": "2.0",
  "info": {
    "title": "apaleo Rate Plan API",
    "description": "Manage the rate plans and rates to rent out your inventory and extra services.",
    "version": "v1"
  },
  "paths": {
    "/settings/v1/age-categories/{id}": {
      "get": {
        "tags": [
          "AgeCategory"
        ],
        "summary": "Get an age category",
        "description": "Get an age category by id.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "SettingsAge-categoriesByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the age category.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "languages",
            "description": "\u0027all\u0027 or comma separated list of two-letter language codes (ISO Alpha-2)",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Return all the age category data.",
            "schema": {
              "$ref": "#/definitions/AgeCategoryModel"
            }
          },
          "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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "AgeCategory"
        ],
        "summary": "Allows to modify properties of an age category",
        "description": "Here is the list of operations that are currently allowed:\n- Replace name, minimum age and maximum age\n\n\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "SettingsAge-categoriesByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the age category 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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "AgeCategory"
        ],
        "summary": "Delete an age category",
        "description": "Use this call to delete an age category. You can only delete an age category if it is not already used in a rate\nplan to define age specific prices.\n\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "SettingsAge-categoriesByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the age category.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the age category 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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/settings/v1/age-categories": {
      "post": {
        "tags": [
          "AgeCategory"
        ],
        "summary": "Create an age category",
        "description": "Use this call to create a new age category. The age ranges for categories must not overlap each other and the\nallowed values span from 0 to 17.\n\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "SettingsAge-categoriesPost",
        "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 age category.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateAgeCategoryModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Creation of the new age category was successful.",
            "schema": {
              "$ref": "#/definitions/AgeCategoryCreatedModel"
            },
            "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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "AgeCategory"
        ],
        "summary": "Get an age category list",
        "description": "Get the list of age categories.\n\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "SettingsAge-categoriesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Return age categories for the specific property",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Return all age categories.",
            "schema": {
              "$ref": "#/definitions/AgeCategoryListModel"
            }
          },
          "204": {
            "description": "Could not find any age categories."
          },
          "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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/cancellation-policies": {
      "post": {
        "tags": [
          "CancellationPolicy"
        ],
        "summary": "Create a cancellation policy.",
        "description": "Create a cancellation policy.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "RateplanCancellation-policiesPost",
        "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 cancellation policy.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateCancellationPolicyModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Cancellation policy successfully created.",
            "schema": {
              "$ref": "#/definitions/CancellationPolicyCreatedModel"
            },
            "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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "CancellationPolicy"
        ],
        "summary": "Get all cancellation policies.",
        "description": "Get the list of cancellation policies.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanCancellation-policiesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Filter cancellation policies by the specified property",
            "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
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/CancellationPolicyListModel"
            }
          },
          "204": {
            "description": "No cancellation policies could be 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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/cancellation-policies/{id}": {
      "get": {
        "tags": [
          "CancellationPolicy"
        ],
        "summary": "Get a specific cancellation policy.",
        "description": "Get a specific cancellation policy.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanCancellation-policiesByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the cancellation policy.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "languages",
            "description": "\u0027all\u0027 or comma separated list of two-letter language codes (ISO Alpha-2)",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/CancellationPolicyModel"
            }
          },
          "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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "CancellationPolicy"
        ],
        "summary": "Allows to modify properties of a cancellation policy",
        "description": "Here is the list of operations that are currently allowed:\n- Replace name and description\n- Replace the period from reference\n- Replace the reference\n- Replace the fee details: fixed and percent values\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "RateplanCancellation-policiesByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the cancellation policy 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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "CancellationPolicy"
        ],
        "summary": "Delete a cancellation policy",
        "description": "Use this call to delete a cancellation policy.\u003Cbr\u003EYou must have this scope: \u0027setup.manage\u0027.",
        "operationId": "RateplanCancellation-policiesByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the cancellation policy.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the cancellation policy 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": [
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/companies": {
      "post": {
        "tags": [
          "Company"
        ],
        "summary": "Create a company",
        "description": "Use this call to create a new company.\u003Cbr\u003EYou must have at least one of these scopes: \u0027companies.create, companies.manage\u0027.",
        "operationId": "RateplanCompaniesPost",
        "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 company.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateCompanyModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/CompanyCreatedModel"
            },
            "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": [
              "companies.create",
              "companies.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Company"
        ],
        "summary": "Get a list of companies",
        "description": "Get the list of companies.\n\u003Cbr\u003EYou must have at least one of these scopes: \u0027companies.read, companies.manage\u0027.",
        "operationId": "RateplanCompaniesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Filter by the specified property",
            "type": "string"
          },
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Return companies with any of the specified rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "corporateCodes",
            "description": "Return companies that have any of the requested corporate codes.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all companies for the provided free text.\nCurrently it only looks up if the company name contains one of the provided values",
            "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
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/CompanyListModel"
            }
          },
          "204": {
            "description": "Could not find any companies."
          },
          "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": [
              "companies.read",
              "companies.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/companies/{id}": {
      "get": {
        "tags": [
          "Company"
        ],
        "summary": "Get a company",
        "description": "Get a company by ID.\u003Cbr\u003EYou must have at least one of these scopes: \u0027companies.read, companies.manage\u0027.",
        "operationId": "RateplanCompaniesByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the company.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/CompanyModel"
            }
          },
          "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": [
              "companies.read",
              "companies.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Company"
        ],
        "summary": "Modify a company",
        "description": "Here is the list of operations that are currently allowed:\n- Replace name, invoicingEmail, phone, taxId, additionalTaxId, additionalTaxId2, invoiceNetworkIdentity, address, canCheckOutOnAr\n- Add, replace and remove rate plans\u003Cbr\u003EYou must have this scope: \u0027companies.manage\u0027.",
        "operationId": "RateplanCompaniesByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the company 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": [
              "companies.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Company"
        ],
        "summary": "Delete a company",
        "description": "Deletes a company.\nWarning: This operation also removes company from all rate plans if not yet used.\nThe deleted company won\u0027t be available in the company VAT report anymore.\u003Cbr\u003EYou must have this scope: \u0027companies.manage\u0027.",
        "operationId": "RateplanCompaniesByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the company 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": [
              "companies.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/corporate-codes/codes": {
      "get": {
        "tags": [
          "CorporateCodes"
        ],
        "summary": "Returns a list of corporate codes.",
        "description": "Returns all existing corporate codes that match given criteria.\u003Cbr\u003EYou must have this scope: \u0027rateplans.read-corporate\u0027.",
        "operationId": "RateplanCorporate-codesCodesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Return codes for a specific property",
            "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
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of corporate codes.",
            "schema": {
              "$ref": "#/definitions/CorporateCodeListModel"
            }
          },
          "204": {
            "description": "No codes 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": [
              "rateplans.read-corporate",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/no-show-policies": {
      "post": {
        "tags": [
          "NoShowPolicy"
        ],
        "summary": "Create a no-show policy.",
        "description": "Create a no-show policy.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "RateplanNo-show-policiesPost",
        "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 no-show policy.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateNoShowPolicyModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "No-show policy successfully created.",
            "schema": {
              "$ref": "#/definitions/NoShowPolicyCreatedModel"
            },
            "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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "NoShowPolicy"
        ],
        "summary": "Get all no-show policies.",
        "description": "Get the list of no-show policies.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanNo-show-policiesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Filter no-show policies by the specified property",
            "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
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/NoShowPolicyListModel"
            }
          },
          "204": {
            "description": "No no-show policies could be 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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/no-show-policies/{id}": {
      "get": {
        "tags": [
          "NoShowPolicy"
        ],
        "summary": "Get a specific no-show policy.",
        "description": "Get a specific no-show policy.\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanNo-show-policiesByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the no-show policy.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "languages",
            "description": "\u0027all\u0027 or comma separated list of two-letter language codes (ISO Alpha-2)",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/NoShowPolicyModel"
            }
          },
          "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": [
              "settings.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "NoShowPolicy"
        ],
        "summary": "Allows to modify properties of a no-show policy",
        "description": "Here is the list of operations that are currently allowed:\n- Replace name and description\n- Replace the fee details: fixed and percent values\u003Cbr\u003EYou must have at least one of these scopes: \u0027settings.manage, setup.manage\u0027.",
        "operationId": "RateplanNo-show-policiesByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the no-show policy 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": [
              "settings.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "NoShowPolicy"
        ],
        "summary": "Delete a no-show policy",
        "description": "Use this call to delete a no-show policy.\u003Cbr\u003EYou must have this scope: \u0027setup.manage\u0027.",
        "operationId": "RateplanNo-show-policiesByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the no-show policy.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the no-show policy 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": [
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/promo-codes/codes": {
      "get": {
        "tags": [
          "PromoCodes"
        ],
        "summary": "Returns a list of promo codes.",
        "description": "Returns all existing promo codes that match given criteria.\u003Cbr\u003EYou must have this scope: \u0027rateplans.read-corporate\u0027.",
        "operationId": "RateplanPromo-codesCodesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Return codes for a specific property",
            "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
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of promo codes.",
            "schema": {
              "$ref": "#/definitions/PromoCodeListModel"
            }
          },
          "204": {
            "description": "No codes 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": [
              "rateplans.read-corporate",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plans/{id}/rates": {
      "get": {
        "tags": [
          "Rate"
        ],
        "summary": "Returns a list of rates.",
        "description": "Returns all rates for a specific rate plan within the specified time range. If a rate has not\nbeen initialized, it will still be returned, but anything besides the from and to values will be empty.\nThe time range of a rate is defined by the time slice definition of the rate plan.\n\nTime ranges with no initialized rates will not be available for sell.\n\n\nTo be able to read rates for a corporate rate plan a client must additionally have\nthe \u0027rateplans.read-corporate\u0027 scope.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rates.read, rates.manage\u0027.",
        "operationId": "RateplanRate-plansByIdRatesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range to filter the rates by. All rates where the from date and time is equal or later than\nthe specified date and optional time will be affected\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": "The end of the time range to filter the rates by. All rates where the from date and time is earlier than\nthe specified date and optional time will be affected\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": "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": "Return all rates for a rate plan.",
            "schema": {
              "$ref": "#/definitions/RateListModel"
            }
          },
          "204": {
            "description": "There are no rates 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": [
              "rates.read",
              "rates.manage",
              "admin"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Rate"
        ],
        "summary": "Initializes and changes the rates for the rate plan.",
        "description": "All rates specified in the request will be initialized, or overwritten if they already exist.\n\n\n\nMake sure that the from and to date and time in the rates match the time slice definition of the rate plan.\nThe easiest way to achieve this is calling the GET /rate-plans/{id}/rates for the time range you want to update\nand then resend the payload with the set prices and restrictions.\u003Cbr\u003EYou must have this scope: \u0027rates.manage\u0027.",
        "operationId": "RateplanRate-plansByIdRatesPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the rates.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReplaceRateListModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Replace the rates 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": [
              "rates.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Rate"
        ],
        "summary": "Allows to patch multiple rates of a single rate plan.",
        "description": "Note that the specified PATCH operations are applied to each and every rate for the specified time ranges.\nHere is the list of operations that are currently allowed:\n- Add, replace and remove Price\n- Add, replace and remove Restrictions\u003Cbr\u003EYou must have this scope: \u0027rates.manage\u0027.",
        "operationId": "RateplanRate-plansByIdRatesPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "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": {
              "$ref": "#/definitions/RatesPatchRequestModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Replace the rates was successful."
          },
          "404": {
            "description": "No rates found to replace."
          },
          "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": [
              "rates.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Rate"
        ],
        "summary": "Deletes the rates for the rate plan",
        "description": "Deletes all rates in the specifed time range.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rates.delete, rates.manage\u0027.",
        "operationId": "RateplanRate-plansByIdRatesDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range to filter the rates by. All rates where the from date and time is equal or later than\nthe specified date and optional time will be affected\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": "The end of the time range to filter the rates by. All rates where the from date and time is earlier than\nthe specified date and optional time will be affected\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"
          }
        ],
        "responses": {
          "204": {
            "description": "Delete of the rates 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": [
              "rates.delete",
              "rates.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plans/{id}/rates/$count": {
      "get": {
        "tags": [
          "Rate"
        ],
        "summary": "Returns the number of rates for a specific rate plan within the specifed time range.",
        "description": "To be able to count rates for a corporate rate plan a client must additionaly have\nthe \u0027rateplans.read-corporate\u0027 scope.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rates.read, rates.manage\u0027.",
        "operationId": "RateplanRate-plansByIdRates$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range to filter the rates by. All rates where the from date and time is equal or later than\nthe specified date and optional time will be affected\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": "The end of the time range to filter the rates by. All rates where the from date and time is earlier than\nthe specified date and optional time will be affected\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"
          }
        ],
        "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": [
              "rates.read",
              "rates.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rates": {
      "patch": {
        "tags": [
          "Rate"
        ],
        "summary": "Allows to patch the rates of multiple rate plans.",
        "description": "Note that the specified PATCH operations are applied to each and every rate for the specified time range.\nHere is the list of operations that are currently allowed:\n- Add, replace and remove Price\n- Add, replace and remove Restrictions\u003Cbr\u003EYou must have this scope: \u0027rates.manage\u0027.",
        "operationId": "RateplanRatesPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Filter rates for patching by rate plan ids",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "The start of the time range to filter the rates by. All rates where the from date and time is equal or later than\nthe specified date and optional time will be affected\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": "The end of the time range to filter the rates by. All rates where the from date and time is earlier than\nthe specified date and optional time will be affected\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": "weekDays",
            "description": "The weekdays that will be patched. If not specified, all weekdays will be patched.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
                "Saturday",
                "Sunday"
              ]
            }
          },
          {
            "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": "Rate plans were successfully modified."
          },
          "404": {
            "description": "No rates found to replace."
          },
          "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": [
              "rates.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plans": {
      "get": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Get a rate plan list",
        "description": "Get the list of rate plans depending on client scopes.\n\n\n            \nIf a client has no additional scopes, only public rate plans are returned.\n\nThe \u0027rateplans.read-corporate\u0027 scope adds corporate rate plans to the response.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanRate-plansGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Return rate plans for the specific property",
            "type": "string"
          },
          {
            "in": "query",
            "name": "ratePlanCodes",
            "description": "Return rate plans filtered by requested codes",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includedServiceIds",
            "description": "Return rate plans that have any of the requested included services",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channelCodes",
            "description": "Return rate plans that are sold though any of the specified channels",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "promoCodes",
            "description": "Return rate plans that have any of the requested promo codes",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "companyIds",
            "description": "Return rate plans filtered by requested companies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "baseRatePlanIds",
            "description": "Return rate plans derived from any of the specified rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Return rate plans with any of the specified unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "timeSliceDefinitionIds",
            "description": "Return rate plans with any of the specified time slice definitions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Return rate plans 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": "minGuaranteeTypes",
            "description": "Return rate plans with any of the specified min guarantee types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PM6Hold",
                "CreditCard",
                "Prepayment",
                "Company"
              ]
            }
          },
          {
            "in": "query",
            "name": "cancellationPolicyIds",
            "description": "Return rate plans with any of the specified cancellation policies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "noShowPolicyIds",
            "description": "Return rate plans with any of the specified no-show policies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "isDerived",
            "description": "Return only derived or base rate plans",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "derivationLevelFilter",
            "description": "This will filter rate plans based on their derivation level.\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": "includeArchived",
            "description": "Return archived rate plans. Defaults to false",
            "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, cancellationPolicy, services, bookingPeriods, surcharges, ageCategories. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property",
                "unitGroup",
                "cancellationPolicy",
                "services",
                "bookingPeriods",
                "surcharges",
                "ageCategories"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Return all rate plans available within the client scopes.",
            "schema": {
              "$ref": "#/definitions/RatePlanListModel"
            }
          },
          "204": {
            "description": "There are no rate plans 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": [
              "rateplans.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Create a rate plan",
        "description": "Use this call to create a new rate plan. The rate plan will already contain empty rates, fill them later using PUT rates.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.create, setup.manage\u0027.",
        "operationId": "RateplanRate-plansPost",
        "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 rate plan.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateRatePlanModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Creation of the new rate plan was successful.",
            "schema": {
              "$ref": "#/definitions/RatePlanCreatedModel"
            },
            "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": [
              "rateplans.create",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Allows to patch one or more rate plans",
        "description": "Here is the list of operations that are currently allowed:\n- Replace Name\n- Replace Description\n- Replace MinGuaranteeType\n- Replace PriceCalculationMode\n- Replace CancellationPolicy\n- Replace NoShowPolicy\n- Replace ChannelCodes\n- Replace Companies\n- Add, replace and remove PromoCode\n- Add, replace and remove Restrictions\n- Add, replace and remove BookingPeriods\n- Add, replace and remove IsSubjectToCityTax\n- Add, replace and remove PricingRule\n- Add, replace and remove Surcharges\n- Add, replace and remove AgeCategories\n- Add, replace and remove IncludedServices\n- Add/Replace/Remove/Update AccountingConfigs\n- Add, replace and remove MarketSegment/Id\u003Cbr\u003EYou must have this scope: \u0027setup.manage\u0027.",
        "operationId": "RateplanRate-plansPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Comma separated list of rate plan IDs, at least one.",
            "required": true,
            "type": "array",
            "items": {
              "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": "Rate plans were successfully modified."
          },
          "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": [
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Delete multiple rate plans",
        "description": "Use this call to delete multiple rate plans.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.delete, setup.manage\u0027.",
        "operationId": "RateplanRate-plansDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ratePlanIds",
            "description": "Comma separated list of rate plan IDs, at least one.",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the rate plans 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": [
              "rateplans.delete",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plans/$count": {
      "get": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Returns number of rate plans",
        "description": "Returns number of rate plans matching the filter criteria, and depending on client scopes\n\n\n            \nIf a client has no additional scopes, only public rate plans are counted.\n\nThe \u0027rateplans.read-corporate\u0027 scope adds corporate rate plans to the result number.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanRate-plans$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Return rate plans for the specific property",
            "type": "string"
          },
          {
            "in": "query",
            "name": "ratePlanCodes",
            "description": "Return rate plans filtered by requested codes",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includedServiceIds",
            "description": "Return rate plans that have any of the requested included services",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "channelCodes",
            "description": "Return rate plans that are sold though any of the specified channels",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "promoCodes",
            "description": "Return rate plans that have any of the requested promo codes",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "companyIds",
            "description": "Return rate plans filtered by requested companies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "baseRatePlanIds",
            "description": "Return rate plans derived from any of the specified rate plans",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupIds",
            "description": "Return rate plans with any of the specified unit groups",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "timeSliceDefinitionIds",
            "description": "Return rate plans with any of the specified time slice definitions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "unitGroupTypes",
            "description": "Return rate plans 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": "minGuaranteeTypes",
            "description": "Return rate plans with any of the specified min guarantee types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "PM6Hold",
                "CreditCard",
                "Prepayment",
                "Company"
              ]
            }
          },
          {
            "in": "query",
            "name": "cancellationPolicyIds",
            "description": "Return rate plans with any of the specified cancellation policies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "noShowPolicyIds",
            "description": "Return rate plans with any of the specified no-show policies",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "isDerived",
            "description": "Return only derived or base rate plans",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "derivationLevelFilter",
            "description": "This will filter rate plans based on their derivation level.\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": "includeArchived",
            "description": "Return archived rate plans. Defaults to false",
            "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": [
              "rateplans.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plans/{id}": {
      "head": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Check if a rate plan exists",
        "description": "Check if a rate plan exists by id.\n\n\n            \nTo be able to check if a corporate rate plan exists\na client must additionaly have \u0027rateplans.read-corporate\u0027 scope assigned.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanRate-plansByIdHead",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The rate plan 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": [
              "rateplans.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Get a rate plan",
        "description": "Get a rate plan by id.\n\n\n            \nTo be able to read a corporate rate plan a client must additionaly have\n\u0027rateplans.read-corporate\u0027 scope assigned.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanRate-plansByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "languages",
            "description": "\u0027all\u0027 or comma separated list of two-letter language codes (ISO Alpha-2)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: property, cancellationPolicy. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property",
                "cancellationPolicy"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Return all the rate plan data.",
            "schema": {
              "$ref": "#/definitions/RatePlanModel"
            }
          },
          "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": [
              "rateplans.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Replace a rate plan",
        "description": "Use this call to modify a rate plan.\u003Cbr\u003EYou must have this scope: \u0027setup.manage\u0027.",
        "operationId": "RateplanRate-plansByIdPut",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The definition of the rate plan.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReplaceRatePlanModel"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Replace of the rate plan 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": [
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "RatePlan"
        ],
        "summary": "Delete a rate plan",
        "description": "Use this call to delete a rate plan.\u003Cbr\u003EYou must have at least one of these scopes: \u0027rateplans.delete, setup.manage\u0027.",
        "operationId": "RateplanRate-plansByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the rate plan.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the rate plan 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": [
              "rateplans.delete",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/rate-plan-actions/{id}/archive": {
      "put": {
        "tags": [
          "RatePlanActions"
        ],
        "summary": "Archive a rate plan",
        "description": "Archive the specific rate plan.\nThis action makes rate plan unavailable for all operations and cannot be undone.\u003Cbr\u003EYou must have this scope: \u0027setup.manage\u0027.",
        "operationId": "RateplanRate-plan-actionsByIdArchivePut",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "Id of the rate plan that should be archived.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Confirmation of the operation 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": [
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/services": {
      "post": {
        "tags": [
          "Service"
        ],
        "summary": "Create a service.",
        "description": "Create a service.\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.create, setup.manage\u0027.",
        "operationId": "RateplanServicesPost",
        "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 service.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateServiceModel"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Service successfully created.",
            "schema": {
              "$ref": "#/definitions/ServiceCreatedModel"
            },
            "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": [
              "services.create",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Service"
        ],
        "summary": "Get all services.",
        "description": "Get the list of services.\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanServicesGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Filter services by the specified property",
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all services for the provided free text.\nCurrently it only looks up if the service name contains one of the provided values.",
            "type": "string"
          },
          {
            "in": "query",
            "name": "onlySoldAsExtras",
            "description": "If set to true, return only services that can be sold as extras. Otherwise, it returns both, extras, and include-only.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "channelCodes",
            "description": "The channel codes the service is sold through",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "serviceTypes",
            "description": "The service types offered",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Other",
                "Accommodation",
                "FoodAndBeverages"
              ]
            }
          },
          {
            "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. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/ServiceListModel"
            }
          },
          "204": {
            "description": "No services could be 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": [
              "services.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/services/{id}": {
      "patch": {
        "tags": [
          "Service"
        ],
        "summary": "Modify a service.",
        "description": "Here is the list of operations that are currently allowed:\n- Replace Name\n- Replace Description\n- Replace DefaultGrossPrice\n- Replace PricingUnit\n- Replace PostNextDay\n- Replace Availability\n- Add/Replace/Remove/Update AccountingConfigs\n- Replace ChannelCodes\n- Replace AgeCategoryId\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.manage, setup.manage\u0027.",
        "operationId": "RateplanServicesByIdPatch",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the service.",
            "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": "The service was successfully modified."
          },
          "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": [
              "services.manage",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Service"
        ],
        "summary": "Get a specific service.",
        "description": "Get a specific service.\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanServicesByIdGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the service.",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "languages",
            "description": "\u0027all\u0027 or comma separated list of two-letter language codes (ISO Alpha-2)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "expand",
            "description": "List of all embedded resources that should be expanded in the response. Possible values are: property. All other values will be silently ignored.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "property"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success.",
            "schema": {
              "$ref": "#/definitions/ServiceModel"
            }
          },
          "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": [
              "services.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "head": {
        "tags": [
          "Service"
        ],
        "summary": "Check if a service exists",
        "description": "Check if a service exists by id.\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanServicesByIdHead",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the service.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The service 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": [
              "services.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Service"
        ],
        "summary": "Delete a service",
        "description": "Use this call to delete a service.\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.create, setup.manage\u0027.",
        "operationId": "RateplanServicesByIdDelete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The id of the service.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the service 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": [
              "services.create",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    },
    "/rateplan/v1/services/$count": {
      "get": {
        "tags": [
          "Service"
        ],
        "summary": "Returns number of services.",
        "description": "Returns number of services\u003Cbr\u003EYou must have at least one of these scopes: \u0027services.read, setup.read, setup.manage\u0027.",
        "operationId": "RateplanServices$countGet",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "propertyId",
            "description": "Filter services by the specified property",
            "type": "string"
          },
          {
            "in": "query",
            "name": "textSearch",
            "description": "This will filter all services for the provided free text.\nCurrently it only looks up if the service name contains one of the provided values.",
            "type": "string"
          },
          {
            "in": "query",
            "name": "onlySoldAsExtras",
            "description": "If set to true, return only services that can be sold as extras. Otherwise, it returns both, extras, and include-only.",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "channelCodes",
            "description": "The channel codes the service is sold through",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Direct",
                "BookingCom",
                "Ibe",
                "ChannelManager",
                "Expedia",
                "Homelike",
                "Hrs",
                "AltoVita",
                "DesVu",
                "Gimsi"
              ]
            }
          },
          {
            "in": "query",
            "name": "serviceTypes",
            "description": "The service types offered",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Other",
                "Accommodation",
                "FoodAndBeverages"
              ]
            }
          }
        ],
        "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": [
              "services.read",
              "setup.read",
              "setup.manage",
              "admin"
            ]
          }
        ]
      }
    }
  },
  "definitions": {
    "AccountingConfigModel": {
      "type": "object",
      "required": [
        "serviceType",
        "validFrom",
        "vatType"
      ],
      "properties": {
        "vatType": {
          "type": "string",
          "description": "The VAT type",
          "enum": [
            "Null",
            "VeryReduced",
            "Reduced",
            "Normal",
            "Without",
            "Special",
            "Special1",
            "Special2",
            "ReducedCovid19",
            "NormalCovid19",
            "Mixed"
          ]
        },
        "serviceType": {
          "type": "string",
          "description": "The service type",
          "enum": [
            "Other",
            "Accommodation",
            "FoodAndBeverages"
          ]
        },
        "subAccountId": {
          "type": "string",
          "description": "The sub-accounts id",
          "x-nullable": true
        },
        "validFrom": {
          "type": "string",
          "description": "Which date this configuration is valid from",
          "format": "date",
          "example": "2020-10-10"
        }
      },
      "additionalProperties": false,
      "example": {
        "state": "Unknown",
        "vatType": "Normal",
        "serviceType": "FoodAndBeverages",
        "subAccountId": "ALCO",
        "validFrom": "2021-01-01"
      }
    },
    "AddressModel": {
      "type": "object",
      "required": [
        "addressLine1",
        "city",
        "countryCode",
        "postalCode"
      ],
      "properties": {
        "addressLine1": {
          "type": "string",
          "minLength": 1
        },
        "addressLine2": {
          "type": "string",
          "x-nullable": true
        },
        "postalCode": {
          "type": "string",
          "minLength": 1
        },
        "city": {
          "type": "string",
          "minLength": 1
        },
        "regionCode": {
          "type": "string",
          "x-nullable": true
        },
        "countryCode": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "AgeCategoryCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The age category id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-BABY"
      }
    },
    "AgeCategoryItemModel": {
      "type": "object",
      "required": [
        "code",
        "id",
        "maxAge",
        "minAge",
        "name",
        "propertyId"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The age category id"
        },
        "code": {
          "type": "string",
          "description": "The code for the age category"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property for which the age category will be created"
        },
        "name": {
          "type": "string",
          "description": "The name for the age category",
          "minLength": 1
        },
        "minAge": {
          "type": "integer",
          "description": "The minimum age for the age category. The specified value is included in the age range",
          "format": "int32"
        },
        "maxAge": {
          "type": "integer",
          "description": "The maximum age for the age category. The specified value is included in the age range",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "AgeCategoryListModel": {
      "type": "object",
      "required": [
        "ageCategories",
        "count"
      ],
      "properties": {
        "ageCategories": {
          "type": "array",
          "description": "List of age categories",
          "items": {
            "$ref": "#/definitions/AgeCategoryItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "ageCategories": [
          {
            "id": "MUC-BABY",
            "code": "BABY",
            "propertyId": "MUC",
            "name": "Baby",
            "minAge": 0,
            "maxAge": 1
          },
          {
            "id": "MUC-CHILD",
            "code": "CHILD",
            "propertyId": "PROP ID",
            "name": "Child",
            "minAge": 2,
            "maxAge": 12
          }
        ],
        "count": 2
      }
    },
    "AgeCategoryModel": {
      "type": "object",
      "required": [
        "code",
        "id",
        "maxAge",
        "minAge",
        "name",
        "propertyId"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The age category id"
        },
        "code": {
          "type": "string",
          "description": "The code for the age category"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property for which the age category will be created"
        },
        "name": {
          "type": "object",
          "description": "The name for the age category",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "minAge": {
          "type": "integer",
          "description": "The minimum age for the age category. The specified value is included in the age range",
          "format": "int32"
        },
        "maxAge": {
          "type": "integer",
          "description": "The maximum age for the age category. The specified value is included in the age range",
          "format": "int32"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-BABY",
        "code": "BABY",
        "propertyId": "MUC",
        "name": {
          "en": "Baby"
        },
        "minAge": 0,
        "maxAge": 1
      }
    },
    "AgeCategorySurchargeModel": {
      "type": "object",
      "required": [
        "adults",
        "value"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "description": "The number of adults",
          "format": "int32"
        },
        "value": {
          "type": "number",
          "description": "The absolute value in the currency of the rate plan as surcharge for each child accompanied by the given number of \u0027adults\u0027.\nThe minimum value is 0.",
          "format": "double",
          "maximum": 2147483647,
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    "AvailabilityModel": {
      "type": "object",
      "required": [
        "mode"
      ],
      "properties": {
        "mode": {
          "type": "string",
          "description": "You can choose if the service will only be offered\nfor the arrival or departure time slice like early check-in or a final cleaning service. You can also define\na service that is available to be booked for the whole stay. The property defaults to \u0027Daily\u0027.",
          "enum": [
            "Arrival",
            "Departure",
            "Daily"
          ]
        },
        "quantity": {
          "type": "integer",
          "description": "Quota/Limit for service. By default service is unlimited.",
          "format": "int32",
          "x-nullable": true
        },
        "daysOfWeek": {
          "type": "array",
          "description": "You can choose if the service should be available for specific days of the week",
          "items": {
            "type": "string",
            "enum": [
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday",
              "Sunday"
            ]
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "BookingPeriodModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Start of booking period\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 of booking period\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
    },
    "BookingRestrictionsModel": {
      "type": "object",
      "properties": {
        "minAdvance": {
          "$ref": "#/definitions/PeriodModel"
        },
        "maxAdvance": {
          "$ref": "#/definitions/PeriodModel"
        },
        "lateBookingUntil": {
          "type": "string",
          "description": "Time of day until the late booking can be made for this rate plan\nRestrictions:\n- the time has to be between the check-in (excl.) and check-out time (excl.)\n- can only be set, if MinAdvance is not set\u003Cbr /\u003EA time (without fractional second part) as defined in the \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "CalculatedRateModel": {
      "type": "object",
      "required": [
        "adults",
        "price"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "description": "Number of adults this rate is valid for",
          "format": "int32"
        },
        "price": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "includedServicesPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        }
      },
      "additionalProperties": false
    },
    "CancellationPolicyCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The cancellation policy ID"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-FLE"
      }
    },
    "CancellationPolicyItemModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "id",
        "name",
        "periodFromReference",
        "propertyId",
        "reference"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id"
        },
        "name": {
          "type": "string",
          "description": "Name",
          "minLength": 1
        },
        "code": {
          "type": "string",
          "description": "The code for the cancellation policy"
        },
        "description": {
          "type": "string",
          "description": "Description",
          "minLength": 1
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the cancellation policy was created"
        },
        "periodFromReference": {
          "$ref": "#/definitions/PeriodModel"
        },
        "reference": {
          "type": "string",
          "description": "The due date for the cancellation policy will be calculated based on this reference point, and the defined time period.\n\n\n\nExamples:\n\n- 1 day and 12 hours prior to arrival\n\n- 0 prior to arrival (meaning, cancellations are always free)\n\n- 24 hours after booking\n\n- 0 after booking (meaning, cancellations ar never free)",
          "enum": [
            "PriorToArrival",
            "AfterBooking"
          ]
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false
    },
    "CancellationPolicyListModel": {
      "type": "object",
      "required": [
        "cancellationPolicies",
        "count"
      ],
      "properties": {
        "cancellationPolicies": {
          "type": "array",
          "description": "List of cancellation policies",
          "items": {
            "$ref": "#/definitions/CancellationPolicyItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "cancellationPolicies": [
          {
            "id": "MUC-FLEX",
            "name": "Flexible",
            "code": "FLEX",
            "description": "Free cancellation until 36 hours before arrival.",
            "propertyId": "MUC",
            "periodFromReference": {
              "hours": 12,
              "days": 1,
              "months": 0
            },
            "reference": "PriorToArrival",
            "fee": {
              "vatType": "Reduced",
              "fixedValue": {
                "amount": 100.0,
                "currency": "EUR"
              }
            }
          },
          {
            "id": "BER-NONREF",
            "name": "Non Refundable",
            "code": "NONREF",
            "description": "25% refund up until 1 week prior to arrival.",
            "propertyId": "BER",
            "periodFromReference": {
              "hours": 0,
              "days": 0,
              "months": 0
            },
            "reference": "AfterBooking",
            "fee": {
              "vatType": "Reduced",
              "percentValue": {
                "percent": 100,
                "limit": 1,
                "includeServiceIds": [
                  "MUC-BRK"
                ]
              }
            }
          }
        ],
        "count": 2
      }
    },
    "CancellationPolicyModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "id",
        "name",
        "periodFromReference",
        "propertyId",
        "reference"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The cancellation policy id"
        },
        "code": {
          "type": "string",
          "description": "The code for the policy",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "name": {
          "type": "object",
          "description": "The name for the cancellation policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the cancellation policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the cancellation policy was created"
        },
        "periodFromReference": {
          "$ref": "#/definitions/PeriodModel"
        },
        "reference": {
          "type": "string",
          "description": "The due date for the cancellation policy will be calculated based on this reference point, and the defined time period.\n\n\n\nExamples:\n\n- 1 day and 12 hours prior to arrival\n\n- 0 prior to arrival (meaning, cancellations are always free)\n\n- 24 hours after booking\n\n- 0 after booking (meaning, cancellations ar never free)",
          "enum": [
            "PriorToArrival",
            "AfterBooking"
          ]
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-FLE",
        "code": "FLE",
        "name": {
          "en": "Flexible",
          "de": "Flexibel"
        },
        "description": {
          "en": "Free cancellation until 36 hours before arrival.",
          "de": "Kostenfreies Storno bis 36 Stunden vor Ankunft."
        },
        "propertyId": "MUC",
        "periodFromReference": {
          "hours": 12,
          "days": 1
        },
        "reference": "PriorToArrival",
        "fee": {
          "vatType": "Reduced",
          "percentValue": {
            "percent": 100,
            "limit": 1,
            "includeServiceIds": [
              "MUC-BRK"
            ]
          }
        }
      }
    },
    "CompanyAddressModel": {
      "type": "object",
      "required": [
        "addressLine1",
        "city",
        "countryCode",
        "postalCode"
      ],
      "properties": {
        "addressLine1": {
          "type": "string",
          "minLength": 1
        },
        "addressLine2": {
          "type": "string",
          "x-nullable": true
        },
        "postalCode": {
          "type": "string",
          "minLength": 1
        },
        "city": {
          "type": "string",
          "minLength": 1
        },
        "regionCode": {
          "type": "string",
          "x-nullable": true
        },
        "countryCode": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CompanyCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The company ID"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-UMBRELLA"
      }
    },
    "CompanyListModel": {
      "type": "object",
      "required": [
        "companies",
        "count"
      ],
      "properties": {
        "companies": {
          "type": "array",
          "description": "List of companies",
          "items": {
            "$ref": "#/definitions/CompanyModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "companies": [
          {
            "id": "MUC-UMBRELLA",
            "code": "UMBRELLA",
            "propertyId": "MUC",
            "name": "Umbrella Corp.",
            "invoicingEmail": "umbrella@corp.com",
            "phone": "\u002B49 89 12345678",
            "taxId": "Tax 123456",
            "additionalTaxId": "123456789",
            "additionalTaxId2": "987654321",
            "invoiceNetworkIdentity": {
              "network": "Peppol",
              "id": "0208:123456789"
            },
            "address": {
              "addressLine1": "Marienplatz 1",
              "postalCode": "80331",
              "city": "M\u00FCnchen",
              "countryCode": "DE"
            },
            "canCheckOutOnAr": true,
            "ratePlans": [
              {
                "id": "MUC-DBL",
                "code": "DBL",
                "corporateCode": "UMBRELLAINC",
                "name": "Double room flexible"
              }
            ]
          },
          {
            "id": "BER-ACME",
            "code": "ACME",
            "propertyId": "BER",
            "name": "ACME Inc.",
            "invoicingEmail": "acme@inc.com",
            "phone": "\u002B49 30 98765432",
            "taxId": "Tax 5552221",
            "additionalTaxId": "993874520",
            "additionalTaxId2": "025478399",
            "invoiceNetworkIdentity": {
              "network": "Peppol",
              "id": "0208:123456789"
            },
            "address": {
              "addressLine1": "Marienplatz 1",
              "postalCode": "80331",
              "city": "M\u00FCnchen",
              "countryCode": "DE"
            },
            "canCheckOutOnAr": false,
            "ratePlans": [
              {
                "id": "BER-SGL",
                "code": "SGL",
                "corporateCode": "ACMEINC",
                "name": "Single room flexible"
              }
            ]
          }
        ],
        "count": 0
      }
    },
    "CompanyModel": {
      "type": "object",
      "required": [
        "address",
        "canCheckOutOnAr",
        "code",
        "id",
        "name",
        "propertyId"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of this company"
        },
        "code": {
          "type": "string",
          "description": "The code for the company"
        },
        "propertyId": {
          "type": "string",
          "description": "The ID of the property"
        },
        "name": {
          "type": "string",
          "description": "The name of the company",
          "minLength": 1
        },
        "invoicingEmail": {
          "type": "string",
          "description": "The email address for invoicing purposes",
          "x-nullable": true
        },
        "phone": {
          "type": "string",
          "description": "The company\u0027s phone number",
          "x-nullable": true
        },
        "taxId": {
          "type": "string",
          "description": "The tax ID of the company",
          "x-nullable": true
        },
        "additionalTaxId": {
          "type": "string",
          "description": "The additional tax ID of the company (e.g. SIRET in France, Codice Destinatario in Italy, SST in Malaysia)",
          "x-nullable": true
        },
        "additionalTaxId2": {
          "type": "string",
          "description": "The additional tax ID of the company (e.g. Codice Fiscale in Italy, BRN in Malaysia)",
          "x-nullable": true
        },
        "invoiceNetworkIdentity": {
          "$ref": "#/definitions/InvoiceNetworkIdentityModel"
        },
        "address": {
          "$ref": "#/definitions/CompanyAddressModel"
        },
        "canCheckOutOnAr": {
          "type": "boolean",
          "description": "Whether or not the company is allowed to check out on AR / invoice"
        },
        "ratePlans": {
          "type": "array",
          "description": "Rate plans that can be booked by this company",
          "items": {
            "$ref": "#/definitions/RatePlanCompanyModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-UMBRELLA",
        "code": "UMBRELLA",
        "propertyId": "MUC",
        "name": "Umbrella Corp.",
        "invoicingEmail": "umbrella@corp.com",
        "phone": "\u002B49 89 12345678",
        "taxId": "Tax 123456",
        "additionalTaxId": "123456789",
        "additionalTaxId2": "987654321",
        "invoiceNetworkIdentity": {
          "network": "Peppol",
          "id": "0208:123456789"
        },
        "address": {
          "addressLine1": "Marienplatz 1",
          "postalCode": "80331",
          "city": "M\u00FCnchen",
          "countryCode": "DE"
        },
        "canCheckOutOnAr": true,
        "ratePlans": [
          {
            "id": "MUC-DBL",
            "code": "DBL",
            "corporateCode": "UMBRELLAINC",
            "name": "Double room flexible"
          }
        ]
      }
    },
    "CompanyRatePlanModel": {
      "type": "object",
      "required": [
        "code",
        "corporateCode",
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Company ID that can use this rate plan"
        },
        "code": {
          "type": "string",
          "description": "The code of the company that can book this rate plan"
        },
        "corporateCode": {
          "type": "string",
          "description": "Company rate plan code, identifying the company \u002B rate plan pair. Is used is offers."
        },
        "name": {
          "type": "string",
          "description": "The name of the company that can book this rate plan",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "CorporateCodeListModel": {
      "type": "object",
      "required": [
        "corporateCodes",
        "count"
      ],
      "properties": {
        "corporateCodes": {
          "type": "array",
          "description": "List of existing corporate codes",
          "items": {
            "$ref": "#/definitions/CorporateCodeModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "corporateCodes": [
          {
            "code": "APALEO-NONREF",
            "companyId": "MUC-UMBRELLA",
            "companyCode": "UMBRELLA",
            "companyName": "Umbrella Corp.",
            "ratePlanId": "RP-APALEO-NONREF"
          }
        ],
        "count": 1
      }
    },
    "CorporateCodeModel": {
      "type": "object",
      "required": [
        "code",
        "companyCode",
        "companyId",
        "companyName",
        "ratePlanId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The corporate rate code"
        },
        "companyId": {
          "type": "string",
          "description": "The company ID"
        },
        "companyCode": {
          "type": "string",
          "description": "The company code"
        },
        "companyName": {
          "type": "string",
          "description": "The company name",
          "minLength": 1
        },
        "ratePlanId": {
          "type": "string",
          "description": "The rate plan ID"
        }
      },
      "additionalProperties": false
    },
    "CountModel": {
      "type": "object",
      "required": [
        "count"
      ],
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "count": 50
      }
    },
    "CreateAgeCategoryModel": {
      "type": "object",
      "required": [
        "code",
        "maxAge",
        "minAge",
        "name",
        "propertyId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the age category",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property for which the age category will be created"
        },
        "name": {
          "type": "object",
          "description": "The name for the age category",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "minAge": {
          "type": "integer",
          "description": "The minimum age for the age category. The specified value is included in the age range",
          "format": "int32",
          "maximum": 17,
          "minimum": 0
        },
        "maxAge": {
          "type": "integer",
          "description": "The maximum age for the age category. The specified value is included in the age range and the maximum value\nis 17",
          "format": "int32",
          "maximum": 17,
          "minimum": 0
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "BABY",
        "propertyId": "MUC",
        "name": {
          "en": "Baby",
          "de": "Kind"
        },
        "minAge": 0,
        "maxAge": 2
      }
    },
    "CreateCancellationPolicyModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "name",
        "propertyId",
        "reference"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the cancellation policy, used to assemble its id",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "name": {
          "type": "object",
          "description": "The name for the cancellation policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the cancellation policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the cancellation policy will be created"
        },
        "periodFromReference": {
          "$ref": "#/definitions/PeriodModel"
        },
        "reference": {
          "type": "string",
          "description": "The due date for the cancellation policy will be calculated based on this reference point",
          "enum": [
            "PriorToArrival",
            "AfterBooking"
          ]
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "FLE",
        "name": {
          "en": "Flexible",
          "de": "Flexibel"
        },
        "description": {
          "en": "Free cancellation until 36 hours before arrival.",
          "de": "Kostenfreies Storno bis 36 Stunden vor Ankunft."
        },
        "propertyId": "MUC",
        "periodFromReference": {
          "hours": 12,
          "days": 1
        },
        "reference": "PriorToArrival",
        "fee": {
          "vatType": "Reduced",
          "percentValue": {
            "percent": 100,
            "limit": 1,
            "includeServiceIds": [
              "MUC-BRK"
            ]
          }
        }
      }
    },
    "CreateCompanyModel": {
      "type": "object",
      "required": [
        "address",
        "canCheckOutOnAr",
        "code",
        "name",
        "propertyId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the company",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "propertyId": {
          "type": "string",
          "description": "The ID of the property"
        },
        "name": {
          "type": "string",
          "description": "The name of the company",
          "minLength": 1
        },
        "invoicingEmail": {
          "type": "string",
          "description": "The email address for invoicing purposes",
          "x-nullable": true
        },
        "phone": {
          "type": "string",
          "description": "The company\u0027s phone",
          "x-nullable": true
        },
        "taxId": {
          "type": "string",
          "description": "The tax ID of the company",
          "x-nullable": true
        },
        "additionalTaxId": {
          "type": "string",
          "description": "The additional tax ID of the company (e.g. SIRET in France, Codice Destinatario in Italy, SST in Malaysia)",
          "x-nullable": true
        },
        "additionalTaxId2": {
          "type": "string",
          "description": "The additional tax ID of the company (e.g. Codice Fiscale in Italy, BRN in Malaysia)",
          "x-nullable": true
        },
        "invoiceNetworkIdentity": {
          "$ref": "#/definitions/InvoiceNetworkIdentityModel"
        },
        "address": {
          "$ref": "#/definitions/AddressModel"
        },
        "canCheckOutOnAr": {
          "type": "boolean",
          "description": "Whether or not the company is allowed to check out on AR / invoice"
        },
        "ratePlans": {
          "type": "array",
          "description": "Rate plans that can be booked by this company",
          "items": {
            "$ref": "#/definitions/CreateRatePlanCompanyModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "UMBRELLA",
        "propertyId": "MUC",
        "name": "Umbrella Corp.",
        "invoicingEmail": "umbrella@corp.com",
        "taxId": "Tax 123456",
        "additionalTaxId": "123456789",
        "additionalTaxId2": "987654321",
        "invoiceNetworkIdentity": {
          "network": "Peppol",
          "id": "0208:123456789"
        },
        "address": {
          "addressLine1": "Marienplatz 1",
          "postalCode": "80331",
          "city": "M\u00FCnchen",
          "countryCode": "DE"
        },
        "canCheckOutOnAr": true,
        "ratePlans": [
          {
            "id": "MUC-DBL",
            "corporateCode": "UMBRELLAINC"
          }
        ]
      }
    },
    "CreateCompanyRatePlanModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Company ID that can use this rate plan"
        },
        "corporateCode": {
          "type": "string",
          "description": "Optional rate plan code that is used by the company. Default is companyCode-ratePlanCode.\nSame code can be specified for several rate plans in one company.\nNo two companies can have a rate plan with the same code.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "CreateNoShowPolicyModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "name",
        "propertyId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the no-show policy, used to assemble its id",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "name": {
          "type": "object",
          "description": "The name for the no-show policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the no-show policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the no-show policy will be created"
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "NONREF",
        "name": {
          "en": "No-Show Fee",
          "de": "No-Show Fee"
        },
        "description": {
          "en": "100% of the accommodation fees, for the complete stay.",
          "de": "100% of the accommodation fees, for the complete stay."
        },
        "propertyId": "MUC",
        "fee": {
          "vatType": "Null",
          "fixedValue": {
            "amount": 100.0,
            "currency": "EUR"
          }
        }
      }
    },
    "CreatePricingRuleModel": {
      "type": "object",
      "required": [
        "baseRatePlanId",
        "type",
        "value"
      ],
      "properties": {
        "baseRatePlanId": {
          "type": "string",
          "description": "The id of the rate plan that will be used as base when calculating the rates.\nThe derivation level of the rate plan used as base rate plan cannot be greater than 2"
        },
        "type": {
          "type": "string",
          "description": "The type used to control the calculation of the difference to the rates of the defined base\nrate plan",
          "enum": [
            "Absolute",
            "Percent"
          ]
        },
        "value": {
          "type": "number",
          "description": "The value used to control the calculation of the difference to the rates of the defined base\nrate plan. It can be a positive and a negative value. The system will prevent you to define\na value that would lead to negative rates",
          "format": "double"
        }
      },
      "additionalProperties": false
    },
    "CreateRatePlanCompanyModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Rate plan ID that is used by this company"
        },
        "corporateCode": {
          "type": "string",
          "description": "Optional rate plan code that is used by this company. Default is companyCode-ratePlanCode.\nSame code can be specified for several rate plans in one company.\nNo two companies can have a rate plan with the same code.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "CreateRatePlanModel": {
      "type": "object",
      "required": [
        "cancellationPolicyId",
        "channelCodes",
        "code",
        "description",
        "minGuaranteeType",
        "name",
        "propertyId",
        "timeSliceDefinitionId",
        "unitGroupId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the rate plan that can be shown in reports and table views",
          "maxLength": 20,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property for which the rate plan will be created"
        },
        "unitGroupId": {
          "type": "string",
          "description": "The id of the unit group offered with this rate plan"
        },
        "cancellationPolicyId": {
          "type": "string",
          "description": "The id of the cancellation policy valid for this rate plan"
        },
        "noShowPolicyId": {
          "type": "string",
          "description": "The id of the no-show policy valid for this rate plan",
          "x-nullable": true
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the rate plan is sold through",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          }
        },
        "promoCodes": {
          "type": "array",
          "description": "The rate codes for promotional and hidden rates. If at least one code is set the rate will be not publicly visible\nanymore and only be offered when one of the promo codes is given in the offer request.\nFor backward compatibility it is still not possible to set multiple promo codes.",
          "items": {
            "type": "string"
          },
          "x-nullable": true
        },
        "isSubjectToCityTax": {
          "type": "boolean",
          "description": "Whether the rate plan is subject to city tax or not.\nDefault value is \u0060true\u0060",
          "x-nullable": true
        },
        "timeSliceDefinitionId": {
          "type": "string",
          "description": "Defines the time periods for which the unit group related to this rate plan is rented out"
        },
        "name": {
          "type": "object",
          "description": "The name for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee to be provided when this rate plan is booked so\nthe reservation will be guaranteed to the guest",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "priceCalculationMode": {
          "type": "string",
          "description": "The calculation mode is used when calculating the adults\u0027 surcharges and derived rates.\nDefaults to Truncate. Example: for a rate of 125.99 and a surcharge of \u002B10%,\nwhen Truncate is selected, the result would be 125.99 \u002B 12 = 137.99\nWhen Round is selected, the result would be 125.99 \u002B 12.60 = 138.59",
          "enum": [
            "Truncate",
            "Round"
          ],
          "x-nullable": true
        },
        "bookingPeriods": {
          "type": "array",
          "description": "Time periods when the rate plan is bookable",
          "items": {
            "$ref": "#/definitions/BookingPeriodModel"
          },
          "x-nullable": true
        },
        "restrictions": {
          "$ref": "#/definitions/BookingRestrictionsModel"
        },
        "pricingRule": {
          "$ref": "#/definitions/CreatePricingRuleModel"
        },
        "surcharges": {
          "type": "array",
          "description": "Additional charges for more than single occupancy. The percent or absolute value will be added to\nthe manually defined or calculated derived rates.\nThe values for \u0027adults\u0027 must be unique within the list and starting from occupancy of 2 adults. Values higher than the maximum unit group occupancy will be silently ignored.\nThe surcharges are required for all possible occupancies defined by the \u0027MaxPersons\u0027 of the unit group.",
          "items": {
            "$ref": "#/definitions/SurchargeModel"
          },
          "x-nullable": true
        },
        "ageCategories": {
          "type": "array",
          "description": "Additional charges per age category.",
          "items": {
            "$ref": "#/definitions/RatePlanAgeCategoryModel"
          },
          "x-nullable": true
        },
        "includedServices": {
          "type": "array",
          "description": "Services that are included in the rate plan",
          "items": {
            "$ref": "#/definitions/RatePlanServiceModel"
          },
          "x-nullable": true
        },
        "companies": {
          "type": "array",
          "description": "Companies that can use this rate plan",
          "items": {
            "$ref": "#/definitions/CreateCompanyRatePlanModel"
          },
          "x-nullable": true
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.\nThis is a temporary field, avoid using it.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          },
          "x-nullable": true
        },
        "marketSegmentId": {
          "type": "string",
          "description": "The id of the market segment for this rate plan",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "NONREF",
        "propertyId": "MUC",
        "unitGroupId": "MUC-DBL",
        "cancellationPolicyId": "MUC-FLE",
        "channelCodes": [
          "Direct",
          "BookingCom",
          "Ibe"
        ],
        "promoCodes": [
          "APA55100",
          "DISCOUNT20"
        ],
        "isSubjectToCityTax": true,
        "timeSliceDefinitionId": "MUC-NIGHT",
        "name": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "description": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "minGuaranteeType": "PM6Hold",
        "priceCalculationMode": "Truncate",
        "bookingPeriods": [
          {
            "from": "2026-08-25T13:48:09.6809666\u002B02:00",
            "to": "2026-09-08T13:48:09.6809666\u002B02:00"
          },
          {
            "from": "2026-09-11T13:48:09.6809666\u002B02:00",
            "to": "2026-10-31T13:48:09.6809666\u002B02:00"
          }
        ],
        "restrictions": {
          "minAdvance": {
            "hours": 12,
            "days": 180
          },
          "maxAdvance": {
            "months": 24
          }
        },
        "pricingRule": {
          "baseRatePlanId": "MUC-NONREF-SGL",
          "type": "Absolute",
          "value": 20.00
        },
        "surcharges": [
          {
            "adults": 2,
            "type": "Absolute",
            "value": 10.0
          }
        ],
        "ageCategories": [
          {
            "id": "MUC-BABY",
            "surcharges": [
              {
                "adults": 1,
                "value": 20.0
              }
            ]
          }
        ],
        "includedServices": [
          {
            "serviceId": "MUC-BRKF",
            "grossPrice": {
              "amount": 10.0,
              "currency": "EUR"
            }
          }
        ],
        "companies": [
          {
            "id": "MUC-APA",
            "corporateCode": "APA-DBL"
          }
        ],
        "accountingConfigs": [
          {
            "state": "Unknown",
            "vatType": "Normal",
            "serviceType": "FoodAndBeverages",
            "subAccountId": "ALCO",
            "validFrom": "2021-01-01"
          }
        ],
        "marketSegmentId": "BUSR"
      }
    },
    "CreateServiceModel": {
      "type": "object",
      "required": [
        "code",
        "defaultGrossPrice",
        "description",
        "name",
        "postNextDay",
        "pricingUnit",
        "propertyId"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code for the service that can be shown in reports and table views",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "name": {
          "type": "object",
          "description": "The name for the service",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the service",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the item will be created"
        },
        "defaultGrossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "pricingUnit": {
          "type": "string",
          "description": "Defines the granularity for which this item is offered and priced.",
          "enum": [
            "Room",
            "Person"
          ]
        },
        "postNextDay": {
          "type": "boolean",
          "description": "Whether the service is delivered and posted on the same business date as the accommodation, or on the next day."
        },
        "availability": {
          "$ref": "#/definitions/AvailabilityModel"
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the service is sold through. When no channels are defined, the service is sold only in a package",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          },
          "x-nullable": true
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.\nThis is a temporary field, avoid using it.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          },
          "x-nullable": true
        },
        "ageCategoryId": {
          "type": "string",
          "description": "The id of the age category associated with this service.",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "code": "BRK",
        "name": {
          "en": "Breakfast",
          "de": "Fr\u00FChst\u00FCck"
        },
        "description": {
          "en": "Yummy yummy breakfast",
          "de": "Leckeres Fr\u00FChst\u00FCck"
        },
        "propertyId": "MUC",
        "defaultGrossPrice": {
          "amount": 20.0,
          "currency": "EUR"
        },
        "pricingUnit": "Person",
        "postNextDay": true,
        "availability": {
          "mode": "Daily",
          "quantity": 3,
          "daysOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ]
        },
        "channelCodes": [
          "Direct",
          "Ibe",
          "BookingCom",
          "ChannelManager"
        ],
        "accountingConfigs": [
          {
            "state": "Unknown",
            "vatType": "Normal",
            "serviceType": "FoodAndBeverages",
            "subAccountId": "ALCO",
            "validFrom": "2021-01-01"
          }
        ],
        "ageCategoryId": "MUC-BABY"
      }
    },
    "EmbeddedCancellationPolicyModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The cancellation policy id"
        },
        "code": {
          "type": "string",
          "description": "The code for the cancellation policy that can be shown in reports and table views",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the cancellation policy",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the cancellation policy",
          "x-nullable": true
        },
        "periodPriorToArrival": {
          "$ref": "#/definitions/PeriodModel"
        }
      },
      "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
    },
    "EmbeddedNoShowPolicyModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The no-show policy id"
        },
        "code": {
          "type": "string",
          "description": "The code for the no-show policy that can be shown in reports and table views",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name for the no-show policy",
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "The description for the no-show policy",
          "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
    },
    "EmbeddedTimeSliceDefinitionModel": {
      "type": "object",
      "required": [
        "checkInTime",
        "checkOutTime",
        "id",
        "name",
        "template"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The time slice definition id"
        },
        "name": {
          "type": "string",
          "description": "The name for the time slice definition",
          "minLength": 1
        },
        "template": {
          "type": "string",
          "description": "The template used by the time slice defintion",
          "enum": [
            "DayUse",
            "OverNight"
          ]
        },
        "checkInTime": {
          "type": "string",
          "description": "The check-in time for reservations based on this rate plan\u003Cbr /\u003EA time (without fractional second part) as defined in the \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        },
        "checkOutTime": {
          "type": "string",
          "description": "The check-out time for reservations based on this rate plan\u003Cbr /\u003EA time (without fractional second part) as defined in the \u003Ca href=\u0022https://en.wikipedia.org/wiki/ISO_8601\u0022\u003EISO8601:2004\u003C/a\u003E"
        }
      },
      "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
    },
    "FeeDetailsModel": {
      "type": "object",
      "required": [
        "vatType"
      ],
      "properties": {
        "vatType": {
          "type": "string",
          "description": "VAT that applies for the fee",
          "enum": [
            "Null",
            "VeryReduced",
            "Reduced",
            "Normal",
            "Without",
            "Special",
            "Special1",
            "Special2",
            "ReducedCovid19",
            "NormalCovid19",
            "Mixed"
          ]
        },
        "fixedValue": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "percentValue": {
          "$ref": "#/definitions/PercentValueModel"
        }
      },
      "additionalProperties": false
    },
    "InvoiceNetworkIdentityModel": {
      "type": "object",
      "required": [
        "id",
        "network"
      ],
      "properties": {
        "network": {
          "type": "string",
          "description": "The Network through which to send the Invoice\ne. g. Peppol",
          "enum": [
            "Peppol"
          ]
        },
        "id": {
          "type": "string",
          "description": "The Id of the company at the network.\ne.g. \u00220208:123456789\u0022",
          "minLength": 1
        }
      },
      "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
    },
    "NoShowPolicyCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The no-show policy ID"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-NONREF"
      }
    },
    "NoShowPolicyItemModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "id",
        "name",
        "propertyId"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The no-show policy id"
        },
        "code": {
          "type": "string",
          "description": "The code for the policy"
        },
        "name": {
          "type": "string",
          "description": "The name for the no-show policy",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description for the no-show policy",
          "minLength": 1
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the no-show policy was created"
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false
    },
    "NoShowPolicyListModel": {
      "type": "object",
      "required": [
        "count",
        "noShowPolicies"
      ],
      "properties": {
        "noShowPolicies": {
          "type": "array",
          "description": "List of no-show policies",
          "items": {
            "$ref": "#/definitions/NoShowPolicyItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "noShowPolicies": [
          {
            "id": "MUC-FLEX",
            "code": "FLEX",
            "name": "No-Show Fee",
            "description": "100 Euro of the accommodation fees, for the complete stay. Reduced VAT applies.",
            "propertyId": "MUC",
            "fee": {
              "vatType": "Reduced",
              "fixedValue": {
                "amount": 100.0,
                "currency": "EUR"
              }
            }
          },
          {
            "id": "BER-NONREF",
            "code": "NONREF",
            "name": "No-Show Fee",
            "description": "100% of the accommodation fees, for the complete stay. Reduced VAT applies.",
            "propertyId": "BER",
            "fee": {
              "vatType": "Reduced",
              "percentValue": {
                "percent": 100,
                "limit": 1,
                "includeServiceIds": [
                  "MUC-BRK"
                ]
              }
            }
          }
        ],
        "count": 2
      }
    },
    "NoShowPolicyModel": {
      "type": "object",
      "required": [
        "code",
        "description",
        "fee",
        "id",
        "name",
        "propertyId"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The no-show policy id"
        },
        "code": {
          "type": "string",
          "description": "The code for the policy",
          "maxLength": 10,
          "minLength": 3,
          "pattern": "^[a-zA-Z0-9_]*$"
        },
        "name": {
          "type": "object",
          "description": "The name for the no-show policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the no-show policy",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "propertyId": {
          "type": "string",
          "description": "The id of the property where the no-show policy was created"
        },
        "fee": {
          "$ref": "#/definitions/FeeDetailsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-NOSHOW",
        "code": "NOSHOW",
        "name": {
          "en": "No-Show Fee",
          "de": "No-Show Fee"
        },
        "description": {
          "en": "100% of the accommodation fees, for the complete stay. Reduced VAT applies.",
          "de": "100% of the accommodation fees, for the complete stay. Reduced VAT applies."
        },
        "propertyId": "MUC",
        "fee": {
          "vatType": "Reduced",
          "percentValue": {
            "percent": 100,
            "limit": 1,
            "includeServiceIds": [
              "MUC-BRK"
            ]
          }
        }
      }
    },
    "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
    },
    "PercentValueModel": {
      "type": "object",
      "required": [
        "percent"
      ],
      "properties": {
        "percent": {
          "type": "integer",
          "description": "Percent to take from the base. Must be between 0 and 100.",
          "format": "int32",
          "maximum": 100,
          "minimum": 0
        },
        "limit": {
          "type": "integer",
          "description": "If set, limits the calculation base to the specified number of time slices, starting from the beginning.\n\nIf not set, the entire stay will be used as a base.",
          "format": "int32",
          "x-nullable": true
        },
        "includeServiceIds": {
          "type": "array",
          "description": "Services included in the calculation base. If none are set, only charges for the unit will be used.\n\nThe services are only included, if they are part of the rate plan. Extra services are ignored.",
          "items": {
            "type": "string"
          },
          "x-nullable": true
        }
      },
      "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
    },
    "PricingRuleModel": {
      "type": "object",
      "required": [
        "baseRatePlan",
        "type",
        "value"
      ],
      "properties": {
        "baseRatePlan": {
          "$ref": "#/definitions/EmbeddedRatePlanModel"
        },
        "type": {
          "type": "string",
          "description": "The type used to control the calculation of the difference to the rates of the defined base\nrate plan",
          "enum": [
            "Absolute",
            "Percent"
          ]
        },
        "value": {
          "type": "number",
          "description": "The value used to control the calculation of the difference to the rates of the defined base\nrate plan. It can be a positive and a negative value",
          "format": "double"
        }
      },
      "additionalProperties": false
    },
    "PromoCodeListModel": {
      "type": "object",
      "required": [
        "count",
        "promoCodes"
      ],
      "properties": {
        "promoCodes": {
          "type": "array",
          "description": "List of existing promo codes",
          "items": {
            "$ref": "#/definitions/PromoCodeModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "promoCodes": [
          {
            "code": "APALEO",
            "relatedRateplanIds": [
              "BER-APALEO_FREE-SGL",
              "BER-APALEO_FREE-DBL",
              "MUC-APALEO_KING-SUITE"
            ]
          }
        ],
        "count": 5
      }
    },
    "PromoCodeModel": {
      "type": "object",
      "required": [
        "code",
        "relatedRateplanIds"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of special rate or discount\nor agreement between the hotel and an organization"
        },
        "relatedRateplanIds": {
          "type": "array",
          "description": "All rate plan IDs having this code",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "RateItemModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Date and time the rate 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 rate 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"
        },
        "price": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "includedServicesPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "calculatedPrices": {
          "type": "array",
          "description": "A list of prices for occupancies 2 or higher. Only set, if the rate plan defines surcharges for different occupancies",
          "items": {
            "$ref": "#/definitions/CalculatedRateModel"
          },
          "x-nullable": true
        },
        "restrictions": {
          "$ref": "#/definitions/RateRestrictionsModel"
        }
      },
      "additionalProperties": false
    },
    "RateListModel": {
      "type": "object",
      "required": [
        "count",
        "rates"
      ],
      "properties": {
        "rates": {
          "type": "array",
          "description": "List of rates",
          "items": {
            "$ref": "#/definitions/RateItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "rates": [
          {
            "from": "2026-09-01T17:00:00\u002B02:00",
            "to": "2026-09-02T11:00:00\u002B02:00",
            "price": {
              "amount": 123.0,
              "currency": "EUR"
            },
            "calculatedPrices": [
              {
                "adults": 2,
                "price": {
                  "amount": 133.0,
                  "currency": "EUR"
                }
              }
            ],
            "restrictions": {
              "minLengthOfStay": 2,
              "maxLengthOfStay": 30,
              "closed": false,
              "closedOnArrival": true,
              "closedOnDeparture": true
            }
          }
        ],
        "count": 0
      }
    },
    "RatePatchModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The start of the time range to filter the rates by. All rates where the from date and time is equal or later than\nthe specified date and optional time will be affected\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": "The end of the time range to filter the rates by. All rates where the from date and time is earlier than\nthe specified date and optional time will be affected\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"
        },
        "weekDays": {
          "type": "array",
          "description": "The weekdays that will be patched. If not specified, all weekdays will be patched.",
          "items": {
            "type": "string",
            "enum": [
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday",
              "Sunday"
            ]
          },
          "x-nullable": true
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Operation"
          }
        }
      },
      "additionalProperties": false
    },
    "RatePlanAgeCategoryModel": {
      "type": "object",
      "required": [
        "id",
        "surcharges"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the age category"
        },
        "surcharges": {
          "type": "array",
          "description": "Additional charges for the current age category. The absolute value will be added to the manually defined or calculated derived rates.\nThe values for \u0027adults\u0027 must be unique within the list, and starting from 1. Values equal or higher than\nthe maximum unit group occupancy will be silently ignored.",
          "items": {
            "$ref": "#/definitions/AgeCategorySurchargeModel"
          }
        }
      },
      "additionalProperties": false
    },
    "RatePlanCompanyModel": {
      "type": "object",
      "required": [
        "code",
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Rate plan ID that is used by this company"
        },
        "code": {
          "type": "string",
          "description": "Rate plan code that is used by this company"
        },
        "corporateCode": {
          "type": "string",
          "description": "Company rate plan code, identifying the company \u002B rate plan pair. Is used is offers.",
          "x-nullable": true
        },
        "name": {
          "type": "string",
          "description": "The name of the rate plan",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "RatePlanCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The rate plan id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-NONREF-DBL"
      }
    },
    "RatePlanItemModel": {
      "type": "object",
      "required": [
        "accountingConfigs",
        "cancellationPolicy",
        "channelCodes",
        "code",
        "derivationLevel",
        "description",
        "id",
        "isBookable",
        "isDerived",
        "isSubjectToCityTax",
        "minGuaranteeType",
        "name",
        "noShowPolicy",
        "property",
        "timeSliceDefinition",
        "unitGroup"
      ],
      "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"
        },
        "name": {
          "type": "string",
          "description": "The name for the rate plan",
          "minLength": 1
        },
        "description": {
          "type": "string",
          "description": "The description for the rate plan",
          "minLength": 1
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee to be provided when this rate plan is booked so\nthe reservation will be guaranteed to the guest",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "priceCalculationMode": {
          "type": "string",
          "description": "The calculation mode is used when calculating the adults\u0027 surcharges and derived rates.\nDefaults to Truncate. Example: for a rate of 125.99 and a surcharge of \u002B10%,\nwhen Truncate is selected, the result would be 125.99 \u002B 12 = 137.99\nWhen Round is selected, the result would be 125.99 \u002B 12.60 = 138.59",
          "enum": [
            "Truncate",
            "Round"
          ]
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "cancellationPolicy": {
          "$ref": "#/definitions/EmbeddedCancellationPolicyModel"
        },
        "noShowPolicy": {
          "$ref": "#/definitions/EmbeddedNoShowPolicyModel"
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the rate plan is sold through",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          }
        },
        "promoCodes": {
          "type": "array",
          "description": "The rate codes for promotional and hidden rates. If at least one code is set the rate will be not publicly visible\nanymore and only be offered when one of the promo codes is given in the offer request.\nFor backward compatibility it is still not possible to set multiple promo codes.",
          "items": {
            "type": "string"
          },
          "x-nullable": true
        },
        "timeSliceDefinition": {
          "$ref": "#/definitions/EmbeddedTimeSliceDefinitionModel"
        },
        "restrictions": {
          "$ref": "#/definitions/BookingRestrictionsModel"
        },
        "bookingPeriods": {
          "type": "array",
          "description": "Time periods when the rate plan is bookable",
          "items": {
            "$ref": "#/definitions/BookingPeriodModel"
          },
          "x-nullable": true
        },
        "isBookable": {
          "type": "boolean",
          "description": "Indicates whether the rate plan has an active booking period"
        },
        "isSubjectToCityTax": {
          "type": "boolean",
          "description": "Whether the rate plan is subject to city tax or not"
        },
        "pricingRule": {
          "$ref": "#/definitions/PricingRuleModel"
        },
        "isDerived": {
          "type": "boolean",
          "description": "Indicates whether the rates for this rate plan are derived from another rate plan"
        },
        "derivationLevel": {
          "type": "integer",
          "description": "Indicates the derivation level of the rate plan. When zero, it is a rate plan with manually managed prices.",
          "format": "int32"
        },
        "surcharges": {
          "type": "array",
          "description": "Additional charges for more than single occupancy. The percent or absolute value will be added to the manually defined or calculated derived rates.",
          "items": {
            "$ref": "#/definitions/SurchargeModel"
          },
          "x-nullable": true
        },
        "ageCategories": {
          "type": "array",
          "description": "Additional charges per age category.",
          "items": {
            "$ref": "#/definitions/RatePlanAgeCategoryModel"
          },
          "x-nullable": true
        },
        "includedServices": {
          "type": "array",
          "description": "Services that are included in the rate plan",
          "items": {
            "$ref": "#/definitions/RatePlanServiceItemModel"
          },
          "x-nullable": true
        },
        "companies": {
          "type": "array",
          "description": "Companies that can use this rate plan",
          "items": {
            "$ref": "#/definitions/CompanyRatePlanModel"
          },
          "x-nullable": true
        },
        "ratesRange": {
          "$ref": "#/definitions/RatesRangeModel"
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          }
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "isArchived": {
          "type": "boolean",
          "description": "Whether the rate plan is archived or not.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "RatePlanListModel": {
      "type": "object",
      "required": [
        "count",
        "ratePlans"
      ],
      "properties": {
        "ratePlans": {
          "type": "array",
          "description": "List of rate plans",
          "items": {
            "$ref": "#/definitions/RatePlanItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "ratePlans": [
          {
            "id": "MUC-NONREF-DBL",
            "code": "NONREF",
            "name": "Non Refundable",
            "description": "Non Refundable",
            "minGuaranteeType": "PM6Hold",
            "priceCalculationMode": "Truncate",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "cancellationPolicy": {
              "id": "MUC-FLE",
              "code": "FLE",
              "name": "Flexible",
              "description": "Free cancellation until 36 hours before arrival."
            },
            "noShowPolicy": {
              "id": "MUC-NONREF",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable"
            },
            "channelCodes": [
              "Direct",
              "BookingCom",
              "Ibe"
            ],
            "promoCodes": [
              "APA55100"
            ],
            "timeSliceDefinition": {
              "id": "MUC-NIGHT",
              "name": "Over Night",
              "template": "OverNight",
              "checkInTime": "17:00:00",
              "checkOutTime": "10:00:00"
            },
            "isBookable": false,
            "isSubjectToCityTax": false,
            "isDerived": false,
            "derivationLevel": 0,
            "ratesRange": {
              "from": "2026-09-11",
              "to": "2026-09-21"
            },
            "accountingConfigs": [
              {
                "state": "Unknown",
                "vatType": "ReducedCovid19",
                "serviceType": "FoodAndBeverages",
                "validFrom": "2026-09-01"
              }
            ],
            "marketSegment": {
              "id": "CORP",
              "code": "CORP",
              "name": "Corporate Groups"
            }
          },
          {
            "id": "MUC-FLEX-DBL",
            "code": "FLEX",
            "name": "Flexible",
            "description": "Flexible",
            "minGuaranteeType": "PM6Hold",
            "priceCalculationMode": "Round",
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "unitGroup": {
              "id": "MUC-DBL",
              "code": "DBL",
              "name": "Double",
              "description": "Double",
              "type": "BedRoom"
            },
            "cancellationPolicy": {
              "id": "MUC-FLE",
              "code": "FLE",
              "name": "Flexible",
              "description": "Free cancellation until 36 hours before arrival."
            },
            "noShowPolicy": {
              "id": "MUC-NONREF",
              "code": "NONREF",
              "name": "Non Refundable",
              "description": "Non Refundable"
            },
            "channelCodes": [
              "Direct",
              "BookingCom",
              "Ibe"
            ],
            "timeSliceDefinition": {
              "id": "MUC-NIGHT",
              "name": "Over Night",
              "template": "OverNight",
              "checkInTime": "17:00:00",
              "checkOutTime": "10:00:00"
            },
            "isBookable": false,
            "isSubjectToCityTax": false,
            "isDerived": false,
            "derivationLevel": 0,
            "accountingConfigs": [
              {
                "state": "Unknown",
                "vatType": "ReducedCovid19",
                "serviceType": "FoodAndBeverages",
                "validFrom": "2026-09-01"
              }
            ],
            "marketSegment": {
              "id": "LEISURE",
              "code": "LEISURE",
              "name": "Leisure Travelers"
            },
            "isArchived": true
          }
        ],
        "count": 0
      }
    },
    "RatePlanModel": {
      "type": "object",
      "required": [
        "accountingConfigs",
        "cancellationPolicy",
        "channelCodes",
        "code",
        "derivationLevel",
        "description",
        "id",
        "isBookable",
        "isDerived",
        "isSubjectToCityTax",
        "minGuaranteeType",
        "name",
        "noShowPolicy",
        "property",
        "timeSliceDefinition",
        "unitGroup"
      ],
      "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"
        },
        "name": {
          "type": "object",
          "description": "The name for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee to be provided when this rate plan is booked so\nthe reservation will be guaranteed to the guest",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "priceCalculationMode": {
          "type": "string",
          "description": "The calculation mode is used when calculating the adults\u0027 surcharges and derived rates.\nDefaults to Truncate. Example: for a rate of 125.99 and a surcharge of \u002B10%,\nwhen Truncate is selected, the result would be 125.99 \u002B 12 = 137.99\nWhen Round is selected, the result would be 125.99 \u002B 12.60 = 138.59",
          "enum": [
            "Truncate",
            "Round"
          ]
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "unitGroup": {
          "$ref": "#/definitions/EmbeddedUnitGroupModel"
        },
        "cancellationPolicy": {
          "$ref": "#/definitions/EmbeddedCancellationPolicyModel"
        },
        "noShowPolicy": {
          "$ref": "#/definitions/EmbeddedNoShowPolicyModel"
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the rate plan is sold through",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          }
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          }
        },
        "promoCodes": {
          "type": "array",
          "description": "The rate codes for promotional and hidden rates. If at least one code is set the rate will be not publicly visible\nanymore and only be offered when one of the promo codes is given in the offer request.\nFor backward compatibility it is still not possible to set multiple promo codes.",
          "items": {
            "type": "string"
          },
          "x-nullable": true
        },
        "timeSliceDefinition": {
          "$ref": "#/definitions/EmbeddedTimeSliceDefinitionModel"
        },
        "restrictions": {
          "$ref": "#/definitions/BookingRestrictionsModel"
        },
        "bookingPeriods": {
          "type": "array",
          "description": "Time periods when the rate plan is bookable",
          "items": {
            "$ref": "#/definitions/BookingPeriodModel"
          },
          "x-nullable": true
        },
        "isBookable": {
          "type": "boolean",
          "description": "Indicates whether the rate plan has an active booking period"
        },
        "isSubjectToCityTax": {
          "type": "boolean",
          "description": "Whether the rate plan is subject to city tax or not.\nDefault value is \u0060true\u0060"
        },
        "pricingRule": {
          "$ref": "#/definitions/PricingRuleModel"
        },
        "isDerived": {
          "type": "boolean",
          "description": "Indicates whether the rates for this rate plan are derived from another rate plan"
        },
        "derivationLevel": {
          "type": "integer",
          "description": "Indicates the derivation level of the rate plan. When zero, it is a rate plan with manually managed prices.",
          "format": "int32"
        },
        "surcharges": {
          "type": "array",
          "description": "Additional charges for more than single occupancy. The percent or absolute value will be added to the manually defined or calculated derived rates.",
          "items": {
            "$ref": "#/definitions/SurchargeModel"
          },
          "x-nullable": true
        },
        "ageCategories": {
          "type": "array",
          "description": "Additional charges per age category.",
          "items": {
            "$ref": "#/definitions/RatePlanAgeCategoryModel"
          },
          "x-nullable": true
        },
        "includedServices": {
          "type": "array",
          "description": "Services that are included in the rate plan",
          "items": {
            "$ref": "#/definitions/RatePlanServiceModel"
          },
          "x-nullable": true
        },
        "companies": {
          "type": "array",
          "description": "Companies that can use this rate plan",
          "items": {
            "$ref": "#/definitions/CompanyRatePlanModel"
          },
          "x-nullable": true
        },
        "ratesRange": {
          "$ref": "#/definitions/RatesRangeModel"
        },
        "marketSegment": {
          "$ref": "#/definitions/EmbeddedMarketSegmentModel"
        },
        "isArchived": {
          "type": "boolean",
          "description": "Whether the rate plan is archived or not",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-NONREF-DBL",
        "code": "NONREF",
        "name": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "description": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "minGuaranteeType": "PM6Hold",
        "priceCalculationMode": "Truncate",
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "unitGroup": {
          "id": "MUC-DBL",
          "code": "DBL",
          "name": "Double",
          "description": "Double",
          "type": "BedRoom"
        },
        "cancellationPolicy": {
          "id": "MUC-FLE",
          "code": "FLE",
          "name": "Flexible",
          "description": "Free cancellation until 36 hours before arrival."
        },
        "noShowPolicy": {
          "id": "MUC-NONREF",
          "code": "NONREF",
          "name": "Non Refundable",
          "description": "Non Refundable"
        },
        "channelCodes": [
          "Direct",
          "BookingCom",
          "Ibe"
        ],
        "accountingConfigs": [
          {
            "state": "Unknown",
            "vatType": "Normal",
            "serviceType": "FoodAndBeverages",
            "subAccountId": "ALCO",
            "validFrom": "2021-01-01"
          }
        ],
        "promoCodes": [
          "APA55100",
          "DISCOUNT20"
        ],
        "timeSliceDefinition": {
          "id": "MUC-NIGHT",
          "name": "Over Night",
          "template": "OverNight",
          "checkInTime": "17:00:00",
          "checkOutTime": "10:00:00"
        },
        "restrictions": {
          "minAdvance": {
            "hours": 12,
            "days": 180
          },
          "maxAdvance": {
            "months": 24
          }
        },
        "bookingPeriods": [
          {
            "from": "2026-08-25T13:48:09.6809666\u002B02:00",
            "to": "2026-09-08T13:48:09.6809666\u002B02:00"
          },
          {
            "from": "2026-09-11T13:48:09.6809666\u002B02:00",
            "to": "2026-10-31T13:48:09.6809666\u002B02:00"
          }
        ],
        "isBookable": false,
        "isSubjectToCityTax": false,
        "pricingRule": {
          "baseRatePlan": {
            "id": "MUC-NONREF_SGL",
            "code": "NONREF",
            "name": "Non Refundable",
            "description": "Non Refundable",
            "isSubjectToCityTax": false
          },
          "type": "Absolute",
          "value": 20.00
        },
        "isDerived": true,
        "derivationLevel": 1,
        "surcharges": [
          {
            "adults": 2,
            "type": "Absolute",
            "value": 10.0
          }
        ],
        "ageCategories": [
          {
            "id": "MUC-BABY",
            "surcharges": [
              {
                "adults": 1,
                "value": 20.0
              },
              {
                "adults": 2,
                "value": 15.5
              }
            ]
          }
        ],
        "includedServices": [
          {
            "serviceId": "MUC-WLAN",
            "grossPrice": {
              "amount": 5.0,
              "currency": "EUR"
            }
          }
        ],
        "companies": [
          {
            "id": "MUC-APA",
            "code": "APA",
            "corporateCode": "APA-DBL",
            "name": "apaleo"
          }
        ],
        "ratesRange": {
          "from": "2026-09-21",
          "to": "2026-10-11"
        },
        "marketSegment": {
          "id": "CORP",
          "code": "CORP",
          "name": "Corporate Groups"
        },
        "isArchived": true
      }
    },
    "RatePlanServiceItemModel": {
      "type": "object",
      "required": [
        "grossPrice",
        "pricingMode",
        "service"
      ],
      "properties": {
        "service": {
          "$ref": "#/definitions/EmbeddedServiceModel"
        },
        "grossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "pricingMode": {
          "type": "string",
          "description": "Whether the service price is included in or added to the base rate. The property defaults to \u0060Included\u0060.",
          "enum": [
            "Included",
            "Additional"
          ]
        }
      },
      "additionalProperties": false
    },
    "RatePlanServiceModel": {
      "type": "object",
      "required": [
        "grossPrice",
        "serviceId"
      ],
      "properties": {
        "serviceId": {
          "type": "string",
          "description": "Service id to be included in the rate plan"
        },
        "grossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "pricingMode": {
          "type": "string",
          "description": "Whether the service price is included in or added to the base rate. The property defaults to \u0060Included\u0060.",
          "enum": [
            "Included",
            "Additional"
          ],
          "x-nullable": true
        }
      },
      "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
    },
    "RatesPatchRequestModel": {
      "type": "object",
      "properties": {
        "rates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RatePatchModel"
          },
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "rates": [
          {
            "from": "2026-09-01",
            "to": "2026-09-02",
            "weekDays": [
              "Monday",
              "Wednesday"
            ],
            "operations": [
              {
                "value": {
                  "amount": 25.0,
                  "currency": "EUR"
                },
                "path": "/price",
                "op": "replace"
              },
              {
                "value": true,
                "path": "restrictions/closedOnArrival",
                "op": "replace"
              }
            ]
          }
        ]
      }
    },
    "RatesRangeModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "The first date when the rate plan has rates set",
          "format": "date",
          "example": "2020-10-10"
        },
        "to": {
          "type": "string",
          "description": "The last date when the rate plan has rates set",
          "format": "date",
          "example": "2020-10-10"
        }
      },
      "additionalProperties": false
    },
    "ReplaceCompanyRatePlanModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Company ID that can use this rate plan"
        },
        "corporateCode": {
          "type": "string",
          "description": "Optional rate plan code that is used by the company. Default is companyCode-ratePlanCode.\nSame code can be specified for several rate plans in one company.\nNo two companies can have a rate plan with the same code.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ReplaceRateListModel": {
      "type": "object",
      "required": [
        "rates"
      ],
      "properties": {
        "rates": {
          "type": "array",
          "description": "List of rates",
          "items": {
            "$ref": "#/definitions/ReplaceRateModel"
          }
        }
      },
      "additionalProperties": false,
      "example": {
        "rates": [
          {
            "from": "2026-09-01T17:00:00\u002B02:00",
            "to": "2026-09-02T11:00:00\u002B02:00",
            "price": {
              "amount": 123.50,
              "currency": "EUR"
            },
            "restrictions": {
              "minLengthOfStay": 1,
              "maxLengthOfStay": 30,
              "closed": false,
              "closedOnArrival": true,
              "closedOnDeparture": true
            }
          }
        ]
      }
    },
    "ReplaceRateModel": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "from": {
          "type": "string",
          "description": "Date and time the rate 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 rate 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"
        },
        "price": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "restrictions": {
          "$ref": "#/definitions/RateRestrictionsModel"
        }
      },
      "additionalProperties": false,
      "example": {
        "from": "2026-09-01T17:00:00\u002B02:00",
        "to": "2026-09-02T11:00:00\u002B02:00",
        "price": {
          "amount": 123.50,
          "currency": "EUR"
        },
        "restrictions": {
          "minLengthOfStay": 1,
          "maxLengthOfStay": 30,
          "closed": false,
          "closedOnArrival": true,
          "closedOnDeparture": true
        }
      }
    },
    "ReplaceRatePlanModel": {
      "type": "object",
      "required": [
        "cancellationPolicyId",
        "channelCodes",
        "description",
        "minGuaranteeType",
        "name"
      ],
      "properties": {
        "name": {
          "type": "object",
          "description": "The name for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the rate plan",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "minGuaranteeType": {
          "type": "string",
          "description": "The minimum guarantee to be provided when this rate plan is booked so\nthe reservation will be guaranteed to the guest",
          "enum": [
            "PM6Hold",
            "CreditCard",
            "Prepayment",
            "Company"
          ]
        },
        "priceCalculationMode": {
          "type": "string",
          "description": "The calculation mode is used when calculating the adults\u0027 surcharges and derived rates.\nDefaults to Truncate. Example: for a rate of 125.99 and a surcharge of \u002B10%,\nwhen Truncate is selected, the result would be 125.99 \u002B 12 = 137.99\nWhen Round is selected, the result would be 125.99 \u002B 12.60 = 138.59",
          "enum": [
            "Truncate",
            "Round"
          ],
          "x-nullable": true
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the rate plan is sold through",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          }
        },
        "promoCodes": {
          "type": "array",
          "description": "The rate codes for promotional and hidden rates. If at least one code is set the rate will be not publicly visible\nanymore and only be offered when one of the promo codes is given in the offer request.\nFor backward compatibility it is still not possible to set multiple promo codes.",
          "items": {
            "type": "string"
          },
          "x-nullable": true
        },
        "isSubjectToCityTax": {
          "type": "boolean",
          "description": "Whether the rate plan is subject to city tax or not.\nDefault value is \u0060true\u0060",
          "x-nullable": true
        },
        "cancellationPolicyId": {
          "type": "string",
          "description": "The id of the cancellation policy valid for this rate plan"
        },
        "noShowPolicyId": {
          "type": "string",
          "description": "The id of the no-show policy valid for this rate plan",
          "x-nullable": true
        },
        "bookingPeriods": {
          "type": "array",
          "description": "Time periods when the rate plan is bookable",
          "items": {
            "$ref": "#/definitions/BookingPeriodModel"
          },
          "x-nullable": true
        },
        "restrictions": {
          "$ref": "#/definitions/BookingRestrictionsModel"
        },
        "includedServices": {
          "type": "array",
          "description": "Services that are included in the rate plan",
          "items": {
            "$ref": "#/definitions/RatePlanServiceModel"
          },
          "x-nullable": true
        },
        "companies": {
          "type": "array",
          "description": "Companies that can use this rate plan",
          "items": {
            "$ref": "#/definitions/ReplaceCompanyRatePlanModel"
          },
          "x-nullable": true
        },
        "pricingRule": {
          "$ref": "#/definitions/CreatePricingRuleModel"
        },
        "surcharges": {
          "type": "array",
          "description": "Additional charges for more than single occupancy. The percent or absolute value will be added to the manually defined or calculated derived rates.\nThe values for \u0027adults\u0027 must be unique within the list and starting from occupancy of 2 adults. Values higher than the maximum unit group occupancy will be silently ignored.\nThe surcharges are required for all possible occupancies defined by the \u0027MaxPersons\u0027 of the unit group.",
          "items": {
            "$ref": "#/definitions/SurchargeModel"
          },
          "x-nullable": true
        },
        "ageCategories": {
          "type": "array",
          "description": "Additional charges per age category.",
          "items": {
            "$ref": "#/definitions/RatePlanAgeCategoryModel"
          },
          "x-nullable": true
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          },
          "x-nullable": true
        },
        "marketSegmentId": {
          "type": "string",
          "description": "The id of the market segment for this rate plan",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "name": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "description": {
          "de": "Nicht Stornierbar",
          "en": "Non Refundable"
        },
        "minGuaranteeType": "PM6Hold",
        "priceCalculationMode": "Truncate",
        "channelCodes": [
          "Direct",
          "BookingCom",
          "Ibe"
        ],
        "cancellationPolicyId": "MUC-NONREF",
        "bookingPeriods": [
          {
            "from": "2026-08-25T13:48:09.6809666\u002B02:00",
            "to": "2026-09-08T13:48:09.6809666\u002B02:00"
          },
          {
            "from": "2026-09-11T13:48:09.6809666\u002B02:00",
            "to": "2026-10-31T13:48:09.6809666\u002B02:00"
          }
        ],
        "restrictions": {
          "minAdvance": {
            "hours": 12,
            "days": 180
          },
          "maxAdvance": {
            "months": 24
          }
        },
        "includedServices": [
          {
            "serviceId": "MUC-BRKF",
            "grossPrice": {
              "amount": 10.0,
              "currency": "EUR"
            }
          },
          {
            "serviceId": "MUC-WLAN",
            "grossPrice": {
              "amount": 5.0,
              "currency": "EUR"
            }
          }
        ],
        "companies": [
          {
            "id": "MUC-APA",
            "corporateCode": "APA-DBL"
          }
        ],
        "pricingRule": {
          "baseRatePlanId": "MUC-NONREF-SGL",
          "type": "Absolute",
          "value": 20.00
        },
        "surcharges": [
          {
            "adults": 2,
            "type": "Percent",
            "value": 10.0
          }
        ],
        "ageCategories": [
          {
            "id": "MUC-BABY",
            "surcharges": [
              {
                "adults": 1,
                "value": 10.0
              }
            ]
          },
          {
            "id": "MUC-CHILD",
            "surcharges": [
              {
                "adults": 1,
                "value": 40.0
              }
            ]
          }
        ],
        "marketSegmentId": "BUSR"
      }
    },
    "ServiceCreatedModel": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The item id"
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-BRKF"
      }
    },
    "ServiceItemModel": {
      "type": "object",
      "required": [
        "availability",
        "code",
        "defaultGrossPrice",
        "description",
        "id",
        "name",
        "postNextDay",
        "property",
        "serviceType",
        "vatType"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Id"
        },
        "name": {
          "type": "string",
          "description": "Name",
          "minLength": 1
        },
        "code": {
          "type": "string",
          "description": "The code for the service"
        },
        "description": {
          "type": "string",
          "description": "Description",
          "minLength": 1
        },
        "defaultGrossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "pricingUnit": {
          "type": "string",
          "description": "Defines per which unit (flat, room, person) this item is offered and priced",
          "enum": [
            "Room",
            "Person"
          ]
        },
        "postNextDay": {
          "type": "boolean",
          "description": "Whether the service is delivered and posted on the same business date as the accommodation, or on the next day."
        },
        "serviceType": {
          "type": "string",
          "description": "The service type, used by accounting to determine the correct revenue account",
          "enum": [
            "Other",
            "Accommodation",
            "FoodAndBeverages"
          ]
        },
        "vatType": {
          "type": "string",
          "description": "The vat type, used by accounting to determine the correct vat amount and account",
          "enum": [
            "Null",
            "VeryReduced",
            "Reduced",
            "Normal",
            "Without",
            "Special",
            "Special1",
            "Special2",
            "ReducedCovid19",
            "NormalCovid19",
            "Mixed"
          ]
        },
        "availability": {
          "$ref": "#/definitions/AvailabilityModel"
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "subAccountId": {
          "type": "string",
          "description": "ID of the custom sub-account, used by accounting to determine the correct revenue account",
          "x-nullable": true
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the service is sold through",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          },
          "x-nullable": true
        },
        "ageCategoryId": {
          "type": "string",
          "description": "The id of the age category associated with this service.",
          "x-nullable": true
        }
      },
      "additionalProperties": false
    },
    "ServiceListModel": {
      "type": "object",
      "required": [
        "count",
        "services"
      ],
      "properties": {
        "services": {
          "type": "array",
          "description": "List of packages",
          "items": {
            "$ref": "#/definitions/ServiceItemModel"
          }
        },
        "count": {
          "type": "integer",
          "description": "Total count of items",
          "format": "int64"
        }
      },
      "additionalProperties": false,
      "example": {
        "services": [
          {
            "id": "MUC-WIFI",
            "name": "High Speed Wifi",
            "code": "WIFI",
            "description": "High speed wifi access for 24 hours, up to four devices.",
            "defaultGrossPrice": {
              "amount": 10.0,
              "currency": "EUR"
            },
            "pricingUnit": "Room",
            "postNextDay": false,
            "serviceType": "Other",
            "vatType": "Normal",
            "availability": {
              "mode": "Daily",
              "daysOfWeek": [
                "Saturday",
                "Sunday"
              ]
            },
            "property": {
              "id": "MUC",
              "code": "MUC",
              "name": "Demo Hotel Munich",
              "description": "This is the demo hotel Munich"
            },
            "subAccountId": "MUC-WF",
            "channelCodes": [
              "Direct"
            ]
          },
          {
            "id": "MUC-BRKF",
            "name": "Breakfast",
            "code": "BRKF",
            "description": "Yummy yummy breakfast.",
            "defaultGrossPrice": {
              "amount": 20.0,
              "currency": "EUR"
            },
            "pricingUnit": "Person",
            "postNextDay": false,
            "serviceType": "FoodAndBeverages",
            "vatType": "Normal",
            "availability": {
              "mode": "Daily",
              "quantity": 7,
              "daysOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ]
            },
            "property": {
              "id": "BER",
              "code": "BER",
              "name": "Demo Hotel Berlin",
              "description": "This is the demo hotel Berlin"
            },
            "channelCodes": [
              "Direct",
              "Ibe",
              "BookingCom",
              "ChannelManager"
            ]
          },
          {
            "id": "MUC-BRKF_CHILD",
            "name": "Breakfast for children.",
            "code": "BRKF_CHILD",
            "description": "Healthy breakfast for children.",
            "defaultGrossPrice": {
              "amount": 10.0,
              "currency": "EUR"
            },
            "pricingUnit": "Person",
            "postNextDay": false,
            "serviceType": "FoodAndBeverages",
            "vatType": "Normal",
            "availability": {
              "mode": "Daily",
              "quantity": 7,
              "daysOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ]
            },
            "property": {
              "id": "BER",
              "code": "BER",
              "name": "Demo Hotel Berlin",
              "description": "This is the demo hotel Berlin"
            },
            "channelCodes": [
              "Direct",
              "Ibe",
              "BookingCom",
              "ChannelManager"
            ],
            "ageCategoryId": "MUC-CHILD"
          }
        ],
        "count": 0
      }
    },
    "ServiceModel": {
      "type": "object",
      "required": [
        "accountingConfigs",
        "availability",
        "code",
        "defaultGrossPrice",
        "description",
        "id",
        "name",
        "postNextDay",
        "pricingUnit",
        "property"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The service id"
        },
        "code": {
          "type": "string",
          "description": "The code for the service"
        },
        "name": {
          "type": "object",
          "description": "The name for the service",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "description": {
          "type": "object",
          "description": "The description for the service",
          "additionalProperties": {
            "type": "string",
            "x-nullable": true
          }
        },
        "defaultGrossPrice": {
          "$ref": "#/definitions/MonetaryValueModel"
        },
        "pricingUnit": {
          "type": "string",
          "description": "Defines the granularity (room, person) for which this item is offered and priced",
          "enum": [
            "Room",
            "Person"
          ]
        },
        "postNextDay": {
          "type": "boolean",
          "description": "Whether the service is delivered and posted on the same business date as the accommodation, or on the next day."
        },
        "availability": {
          "$ref": "#/definitions/AvailabilityModel"
        },
        "accountingConfigs": {
          "type": "array",
          "description": "The collection of accounting configs with validity periods.",
          "items": {
            "$ref": "#/definitions/AccountingConfigModel"
          }
        },
        "property": {
          "$ref": "#/definitions/EmbeddedPropertyModel"
        },
        "channelCodes": {
          "type": "array",
          "description": "The channel codes the service is sold through. When no channels are defined, the service is sold only in a package",
          "items": {
            "type": "string",
            "description": "\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"
            ]
          },
          "x-nullable": true
        },
        "ageCategoryId": {
          "type": "string",
          "description": "The id of the age category associated with this service.",
          "x-nullable": true
        }
      },
      "additionalProperties": false,
      "example": {
        "id": "MUC-BRKF_CHILD",
        "code": "BRKF_CHILD",
        "name": {
          "en": "Breakfast for children",
          "de": "Fr\u00FChst\u00FCck f\u00FCr Kinder"
        },
        "description": {
          "en": "Yummy yummy breakfast for children",
          "de": "Leckeres Fr\u00FChst\u00FCck f\u00FCr Kinder"
        },
        "defaultGrossPrice": {
          "amount": 20.0,
          "currency": "EUR"
        },
        "pricingUnit": "Person",
        "postNextDay": true,
        "availability": {
          "mode": "Daily",
          "quantity": 3,
          "daysOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ]
        },
        "accountingConfigs": [
          {
            "state": "Unknown",
            "vatType": "Normal",
            "serviceType": "FoodAndBeverages",
            "subAccountId": "ALCO",
            "validFrom": "2021-01-01"
          }
        ],
        "property": {
          "id": "MUC",
          "code": "MUC",
          "name": "Demo Hotel Munich",
          "description": "This is the demo hotel Munich"
        },
        "channelCodes": [
          "Direct",
          "Ibe",
          "BookingCom",
          "ChannelManager"
        ],
        "ageCategoryId": "MUC-CHILD"
      }
    },
    "SurchargeModel": {
      "type": "object",
      "required": [
        "adults",
        "type",
        "value"
      ],
      "properties": {
        "adults": {
          "type": "integer",
          "description": "The total numbers of adults",
          "format": "int32"
        },
        "type": {
          "type": "string",
          "description": "Specifies how to interpret \u0027Value\u0027",
          "enum": [
            "Absolute",
            "Percent"
          ]
        },
        "value": {
          "type": "number",
          "description": "The percent or absolute value (in the rate plan\u0027s currency) of the surcharge",
          "format": "double"
        }
      },
      "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": "AgeCategory"
    },
    {
      "name": "CancellationPolicy"
    },
    {
      "name": "Company"
    },
    {
      "name": "CorporateCodes"
    },
    {
      "name": "NoShowPolicy"
    },
    {
      "name": "PromoCodes"
    },
    {
      "name": "Rate"
    },
    {
      "name": "RatePlan"
    },
    {
      "name": "RatePlanActions"
    },
    {
      "name": "Service"
    }
  ]
}