apaleo Inventory API

Hotel management platform API

api.apaleo.com ↗
Version
v1
OpenAPI
3.0.0
Endpoints
33
Schemas
46
91
Quality
Updated
3 days ago
Hospitality hospitality hotel booking
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

api.apaleo.com

Endpoints

Property 6 endpoints

GET /inventory/v1/properties

Get the list of properties.
You need to be authorized (no particular scope required)

operationId: Property_listGet

Parameters

Name In Required Type Description
status query optional array

Filter result by property status

includeArchived query optional boolean

Include archived properties in the result. If not set, or set to false, it only returns non-archived properties

countryCode query optional array

Filter result by country code

pageNumber query optional integer

Page number, 1-based. Default value is 1 (if this is not set or not positive). Results in 204 if there are no items on that page.

pageSize query optional integer

Page size. If this is not set or not positive, the pageNumber is ignored and all items are returned.

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: actions. All other values will be silently ignored.

Responses

200

Return all properties.

204

There are no properties found.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/properties
POST /inventory/v1/properties

Use this call to create a new property.
You must have at least one of these scopes: ‘properties.create, setup.manage’.

operationId: Property_create

Parameters

Name In Required Type Description
Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

The definition of the property.

application/json
schema CreatePropertyModel
Property Type Required
code string required
name object required
taxId string required
location object required
city string required
postalCode string required
regionCode string optional
countryCode string required
addressLine1 string required
addressLine2 string optional
timeZone string required
bankAccount object optional
bic string optional
bank string optional
iban string optional
companyName string required
description object optional
currencyCode string required
paymentTerms object required
managingDirectors string optional
defaultCheckInTime string required
defaultCheckOutTime string required
commercialRegisterEntry string required

Responses

201

Creation of the new property was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/properties
GET /inventory/v1/properties/$count

Return total count of properties
You need to be authorized (no particular scope required)

operationId: Property_getTotalCount

Responses

200

Success

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/properties/$count
GET /inventory/v1/properties/{id}

Get a property by id.
You need to be authorized (no particular scope required)

operationId: Property_getById

Parameters

Name In Required Type Description
id path required string

The id of the property.

languages query optional array

‘all’ or comma separated list of two-letter language codes (ISO Alpha-2)

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: actions. All other values will be silently ignored.

Responses

200

Return all the property data.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/properties/{id}
HEAD /inventory/v1/properties/{id}

Check if a property exists by id.
You need to be authorized (no particular scope required)

operationId: Property_existsByIdHead

Parameters

Name In Required Type Description
id path required string

The id of the property.

Responses

200

The property exists.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

HEAD /inventory/v1/properties/{id}
PATCH /inventory/v1/properties/{id}

Here’s a list of allowed operations:

  • Replace Name
  • Add, replace and remove Description
  • Replace CompanyName
  • Add, replace and remove ManagingDirectors
  • Replace CommercialRegisterEntry
  • Replace TaxId
  • Replace Location
  • Add, replace and remove BankAccount
  • Replace PaymentTerms
  • Set IsTemplate
    You must have at least one of these scopes: ‘properties.manage, setup.manage’.
operationId: Property_modifyDetails

Parameters

Name In Required Type Description
id path required string

The id of the property.

Request Body

Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.

application/json
schema PropertyModifyDetailsRequest
array of object
Property Type Required
op string optional
from string optional
path string optional
value object optional

Responses

204

Success

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PATCH /inventory/v1/properties/{id}

Propertyactions 4 endpoints

PUT /inventory/v1/property-actions/{id}/archive

Use this endpoint to archive an existing live property
This operation set the IsArchived flag to true
You must have at least one of these scopes: ‘properties.manage, setup.manage’.

operationId: PropertyActions_archiveProperty

Parameters

Name In Required Type Description
id path required string

The id of the property

Responses

204

No Content

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PUT /inventory/v1/property-actions/{id}/archive
POST /inventory/v1/property-actions/{id}/clone

Use this call to clone a specific property.
This operation creates a new property with inventory and rate plans from the specified property.
You must have at least one of these scopes: ‘properties.create, setup.manage’.

operationId: PropertyActions_cloneProperty

Parameters

Name In Required Type Description
id path required string

The id of the property.

Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

The definition of the property.

application/json
schema CreatePropertyModel
Property Type Required
code string required
name object required
taxId string required
location object required
city string required
postalCode string required
regionCode string optional
countryCode string required
addressLine1 string required
addressLine2 string optional
timeZone string required
bankAccount object optional
bic string optional
bank string optional
iban string optional
companyName string required
description object optional
currencyCode string required
paymentTerms object required
managingDirectors string optional
defaultCheckInTime string required
defaultCheckOutTime string required
commercialRegisterEntry string required

Responses

201

Cloning of the existing property was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/property-actions/{id}/clone
PUT /inventory/v1/property-actions/{id}/reset

Use this endpoint to delete all transactional data related to some test property
This operation deletes all transactional data related to the specified property. The property must be in ‘Test’ status.
You must have at least one of these scopes: ‘properties.manage, setup.manage’.

operationId: PropertyActions_resetPropertyData

Parameters

Name In Required Type Description
id path required string

The id of the property

Responses

204

No Content

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PUT /inventory/v1/property-actions/{id}/reset
PUT /inventory/v1/property-actions/{id}/set-live

Use this endpoint to move an existing test property to live
This operation changes the property status to ‘Live’
You must have at least one of these scopes: ‘properties.manage, setup.manage’.

operationId: PropertyActions_moveToLive

Parameters

Name In Required Type Description
id path required string

The id of the property

Responses

204

No Content

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PUT /inventory/v1/property-actions/{id}/set-live

Types 1 endpoints

GET /inventory/v1/types/countries

Returns a list of ISO country codes that could be used to create properties.
You need to be authorized (no particular scope required)

operationId: Types_supportedCountriesList

Responses

200

Success.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/types/countries

Unit 9 endpoints

GET /inventory/v1/units

Get the list of units.
You must have at least one of these scopes: ‘units.read, setup.read, setup.manage’.

operationId: Unit_listUnits

Parameters

Name In Required Type Description
propertyId query optional string

Return units for specific property

unitGroupId query optional string

Return units for the specific unit group - DEPRECATED: This property will be removed 20.04.2022. Use UnitGroupIds instead

unitGroupIds query optional array

Return units with the specific unit groups

unitAttributeIds query optional array

Return units with the specific unit attributes

isOccupied query optional boolean

Return only occupied or vacant units

maintenanceType query optional string

Return units with the specific maintenance type

condition query optional string

Return units with a specific condition

textSearch query optional string

This will filter all units where the provided text is contained in the unit name. The search is case insensitive.

pageNumber query optional integer

Page number, 1-based. Default value is 1 (if this is not set or not positive). Results in 204 if there are no items on that page.

pageSize query optional integer

Page size. If this is not set or not positive, the pageNumber is ignored and all items are returned.

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: property, unitGroup, connectedUnits. All other values will be silently ignored.

Responses

200

Return all units.

204

No units were found.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/units
PATCH /inventory/v1/units

Here’s a list of allowed operations:

  • Set unit condition
  • Set unit description
  • Set unit name
  • Set unit unitGroupId
  • Set unit maxPersons
  • Add unit attribute
  • Remove unit attribute
    You must have at least one of these scopes: ‘units.manage, setup.manage’.
operationId: Unit_updateUnitsAttributes

Parameters

Name In Required Type Description
unitIds query required array

Request Body

Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.

application/json
schema PropertyModifyDetailsRequest
array of object
Property Type Required
op string optional
from string optional
path string optional
value object optional

Responses

204

Units were successfully modified.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PATCH /inventory/v1/units
POST /inventory/v1/units

Use this call to create a new unit.
You must have at least one of these scopes: ‘units.create, setup.manage’.

operationId: Unit_create

Parameters

Name In Required Type Description
Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

required

The definition of the unit.

application/json
schema CreateUnitModel
Property Type Required
name string required
condition string optional
attributes array optional
id string required
maxPersons integer required
propertyId string required
description object required
unitGroupId string optional
connectedUnits array optional
unitId string required

Responses

201

Creation of the new unit was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/units
GET /inventory/v1/units/$count

Returns number of units matching the filter criteria
You must have at least one of these scopes: ‘units.read, setup.read, setup.manage’.

operationId: Unit_getCount

Parameters

Name In Required Type Description
propertyId query optional string

Return units for specific property

unitGroupId query optional string

Return units for the specific unit group - DEPRECATED: This property will be removed 20.04.2022. Use UnitGroupIds instead

unitGroupIds query optional array

Return units with the specific unit groups

unitAttributeIds query optional array

Return units with the specific unit attributes

isOccupied query optional boolean

Return only occupied or vacant units

maintenanceType query optional string

Return units with the specific maintenance type

condition query optional string

Return units with a specific condition

textSearch query optional string

This will filter all units where the provided text is contained in the unit name. The search is case insensitive.

Responses

200

Success

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/units/$count
POST /inventory/v1/units/bulk

Use this call to create multiple units, following a naming rule.
You must have at least one of these scopes: ‘units.create, setup.manage’.

operationId: Unit_bulkCreateUnits

Parameters

Name In Required Type Description
Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

required

The definition of the units.

application/json
schema BulkCreateUnitsModel
Property Type Required
units array required
name string required
condition string optional
attributes array optional
id string required
maxPersons integer required
propertyId string required
description object required
unitGroupId string optional
connectedUnits array optional
unitId string required

Responses

200

Success.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/units/bulk
DELETE /inventory/v1/units/{id}

Use this call to delete a unit.
You must have at least one of these scopes: ‘units.delete, setup.manage’.

operationId: Unit_deleteById

Parameters

Name In Required Type Description
id path required string

The id of the unit.

Responses

204

Deletion of the unit was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

DELETE /inventory/v1/units/{id}
GET /inventory/v1/units/{id}

Get a unit by id.
You must have at least one of these scopes: ‘units.read, setup.read, setup.manage’.

operationId: Unit_getById

Parameters

Name In Required Type Description
id path required string

The id of the unit.

languages query optional array

‘all’ or comma separated list of two-letter language codes (ISO Alpha-2)

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: property, unitGroup, connectedUnits. All other values will be silently ignored.

Responses

200

Return all the unit data.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/units/{id}
HEAD /inventory/v1/units/{id}

Check if a unit exists by id.
You must have at least one of these scopes: ‘units.read, setup.read, setup.manage’.

operationId: Unit_existsByIdHead

Parameters

Name In Required Type Description
id path required string

The id of the unit.

Responses

200

The unit exists.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

HEAD /inventory/v1/units/{id}
PATCH /inventory/v1/units/{id}

Here’s a list of allowed operations:

  • Set unit condition
  • Set unit description
  • Set unit name
  • Set unit unitGroupId
  • Set unit maxPersons
  • Add unit attribute
  • Remove unit attribute
    You must have at least one of these scopes: ‘units.manage, setup.manage’.
operationId: Unit_updateProperties

Parameters

Name In Required Type Description
id path required string

The id of the unit.

Request Body

Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.

application/json
schema PropertyModifyDetailsRequest
array of object
Property Type Required
op string optional
from string optional
path string optional
value object optional

Responses

200

Success

204

The unit was successfully modified.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PATCH /inventory/v1/units/{id}

Unitattribute 6 endpoints

GET /inventory/v1/unit-attributes

Get unit attribute list
You must have at least one of these scopes: ‘unitattributes.read, setup.read, setup.manage’.

operationId: UnitAttribute_listAttributes

Parameters

Name In Required Type Description
pageNumber query optional integer

Page number, 1-based. Default value is 1 (if this is not set or not positive). Results in 204 if there are no items on that page.

pageSize query optional integer

Page size. If this is not set or not positive, the pageNumber is ignored and all items are returned.

Responses

200

Returns unit attribute list for given account

204

No unit attributes present for given account

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/unit-attributes
POST /inventory/v1/unit-attributes

Use this call to create a new unit attribute.
You must have at least one of these scopes: ‘unitattributes.create, setup.manage’.

operationId: UnitAttribute_createNewAttribute

Parameters

Name In Required Type Description
Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

required

The unit attribute.

application/json
schema CreateUnitAttributeDefinitionModel
Property Type Required
name string required
description string optional

Responses

201

Creation of the new unit attribute was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/unit-attributes
DELETE /inventory/v1/unit-attributes/{id}

Deletes unit attribute
You must have at least one of these scopes: ‘unitattributes.delete, setup.manage’.

operationId: UnitAttribute_deleteById

Parameters

Name In Required Type Description
id path required string

Id of unit attribute

Responses

200

OK

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

DELETE /inventory/v1/unit-attributes/{id}
GET /inventory/v1/unit-attributes/{id}

Get unit attribute by id
You must have at least one of these scopes: ‘unitattributes.read, setup.read, setup.manage’.

operationId: UnitAttribute_getById

Parameters

Name In Required Type Description
id path required string

The id of the unit attribute

Responses

200

Returns unit attribute with specified id

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/unit-attributes/{id}
HEAD /inventory/v1/unit-attributes/{id}

Check if a unit attribute exists
You must have at least one of these scopes: ‘unitattributes.read, setup.read, setup.manage’.

operationId: UnitAttribute_checkExistsHead

Parameters

Name In Required Type Description
id path required string

The id of the unit attribute.

Responses

200

The unit attribute exists.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

HEAD /inventory/v1/unit-attributes/{id}
PATCH /inventory/v1/unit-attributes/{id}

Here’s a list of allowed operations:

  • Replace / Remove Description
    You must have at least one of these scopes: ‘unitattributes.manage, setup.manage’.
operationId: UnitAttribute_modifyDescription

Parameters

Name In Required Type Description
id path required string

Id of unit attribute

Request Body

Define the list of operations to be applied to the resource. Learn more about JSON Patch here: http://jsonpatch.com/.

application/json
schema PropertyModifyDetailsRequest
array of object
Property Type Required
op string optional
from string optional
path string optional
value object optional

Responses

204

No Content

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PATCH /inventory/v1/unit-attributes/{id}

Unitgroup 7 endpoints

GET /inventory/v1/unit-groups

Get the list of unit groups.
You must have at least one of these scopes: ‘unitgroups.read, setup.read, setup.manage’.

operationId: UnitGroup_getAll

Parameters

Name In Required Type Description
propertyId query optional string

Return unit groups for specific property

unitGroupTypes query optional array
pageNumber query optional integer

Page number, 1-based. Default value is 1 (if this is not set or not positive). Results in 204 if there are no items on that page.

pageSize query optional integer

Page size. If this is not set or not positive, the pageNumber is ignored and all items are returned.

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: property, connectedUnitGroups. All other values will be silently ignored.

Responses

200

Return all unit groups.

204

There are no unit groups found.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/unit-groups
POST /inventory/v1/unit-groups

Use this call to create a new unit group.
You must have at least one of these scopes: ‘unitgroups.create, setup.manage’.

operationId: UnitGroup_createNewGroup

Parameters

Name In Required Type Description
Idempotency-Key header optional string

Unique key for safely retrying requests without accidentally performing the same operation twice.
We’ll always send back the same response for requests made with the same key,
and keys can’t be reused with different request parameters. Keys expire after 24 hours.

Request Body

required

The definition of the unit group.

application/json
schema CreateUnitGroupModel
Property Type Required
code string required
name object required
rank integer optional
type string optional
maxPersons integer required
propertyId string required
description object required
connectedUnitGroups array optional
memberCount integer required
unitGroupId string required

Responses

201

Creation of the new unit group was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

POST /inventory/v1/unit-groups
GET /inventory/v1/unit-groups/$count

Returns number of unit groups matching the filter criteria
You must have at least one of these scopes: ‘unitgroups.read, setup.read, setup.manage’.

operationId: UnitGroup_getCount

Parameters

Name In Required Type Description
propertyId query optional string

Return unit groups for specific property

unitGroupTypes query optional array

Responses

200

Success

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/unit-groups/$count
DELETE /inventory/v1/unit-groups/{id}

Use this call to delete a unit group.
You must have at least one of these scopes: ‘unitgroups.delete, setup.manage’.

operationId: UnitGroup_deleteById

Parameters

Name In Required Type Description
id path required string

The id of the unit group.

Responses

204

Deletion of the unit group was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

DELETE /inventory/v1/unit-groups/{id}
GET /inventory/v1/unit-groups/{id}

Get a unit group by id.
You must have at least one of these scopes: ‘unitgroups.read, setup.read, setup.manage’.

operationId: UnitGroup_getById

Parameters

Name In Required Type Description
id path required string

The id of the unit group.

languages query optional array

‘all’ or comma separated list of two-letter language codes (ISO Alpha-2)

expand query optional array

List of all embedded resources that should be expanded in the response. Possible values are: property, connectedUnitGroups. All other values will be silently ignored.

Responses

200

Return all the unit group data.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

GET /inventory/v1/unit-groups/{id}
HEAD /inventory/v1/unit-groups/{id}

Check if a unit group exists by id.
You must have at least one of these scopes: ‘unitgroups.read, setup.read, setup.manage’.

operationId: UnitGroup_checkExistsByIdHead

Parameters

Name In Required Type Description
id path required string

The id of the unit group.

Responses

200

The unit group exists.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

HEAD /inventory/v1/unit-groups/{id}
PUT /inventory/v1/unit-groups/{id}

Use this call to modify a unit group.
You must have at least one of these scopes: ‘unitgroups.manage, setup.manage’.

operationId: UnitGroup_updateGroup

Parameters

Name In Required Type Description
id path required string

The id of the unit group.

Request Body

required

The definition of the unit group.

application/json
schema ReplaceUnitGroupModel
Property Type Required
name object required
rank integer optional
maxPersons integer optional
description object required
connectedUnitGroups array optional
memberCount integer required
unitGroupId string required

Responses

200

Success

204

Replace of the unit group was successful.

400

Bad request.

401

You are unauthorized.

403

Forbidden.

404

The Request-URI could not be found.

415

Unsupported media type.

422

Validation errors in the request body or query params.

500

An unexpected error occurred.

503

The server is currently unavailable. Please try later.

PUT /inventory/v1/unit-groups/{id}

Schemas

object ActionModel_PropertyAction_NotAllowedPropertyActionReason_
{
  "type": "object",
  "required": [
    "action",
    "isAllowed"
  ],
  "properties": {
    "action": {
      "enum": [
        "Delete",
        "Archive",
        "SetLive",
        "Reset"
      ],
      "type": "string"
    },
    "reasons": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionReasonModel_NotAllowedPropertyActionReason_"
      }
    },
    "isAllowed": {
      "type": "boolean"
    }
  }
}
object ActionReasonModel_NotAllowedPropertyActionReason_
{
  "type": "object",
  "required": [
    "code",
    "message"
  ],
  "properties": {
    "code": {
      "enum": [
        "DeleteNotAllowedForPropertyNotInStatusTest",
        "ArchiveNotAllowedForPropertyNotInStatusLive",
        "ArchiveNotAllowedForPropertyWhichIsAlreadyArchived",
        "SetToLiveNotAllowedForPropertyNotInStatusTest",
        "SetToLiveNotAllowedForPropertyInNonLiveAccount",
        "ResetNotAllowedForPropertyNotInStatusTest"
      ],
      "type": "string"
    },
    "message": {
      "type": "string",
      "minLength": 1
    }
  }
}
object AddressModel
{
  "type": "object",
  "required": [
    "addressLine1",
    "city",
    "countryCode",
    "postalCode"
  ],
  "properties": {
    "city": {
      "type": "string",
      "minLength": 1
    },
    "postalCode": {
      "type": "string",
      "minLength": 1
    },
    "regionCode": {
      "type": "string"
    },
    "countryCode": {
      "type": "string"
    },
    "addressLine1": {
      "type": "string",
      "minLength": 1
    },
    "addressLine2": {
      "type": "string"
    }
  }
}
object BankAccountModel
{
  "type": "object",
  "properties": {
    "bic": {
      "type": "string"
    },
    "bank": {
      "type": "string"
    },
    "iban": {
      "type": "string"
    }
  }
}
object BulkCreateUnitsModel
{
  "type": "object",
  "example": "{\n  \"units\": [\n    {\n      \"propertyId\": \"MUC\",\n      \"name\": \"A.201\",\n      \"description\": {\n        \"en\": \"Single room\",\n        \"de\": \"Einzelzimmer\"\n      },\n      \"unitGroupId\": \"MUC-SGL\",\n      \"maxPersons\": 1,\n      \"condition\": \"Clean\",\n      \"attributes\": [],\n      \"connectedUnits\": []\n    },\n    {\n      \"propertyId\": \"MUC\",\n      \"name\": \"A.103\",\n      \"description\": {\n        \"en\": \"Double room\",\n        \"de\": \"Doppelzimmer\"\n      },\n      \"unitGroupId\": \"MUC-DBL\",\n      \"maxPersons\": 2,\n      \"condition\": \"Clean\",\n      \"attributes\": [],\n      \"connectedUnits\": []\n    },\n    {\n      \"propertyId\": \"MUC\",\n      \"name\": \"S.102\",\n      \"description\": {\n        \"en\": \"Suite room\",\n        \"de\": \"Suite Zimmer\"\n      },\n      \"unitGroupId\": \"MUC-SUI\",\n      \"maxPersons\": 3,\n      \"condition\": \"Clean\",\n      \"attributes\": [],\n      \"connectedUnits\": [\n        {\n          \"unitId\": \"MUC-MTA\"\n        },\n        {\n          \"unitId\": \"MUC-JQI\"\n        }\n      ]\n    }\n  ]\n}",
  "required": [
    "units"
  ],
  "properties": {
    "units": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateUnitModel"
      }
    }
  }
}
object BulkUnitsCreatedModel
{
  "type": "object",
  "example": "{\n  \"ids\": [\n    \"MUC-CFP\",\n    \"MUC-XTA\",\n    \"MUC-CPZ\"\n  ]\n}",
  "required": [
    "ids"
  ],
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The unit ids"
    }
  }
}
object ConnectedUnitGroupModel
{
  "type": "object",
  "required": [
    "description",
    "id",
    "memberCount",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit group id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit group"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit group"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "The description for the unit group"
    },
    "memberCount": {
      "type": "integer",
      "format": "int32",
      "description": "The number of units taken from this connected unit group"
    }
  }
}
object ConnectedUnitModel
{
  "type": "object",
  "required": [
    "condition",
    "description",
    "id",
    "maxPersons",
    "name",
    "unitGroupId"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit"
    },
    "condition": {
      "enum": [
        "Clean",
        "CleanToBeInspected",
        "Dirty"
      ],
      "type": "string",
      "description": "The current status of the unit"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "The description for the unit"
    },
    "unitGroupId": {
      "type": "string",
      "description": "The unit group id"
    }
  }
}
object CountModel
{
  "type": "object",
  "example": "{\n  \"count\": 50\n}",
  "required": [
    "count"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "format": "int64"
    }
  }
}
object CountryListModel
{
  "type": "object",
  "example": "{\n  \"countryCodes\": [\n    \"DE\",\n    \"US\"\n  ]\n}",
  "required": [
    "countryCodes"
  ],
  "properties": {
    "countryCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of ISO country codes."
    }
  }
}
object CreateAddressModel
{
  "type": "object",
  "required": [
    "addressLine1",
    "city",
    "countryCode",
    "postalCode"
  ],
  "properties": {
    "city": {
      "type": "string",
      "minLength": 1
    },
    "postalCode": {
      "type": "string",
      "minLength": 1
    },
    "regionCode": {
      "type": "string",
      "maxLength": 6,
      "minLength": 2,
      "description": "The ISO 3166-2 code"
    },
    "countryCode": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "The country code, in ISO 3166-1 alpha-2 code"
    },
    "addressLine1": {
      "type": "string",
      "minLength": 1
    },
    "addressLine2": {
      "type": "string"
    }
  }
}
object CreateConnectedUnitGroupModel
{
  "type": "object",
  "required": [
    "memberCount",
    "unitGroupId"
  ],
  "properties": {
    "memberCount": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "The number of units for this connected unit group"
    },
    "unitGroupId": {
      "type": "string",
      "description": "The connected unit group id"
    }
  }
}
object CreateConnectedUnitModel
{
  "type": "object",
  "required": [
    "unitId"
  ],
  "properties": {
    "unitId": {
      "type": "string",
      "description": "The connected unit id"
    }
  }
}
object CreatePropertyModel
{
  "type": "object",
  "example": "{\n  \"code\": \"MUC\",\n  \"name\": {\n    \"en\": \"Demo Hotel Munich\",\n    \"de\": \"Demo Hotel München\"\n  },\n  \"companyName\": \"Hotel Münchner GmbH\",\n  \"managingDirectors\": \"Franz-Josef Gruber\",\n  \"commercialRegisterEntry\": \"Amtsgericht München, HRB 279336\",\n  \"taxId\": \"DE311053702\",\n  \"description\": {\n    \"en\": \"This is the demo hotel Munich\",\n    \"de\": \"Dies ist das Demo Hotel München\"\n  },\n  \"location\": {\n    \"addressLine1\": \"Marienplatz 1\",\n    \"postalCode\": \"80331\",\n    \"city\": \"München\",\n    \"countryCode\": \"DE\"\n  },\n  \"bankAccount\": {\n    \"iban\": \"DE44 5001 0517 5407 3249 31\",\n    \"bic\": \"SSKMDEMMXXX\",\n    \"bank\": \"Stadtsparkasse München\"\n  },\n  \"paymentTerms\": {\n    \"en\": \"Pay on checkout\",\n    \"de\": \"Zahlung bei Checkout\"\n  },\n  \"timeZone\": \"Europe/Berlin\",\n  \"defaultCheckInTime\": \"17:00:00\",\n  \"defaultCheckOutTime\": \"11:00:00\",\n  \"currencyCode\": \"EUR\"\n}",
  "required": [
    "code",
    "commercialRegisterEntry",
    "companyName",
    "currencyCode",
    "defaultCheckInTime",
    "defaultCheckOutTime",
    "location",
    "name",
    "paymentTerms",
    "taxId",
    "timeZone"
  ],
  "properties": {
    "code": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_]*$",
      "maxLength": 10,
      "minLength": 3,
      "description": "The code for the property that can be shown in reports and table views"
    },
    "name": {
      "type": "object",
      "description": "The name for the property",
      "additionalProperties": {
        "type": "string"
      }
    },
    "taxId": {
      "type": "string",
      "minLength": 1,
      "description": "The Tax-ID of the company running the property, as it should appear on invoices"
    },
    "location": {
      "$ref": "#/components/schemas/CreateAddressModel"
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The time zone name of the property from the IANA Time Zone Database.\r\n(see: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)"
    },
    "bankAccount": {
      "$ref": "#/components/schemas/BankAccountModel"
    },
    "companyName": {
      "type": "string",
      "minLength": 1,
      "description": "The legal name of the company running the property."
    },
    "description": {
      "type": "object",
      "description": "The description for the property",
      "additionalProperties": {
        "type": "string"
      }
    },
    "currencyCode": {
      "type": "string",
      "description": "The currency a property works with."
    },
    "paymentTerms": {
      "type": "object",
      "description": "The payment terms used for all rate plans",
      "additionalProperties": {
        "type": "string"
      }
    },
    "managingDirectors": {
      "type": "string",
      "description": "The managing director(s) of the company, as they should appear on invoices"
    },
    "defaultCheckInTime": {
      "type": "string",
      "description": "The default check-in time<br />A time (without fractional second part) as defined in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "defaultCheckOutTime": {
      "type": "string",
      "description": "The default check-out time<br />A time (without fractional second part) as defined in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "commercialRegisterEntry": {
      "type": "string",
      "minLength": 1,
      "description": "The entry in the Commercial Reigster of the company running the property, as it should appear on invoices"
    }
  }
}
object CreateUnitAttributeDefinitionModel
{
  "type": "object",
  "example": "{\n  \"name\": \"Floor 1\",\n  \"description\": \"Floor number\"\n}",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "minLength": 1,
      "description": "The name of the unit attribute"
    },
    "description": {
      "type": "string",
      "description": "The description of the unit attribute"
    }
  }
}
object CreateUnitAttributeModel
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Id of unit attribute"
    }
  }
}
object CreateUnitGroupModel
{
  "type": "object",
  "example": "{\n  \"code\": \"DBL\",\n  \"propertyId\": \"MUC\",\n  \"name\": {\n    \"en\": \"Double Room\",\n    \"de\": \"Doppelzimmer\"\n  },\n  \"description\": {\n    \"en\": \"This is a nice room with as kingsize bed and flat screen\",\n    \"de\": \"Dies ist ein schönes Zimmer mit Kingsize-Bett und Flachbildschirm\"\n  },\n  \"maxPersons\": 4,\n  \"rank\": 1,\n  \"type\": \"BedRoom\"\n}",
  "required": [
    "code",
    "description",
    "maxPersons",
    "name",
    "propertyId"
  ],
  "properties": {
    "code": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_]*$",
      "maxLength": 10,
      "minLength": 3,
      "description": "The code for the unit group that can be shown in reports and table views"
    },
    "name": {
      "type": "object",
      "description": "The name for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "rank": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "The unit group rank\r\nRestrictions:\r\n- Should be greater or equal to one"
    },
    "type": {
      "enum": [
        "BedRoom",
        "MeetingRoom",
        "EventSpace",
        "ParkingLot"
      ],
      "type": "string",
      "description": "The unit group type"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "Maximum number of persons for the unit group"
    },
    "propertyId": {
      "type": "string",
      "description": "The id of the property where unit group will be created"
    },
    "description": {
      "type": "object",
      "description": "The description for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "connectedUnitGroups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateConnectedUnitGroupModel"
      },
      "description": "The list of connected unit groups this unit group is composed of"
    }
  }
}
object CreateUnitModel
{
  "type": "object",
  "example": "{\n  \"propertyId\": \"MUC\",\n  \"name\": \"S.102\",\n  \"description\": {\n    \"en\": \"Suite room\",\n    \"de\": \"Suite Zimmer\"\n  },\n  \"unitGroupId\": \"MUC-SUI\",\n  \"maxPersons\": 3,\n  \"condition\": \"Clean\",\n  \"attributes\": [],\n  \"connectedUnits\": [\n    {\n      \"unitId\": \"MUC-MTA\"\n    },\n    {\n      \"unitId\": \"MUC-JQI\"\n    }\n  ]\n}",
  "required": [
    "description",
    "maxPersons",
    "name",
    "propertyId"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit"
    },
    "condition": {
      "enum": [
        "Clean",
        "CleanToBeInspected",
        "Dirty"
      ],
      "type": "string",
      "description": "Condition of the unit"
    },
    "attributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateUnitAttributeModel"
      },
      "description": "Collection of user defined attributes of unit"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "Maximum number of persons for the unit"
    },
    "propertyId": {
      "type": "string",
      "description": "The id of the property where the unit will be created"
    },
    "description": {
      "type": "object",
      "description": "The description for the unit",
      "additionalProperties": {
        "type": "string"
      }
    },
    "unitGroupId": {
      "type": "string",
      "description": "The id of the unit group"
    },
    "connectedUnits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateConnectedUnitModel"
      },
      "description": "The list of units this unit is composed of"
    }
  }
}
object 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"
    },
    "name": {
      "type": "string",
      "description": "The name for the property"
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "The description for the property"
    }
  }
}
object 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"
    },
    "name": {
      "type": "string",
      "description": "The name for the unit group"
    },
    "type": {
      "enum": [
        "BedRoom",
        "MeetingRoom",
        "EventSpace",
        "ParkingLot",
        "Other"
      ],
      "type": "string",
      "description": "The unit group type"
    },
    "description": {
      "type": "string",
      "description": "The description for the unit group"
    }
  }
}
object EmbeddedUnitModel
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit id"
    },
    "name": {
      "type": "string",
      "description": "The name for the unit"
    },
    "description": {
      "type": "string",
      "description": "The description for the unit"
    },
    "unitGroupId": {
      "type": "string",
      "description": "The unit group id"
    }
  }
}
object MessageItemCollection
{
  "type": "object",
  "properties": {
    "messages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "readOnly": true
    }
  }
}
object Operation
{
  "type": "object",
  "properties": {
    "op": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "value": {}
  }
}
object PropertyCreatedModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC\"\n}",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The property id"
    }
  }
}
object PropertyItemModel
{
  "type": "object",
  "required": [
    "code",
    "commercialRegisterEntry",
    "companyName",
    "created",
    "currencyCode",
    "id",
    "isArchived",
    "isTemplate",
    "location",
    "name",
    "paymentTerms",
    "status",
    "taxId",
    "timeZone"
  ],
  "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"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the property"
    },
    "taxId": {
      "type": "string",
      "minLength": 1,
      "description": "The Tax-ID of the company running the property, as it should appear on invoices"
    },
    "status": {
      "enum": [
        "Test",
        "Live"
      ],
      "type": "string",
      "description": "The status of the property"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionModel_PropertyAction_NotAllowedPropertyActionReason_"
      },
      "description": "The list of actions for this property"
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "Date of creation<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "location": {
      "$ref": "#/components/schemas/AddressModel"
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The time zone name of the property from the IANA Time Zone Database.\r\n(see: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)"
    },
    "isArchived": {
      "type": "boolean",
      "description": "Is the property archived"
    },
    "isTemplate": {
      "type": "boolean",
      "description": "Whether the property can be used as a template for other properties"
    },
    "bankAccount": {
      "$ref": "#/components/schemas/BankAccountModel"
    },
    "companyName": {
      "type": "string",
      "minLength": 1,
      "description": "The legal name of the company running the property."
    },
    "description": {
      "type": "string",
      "description": "The description for the property"
    },
    "currencyCode": {
      "type": "string",
      "description": "The currency a property works with."
    },
    "paymentTerms": {
      "type": "object",
      "description": "The payment terms used for all rate plans",
      "additionalProperties": {
        "type": "string"
      }
    },
    "managingDirectors": {
      "type": "string",
      "description": "The managing director(s) of the company, as they should appear on invoices"
    },
    "propertyTemplateId": {
      "type": "string",
      "description": "The id of the property used as a template while creating the property"
    },
    "commercialRegisterEntry": {
      "type": "string",
      "minLength": 1,
      "description": "The entry in the Commercial Register of the company running the property, as it should appear on invoices"
    }
  }
}
object PropertyListModel
{
  "type": "object",
  "example": "{\n  \"properties\": [\n    {\n      \"id\": \"MUC\",\n      \"code\": \"MUC\",\n      \"isTemplate\": true,\n      \"name\": \"Demo Hotel Munich\",\n      \"description\": \"This is the demo hotel Munich\",\n      \"companyName\": \"Company\",\n      \"commercialRegisterEntry\": \"CRE\",\n      \"taxId\": \"Tax\",\n      \"location\": {\n        \"addressLine1\": \"Marienplatz 1\",\n        \"postalCode\": \"80331\",\n        \"city\": \"München\",\n        \"countryCode\": \"DE\"\n      },\n      \"paymentTerms\": {\n        \"de\": \"Zahlbar bei Check In\",\n        \"en\": \"Payment on check-in\"\n      },\n      \"timeZone\": \"Europe/Berlin\",\n      \"currencyCode\": \"EUR\",\n      \"created\": \"0001-01-01T00:00:00Z\",\n      \"status\": \"Test\",\n      \"isArchived\": false\n    },\n    {\n      \"id\": \"BER\",\n      \"code\": \"BER\",\n      \"propertyTemplateId\": \"MUC\",\n      \"isTemplate\": false,\n      \"name\": \"Demo Hotel Berlin\",\n      \"description\": \"This is the demo hotel Berlin\",\n      \"companyName\": \"Company\",\n      \"commercialRegisterEntry\": \"CRE\",\n      \"taxId\": \"Tax\",\n      \"location\": {\n        \"addressLine1\": \"Mohrenstraße 30\",\n        \"postalCode\": \"10117\",\n        \"city\": \"Berlin\",\n        \"countryCode\": \"DE\"\n      },\n      \"paymentTerms\": {\n        \"de\": \"Zahlbar bei Check In\",\n        \"en\": \"Payment on check-in\"\n      },\n      \"timeZone\": \"Europe/Berlin\",\n      \"currencyCode\": \"EUR\",\n      \"created\": \"0001-01-01T00:00:00Z\",\n      \"status\": \"Test\",\n      \"isArchived\": false\n    }\n  ],\n  \"count\": 0\n}",
  "required": [
    "count",
    "properties"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "format": "int64",
      "description": "Total count of items"
    },
    "properties": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PropertyItemModel"
      },
      "description": "List of properties"
    }
  }
}
object PropertyModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC\",\n  \"code\": \"MUC\",\n  \"propertyTemplateId\": \"BER\",\n  \"isTemplate\": false,\n  \"name\": {\n    \"en\": \"Demo Hotel Munich\",\n    \"de\": \"Demo Hotel München\"\n  },\n  \"description\": {\n    \"en\": \"This is the demo hotel Munich\",\n    \"de\": \"Dies ist das Demo Hotel München\"\n  },\n  \"companyName\": \"Hotel Münchner GmbH\",\n  \"managingDirectors\": \"Franz-Josef Gruber\",\n  \"commercialRegisterEntry\": \"Amtsgericht München, HRB 279336\",\n  \"taxId\": \"DE311053702\",\n  \"location\": {\n    \"addressLine1\": \"Marienplatz 1\",\n    \"postalCode\": \"80331\",\n    \"city\": \"München\",\n    \"countryCode\": \"DE\"\n  },\n  \"bankAccount\": {\n    \"iban\": \"DE44 5001 0517 5407 3249 31\",\n    \"bic\": \"SSKMDEMMXXX\",\n    \"bank\": \"Stadtsparkasse München\"\n  },\n  \"paymentTerms\": {\n    \"en\": \"Pay on checkout\",\n    \"de\": \"Zahlung bei Checkout\"\n  },\n  \"timeZone\": \"Europe/Berlin\",\n  \"currencyCode\": \"EUR\",\n  \"created\": \"0001-01-01T00:00:00Z\",\n  \"status\": \"Test\",\n  \"isArchived\": false\n}",
  "required": [
    "code",
    "commercialRegisterEntry",
    "companyName",
    "created",
    "currencyCode",
    "id",
    "isArchived",
    "isTemplate",
    "location",
    "name",
    "paymentTerms",
    "status",
    "taxId",
    "timeZone"
  ],
  "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"
    },
    "name": {
      "type": "object",
      "description": "The name for the property",
      "additionalProperties": {
        "type": "string"
      }
    },
    "taxId": {
      "type": "string",
      "minLength": 1,
      "description": "The Tax-ID of the company running the property, as it should appear on invoices"
    },
    "status": {
      "enum": [
        "Test",
        "Live"
      ],
      "type": "string",
      "description": "The status of the property"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionModel_PropertyAction_NotAllowedPropertyActionReason_"
      },
      "description": "The list of actions for this property"
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "Date of creation<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "location": {
      "$ref": "#/components/schemas/AddressModel"
    },
    "timeZone": {
      "type": "string",
      "minLength": 1,
      "description": "The time zone name of the property from the IANA Time Zone Database.\r\n(see: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)"
    },
    "isArchived": {
      "type": "boolean",
      "description": "Is the property archived"
    },
    "isTemplate": {
      "type": "boolean",
      "description": "Whether the property can be used as a template for other properties"
    },
    "bankAccount": {
      "$ref": "#/components/schemas/BankAccountModel"
    },
    "companyName": {
      "type": "string",
      "minLength": 1,
      "description": "The legal name of the company running the property."
    },
    "description": {
      "type": "object",
      "description": "The description for the property",
      "additionalProperties": {
        "type": "string"
      }
    },
    "currencyCode": {
      "type": "string",
      "description": "The currency a property works with."
    },
    "paymentTerms": {
      "type": "object",
      "description": "The payment terms used for all rate plans",
      "additionalProperties": {
        "type": "string"
      }
    },
    "managingDirectors": {
      "type": "string",
      "description": "The managing director(s) of the company, as they should appear on invoices"
    },
    "propertyTemplateId": {
      "type": "string",
      "description": "The id of the property used as a template while creating the property"
    },
    "commercialRegisterEntry": {
      "type": "string",
      "minLength": 1,
      "description": "The entry in the Commercial Register of the company running the property, as it should appear on invoices"
    }
  },
  "description": "With this request you can create a new property"
}
array PropertyModifyDetailsRequest
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Operation"
  }
}
object ReplaceConnectedUnitGroupModel
{
  "type": "object",
  "required": [
    "memberCount",
    "unitGroupId"
  ],
  "properties": {
    "memberCount": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "The number of units for this connected unit group"
    },
    "unitGroupId": {
      "type": "string",
      "description": "The connected unit group id"
    }
  }
}
object ReplaceUnitGroupModel
{
  "type": "object",
  "example": "{\n  \"name\": {\n    \"en\": \"Double Room\",\n    \"de\": \"Doppelzimmer\"\n  },\n  \"description\": {\n    \"en\": \"This is a nice room with as kingsize bed and flat screen\",\n    \"de\": \"Dies ist ein schönes Zimmer mit Kingsize-Bett und Flachbildschirm\"\n  },\n  \"maxPersons\": 4,\n  \"rank\": 2\n}",
  "required": [
    "description",
    "name"
  ],
  "properties": {
    "name": {
      "type": "object",
      "description": "The name for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "rank": {
      "type": "integer",
      "format": "int32",
      "maximum": 2147483647,
      "minimum": 1,
      "description": "The unit group rank\r\nRestrictions:\r\n- Should be greater or equal to one"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit group.\r\nIf this value is increased, the surcharges for the related rate plans must be specified in order for the rate plans to be sellable for the new possible occupancies."
    },
    "description": {
      "type": "object",
      "description": "The description for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "connectedUnitGroups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ReplaceConnectedUnitGroupModel"
      },
      "description": "The list of connected unit groups this unit group is composed of"
    }
  }
}
object UnitAttributeDefinitionCreatedModel
{
  "type": "object",
  "example": "{\n  \"id\": \"FLOOR\"\n}",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit attribute id"
    }
  }
}
object UnitAttributeDefinitionListModel
{
  "type": "object",
  "example": "{\n  \"unitAttributes\": [\n    {\n      \"id\": \"KQOSXHLS\",\n      \"name\": \"Floor 1\",\n      \"description\": \"Floor number\"\n    },\n    {\n      \"id\": \"ADVFSSUL\",\n      \"name\": \"Street view\",\n      \"description\": \"View from the room\"\n    }\n  ],\n  \"count\": 2\n}",
  "required": [
    "count",
    "unitAttributes"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "format": "int64",
      "description": "Total count of items"
    },
    "unitAttributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UnitAttributeDefinitionModel"
      },
      "description": "List of unit attributes"
    }
  }
}
object UnitAttributeDefinitionModel
{
  "type": "object",
  "example": "{\n  \"id\": \"KQOSXHLS\",\n  \"name\": \"Floor 1\",\n  \"description\": \"Floor number\"\n}",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id of the unit attribute"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the unit attribute"
    },
    "description": {
      "type": "string",
      "description": "The description of the unit attribute"
    }
  }
}
object UnitAttributeModel
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Id of unit attribute"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the unit attribute"
    },
    "description": {
      "type": "string",
      "description": "Description of unit attribute"
    }
  }
}
object UnitCreatedModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC-CFP\"\n}",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit id"
    }
  }
}
object UnitGroupCreatedModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC-DBL\"\n}",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit group id"
    }
  }
}
object UnitGroupItemModel
{
  "type": "object",
  "required": [
    "code",
    "description",
    "id",
    "memberCount",
    "name",
    "property",
    "type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit group id"
    },
    "code": {
      "type": "string",
      "description": "The code for the unit group that can be shown in reports and table views"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit group"
    },
    "rank": {
      "type": "integer",
      "format": "int32",
      "description": "The unit group rank"
    },
    "type": {
      "enum": [
        "BedRoom",
        "MeetingRoom",
        "EventSpace",
        "ParkingLot",
        "Other"
      ],
      "type": "string",
      "description": "The unit group type"
    },
    "property": {
      "$ref": "#/components/schemas/EmbeddedPropertyModel"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit group"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "The description for the unit group"
    },
    "memberCount": {
      "type": "integer",
      "format": "int32",
      "description": "Number of units in this group"
    },
    "connectedUnitGroups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConnectedUnitGroupModel"
      },
      "description": "The list of connected unit groups this unit group is composed of"
    }
  }
}
object UnitGroupListModel
{
  "type": "object",
  "example": "{\n  \"unitGroups\": [\n    {\n      \"id\": \"MUC-DBL\",\n      \"code\": \"DBL\",\n      \"name\": \"Double Room\",\n      \"description\": \"This is a nice room with as kingsize bed and flat screen\",\n      \"memberCount\": 2,\n      \"maxPersons\": 4,\n      \"rank\": 2,\n      \"type\": \"BedRoom\",\n      \"property\": {\n        \"id\": \"MUC\",\n        \"code\": \"MUC\",\n        \"name\": \"Demo Hotel Munich\",\n        \"description\": \"This is the demo hotel Munich\"\n      }\n    },\n    {\n      \"id\": \"BER-SUIT\",\n      \"code\": \"SUIT\",\n      \"name\": \"Suite Room\",\n      \"description\": \"This is a nice suite with two rooms combined\",\n      \"memberCount\": 1,\n      \"maxPersons\": 3,\n      \"rank\": 1,\n      \"type\": \"BedRoom\",\n      \"property\": {\n        \"id\": \"BER\",\n        \"code\": \"BER\",\n        \"name\": \"Demo Hotel Berlin\",\n        \"description\": \"This is the demo hotel Berlin\"\n      },\n      \"connectedUnitGroups\": [\n        {\n          \"id\": \"BER-SGL\",\n          \"name\": \"Single room\",\n          \"description\": \"This is a nice room with a single bed\",\n          \"memberCount\": 2,\n          \"maxPersons\": 1\n        },\n        {\n          \"id\": \"BER-DBL\",\n          \"name\": \"Double room\",\n          \"description\": \"This is a nice room with as kingsize bed and flat screen\",\n          \"memberCount\": 1,\n          \"maxPersons\": 2\n        }\n      ]\n    }\n  ],\n  \"count\": 0\n}",
  "required": [
    "count",
    "unitGroups"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "format": "int64",
      "description": "Total count of items"
    },
    "unitGroups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UnitGroupItemModel"
      },
      "description": "List of unit groups"
    }
  }
}
object UnitGroupModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC-DBL\",\n  \"code\": \"DBL\",\n  \"property\": {\n    \"id\": \"MUC\",\n    \"code\": \"MUC\",\n    \"name\": \"Demo Hotel Munich\",\n    \"description\": \"This is the demo hotel Munich\"\n  },\n  \"name\": {\n    \"en\": \"Double Room\",\n    \"de\": \"Doppelzimmer\"\n  },\n  \"memberCount\": 0,\n  \"description\": {\n    \"en\": \"This is a nice room with as kingsize bed and flat screen\",\n    \"de\": \"Dies ist ein schönes Zimmer mit Kingsize-Bett und Flachbildschirm\"\n  },\n  \"maxPersons\": 4,\n  \"rank\": 2,\n  \"type\": \"BedRoom\"\n}",
  "required": [
    "code",
    "description",
    "id",
    "maxPersons",
    "memberCount",
    "name",
    "property",
    "type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit group id"
    },
    "code": {
      "type": "string",
      "description": "The code for the unit group that can be shown in reports and table views"
    },
    "name": {
      "type": "object",
      "description": "The name for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "rank": {
      "type": "integer",
      "format": "int32",
      "description": "The unit group rank"
    },
    "type": {
      "enum": [
        "BedRoom",
        "MeetingRoom",
        "EventSpace",
        "ParkingLot",
        "Other"
      ],
      "type": "string",
      "description": "The unit group type"
    },
    "property": {
      "$ref": "#/components/schemas/EmbeddedPropertyModel"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit group"
    },
    "description": {
      "type": "object",
      "description": "The description for the unit group",
      "additionalProperties": {
        "type": "string"
      }
    },
    "memberCount": {
      "type": "integer",
      "format": "int32",
      "description": "Number of units in this group"
    },
    "connectedUnitGroups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConnectedUnitGroupModel"
      },
      "description": "The list of connected unit groups this unit group is composed of"
    }
  }
}
object UnitItemMaintenanceModel
{
  "type": "object",
  "required": [
    "id",
    "type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id for the scheduled maintenance"
    },
    "type": {
      "enum": [
        "OutOfService",
        "OutOfOrder",
        "OutOfInventory"
      ],
      "type": "string",
      "description": "The type of maintenance that is planned for the unit. A small repair (OutOfService),\r\na bigger disfunction that does not allow to sell the unit (OutOfOrder) or is it\r\neven under construction and should reduce the house count (OutOfInventory)"
    }
  }
}
object UnitItemModel
{
  "type": "object",
  "required": [
    "created",
    "description",
    "id",
    "maxPersons",
    "name",
    "property",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit"
    },
    "status": {
      "$ref": "#/components/schemas/UnitItemStatusModel"
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "Date of creation<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "property": {
      "$ref": "#/components/schemas/EmbeddedPropertyModel"
    },
    "unitGroup": {
      "$ref": "#/components/schemas/EmbeddedUnitGroupModel"
    },
    "attributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UnitAttributeModel"
      },
      "description": "Collection of user defined attributes of unit"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "The description for the unit"
    },
    "connectedUnits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConnectedUnitModel"
      },
      "description": "Collection of connected units"
    },
    "connectingUnit": {
      "$ref": "#/components/schemas/EmbeddedUnitModel"
    }
  }
}
object UnitItemStatusModel
{
  "type": "object",
  "required": [
    "condition",
    "isOccupied"
  ],
  "properties": {
    "condition": {
      "enum": [
        "Clean",
        "CleanToBeInspected",
        "Dirty"
      ],
      "type": "string"
    },
    "isOccupied": {
      "type": "boolean"
    },
    "maintenance": {
      "$ref": "#/components/schemas/UnitItemMaintenanceModel"
    }
  }
}
object UnitListModel
{
  "type": "object",
  "example": "{\n  \"units\": [\n    {\n      \"id\": \"MUC-MTA\",\n      \"name\": \"A.101\",\n      \"description\": \"Single room\",\n      \"property\": {\n        \"id\": \"MUC\",\n        \"code\": \"MUC\",\n        \"name\": \"Demo Hotel Munich\",\n        \"description\": \"This is the demo hotel Munich\"\n      },\n      \"unitGroup\": {\n        \"id\": \"MUC-SGL\",\n        \"code\": \"SGL\",\n        \"name\": \"Single\",\n        \"description\": \"Single\",\n        \"type\": \"BedRoom\"\n      },\n      \"connectingUnit\": {\n        \"id\": \"MUC-QKY\",\n        \"name\": \"S.101\",\n        \"description\": \"Suite room\",\n        \"unitGroupId\": \"MUC-SUI\"\n      },\n      \"status\": {\n        \"isOccupied\": true,\n        \"condition\": \"Dirty\",\n        \"maintenance\": {\n          \"id\": \"MUC-MTA-SGHZD\",\n          \"type\": \"OutOfService\"\n        }\n      },\n      \"maxPersons\": 1,\n      \"created\": \"0001-01-01T00:00:00Z\",\n      \"attributes\": [\n        {\n          \"id\": \"GRTDTLDD\",\n          \"name\": \"Floor 2\",\n          \"description\": \"Floor number\"\n        },\n        {\n          \"id\": \"KQOSXHLS\",\n          \"name\": \"Street view\",\n          \"description\": \"View from the room\"\n        }\n      ],\n      \"connectedUnits\": []\n    },\n    {\n      \"id\": \"MUC-JQI\",\n      \"name\": \"A.102\",\n      \"description\": \"Double room\",\n      \"property\": {\n        \"id\": \"MUC\",\n        \"code\": \"MUC\",\n        \"name\": \"Demo Hotel Munich\",\n        \"description\": \"This is the demo hotel Munich\"\n      },\n      \"unitGroup\": {\n        \"id\": \"MUC-DBL\",\n        \"code\": \"DBL\",\n        \"name\": \"Double\",\n        \"description\": \"Double\",\n        \"type\": \"BedRoom\"\n      },\n      \"connectingUnit\": {\n        \"id\": \"MUC-QKY\",\n        \"name\": \"S.101\",\n        \"description\": \"Suite room\",\n        \"unitGroupId\": \"MUC-SUI\"\n      },\n      \"status\": {\n        \"isOccupied\": false,\n        \"condition\": \"Clean\",\n        \"maintenance\": {\n          \"id\": \"MUC-JQI-GSZGK\",\n          \"type\": \"OutOfOrder\"\n        }\n      },\n      \"maxPersons\": 2,\n      \"created\": \"0001-01-01T00:00:00Z\",\n      \"attributes\": [\n        {\n          \"id\": \"GRTDTLDD\",\n          \"name\": \"Floor 2\",\n          \"description\": \"Floor number\"\n        }\n      ],\n      \"connectedUnits\": []\n    },\n    {\n      \"id\": \"MUC-QKY\",\n      \"name\": \"S.101\",\n      \"description\": \"Suite room\",\n      \"property\": {\n        \"id\": \"MUC\",\n        \"code\": \"MUC\",\n        \"name\": \"Demo Hotel Munich\",\n        \"description\": \"This is the demo hotel Munich\"\n      },\n      \"unitGroup\": {\n        \"id\": \"MUC-SUI\",\n        \"code\": \"SUI\",\n        \"name\": \"Suite\",\n        \"description\": \"Suite\",\n        \"type\": \"BedRoom\"\n      },\n      \"status\": {\n        \"isOccupied\": false,\n        \"condition\": \"Clean\",\n        \"maintenance\": {\n          \"id\": \"MUC-JQI-GSZGK\",\n          \"type\": \"OutOfOrder\"\n        }\n      },\n      \"maxPersons\": 3,\n      \"created\": \"0001-01-01T00:00:00Z\",\n      \"attributes\": [\n        {\n          \"id\": \"GRTDTLDD\",\n          \"name\": \"Floor 2\",\n          \"description\": \"Floor number\"\n        }\n      ],\n      \"connectedUnits\": [\n        {\n          \"id\": \"MUC-MTA\",\n          \"name\": \"A.101\",\n          \"description\": \"Single room\",\n          \"unitGroupId\": \"MUC-SGL\",\n          \"condition\": \"Clean\",\n          \"maxPersons\": 1\n        },\n        {\n          \"id\": \"MUC-JQI\",\n          \"name\": \"A.102\",\n          \"description\": \"Double room\",\n          \"unitGroupId\": \"MUC-DBL\",\n          \"condition\": \"Clean\",\n          \"maxPersons\": 2\n        }\n      ]\n    }\n  ],\n  \"count\": 3\n}",
  "required": [
    "count",
    "units"
  ],
  "properties": {
    "count": {
      "type": "integer",
      "format": "int64",
      "description": "Total count of items"
    },
    "units": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UnitItemModel"
      },
      "description": "List of units"
    }
  }
}
object UnitMaintenanceModel
{
  "type": "object",
  "required": [
    "from",
    "id",
    "to",
    "type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id for the scheduled maintenance"
    },
    "to": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time the scheduled maintenance window ends<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "from": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time the scheduled maintenance window starts<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "type": {
      "enum": [
        "OutOfService",
        "OutOfOrder",
        "OutOfInventory"
      ],
      "type": "string",
      "description": "The type of maintenance that is planned for the unit. A small repair (OutOfService),\r\na bigger disfunction that does not allow to sell the unit (OutOfOrder) or is it\r\neven under construction and should reduce the house count (OutOfInventory)"
    },
    "description": {
      "type": "string",
      "description": "The description text for the maintenance"
    }
  }
}
object UnitModel
{
  "type": "object",
  "example": "{\n  \"id\": \"MUC-MTA\",\n  \"name\": \"A.101\",\n  \"description\": {\n    \"en\": \"First Floor Room 1\",\n    \"de\": \"1.OG Zimmer 1\"\n  },\n  \"property\": {\n    \"id\": \"MUC\",\n    \"code\": \"MUC\",\n    \"name\": \"Demo Hotel Munich\",\n    \"description\": \"This is the demo hotel Munich\"\n  },\n  \"unitGroup\": {\n    \"id\": \"MUC-DBL\",\n    \"code\": \"DBL\",\n    \"name\": \"Double\",\n    \"description\": \"Double\",\n    \"type\": \"BedRoom\"\n  },\n  \"connectingUnit\": {\n    \"id\": \"MUC-QKY\",\n    \"name\": \"S.101\",\n    \"description\": \"Suite room\",\n    \"unitGroupId\": \"MUC-SUI\"\n  },\n  \"status\": {\n    \"isOccupied\": false,\n    \"condition\": \"Clean\",\n    \"maintenance\": {\n      \"id\": \"MUC-MTA-SGHZD\",\n      \"from\": \"2024-04-16T18:32:00.2281585+02:00\",\n      \"to\": \"2024-04-18T18:32:00.2281585+02:00\",\n      \"type\": \"OutOfService\",\n      \"description\": \"The remote control for the TV needs to be replaced.\"\n    }\n  },\n  \"maxPersons\": 2,\n  \"created\": \"0001-01-01T00:00:00Z\",\n  \"attributes\": [\n    {\n      \"id\": \"KQOSXHLS\",\n      \"name\": \"Floor 3\",\n      \"description\": \"Floor number\"\n    },\n    {\n      \"id\": \"ADVFSSUL\",\n      \"name\": \"Street view\",\n      \"description\": \"View from the room\"\n    }\n  ],\n  \"connectedUnits\": []\n}",
  "required": [
    "created",
    "description",
    "id",
    "maxPersons",
    "name",
    "property",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unit id"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name for the unit"
    },
    "status": {
      "$ref": "#/components/schemas/UnitStatusModel"
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "Date of creation<br />A date and time (without fractional second part) in UTC or with UTC offset as defined in <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601:2004</a>"
    },
    "property": {
      "$ref": "#/components/schemas/EmbeddedPropertyModel"
    },
    "unitGroup": {
      "$ref": "#/components/schemas/EmbeddedUnitGroupModel"
    },
    "attributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UnitAttributeModel"
      },
      "description": "Collection of user defined attributes of unit"
    },
    "maxPersons": {
      "type": "integer",
      "format": "int32",
      "description": "Maximum number of persons for the unit"
    },
    "description": {
      "type": "object",
      "description": "The description for the unit",
      "additionalProperties": {
        "type": "string"
      }
    },
    "connectedUnits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConnectedUnitModel"
      },
      "description": "Collection of connected units"
    },
    "connectingUnit": {
      "$ref": "#/components/schemas/EmbeddedUnitModel"
    }
  }
}
object UnitStatusModel
{
  "type": "object",
  "required": [
    "condition",
    "isOccupied"
  ],
  "properties": {
    "condition": {
      "enum": [
        "Clean",
        "CleanToBeInspected",
        "Dirty"
      ],
      "type": "string"
    },
    "isOccupied": {
      "type": "boolean"
    },
    "maintenance": {
      "$ref": "#/components/schemas/UnitMaintenanceModel"
    }
  }
}

Versions

Version Endpoints Schemas Ingested Status
v1 33 46 2026-05-11 current
v1 33 46 2026-04-16