swagger: '2.0' info: title: Device42 API version: '2.0' description: >-

API Overview


Restful API are supported in Device42 as one of the primary methods of entering, editing and retrieving data.

If you'd like to see your changes on our UI, please visit http://swaggerdemo.device42.com and use credentials 'guest:device42_rocks!'. Please be aware that every 30 minutes our database resets and all data entered with POST/PUT calls from this page will be lost.

If you have any questions/suggestions, please send us a note to support at device42.com below.

NOTE: Secrets/Password passphrase has been disabled on the swagger demo instance. When you use Try It functionality with API method that provides or modifies a secret, you will receive an error.

API Authentication

The RESTful API's enforce the role-based security that is created with the Device42 app and support two HTTP authentication schemes: Basic Authentication and Token Authentication.

Basic Authentication
Using Basic Authentication, the API consumer sends an Authorization header that contains the string 'Basic ' followed by a base64-encoded string username:password. The username and password must be those of a Device42 user. If you want a user to have access via the API, but not via the UI - deselect 'Staff Status' for that user from UI Tools > Admins & Permissions > Administrators.

Token Authentication
Token authentication uses a digitally signed token, called a Bearer token, to provide secure, credential-less API call authorizations. When using Bearer tokens, the API consumer sends an Authorization header that contains the string 'Bearer ' followed by the Bearer token data returned by Device42.

Device42 Bearer tokens are secure JWT tokens using an RSA SHA256 encrypted signature. The RSA encryption keys used to encrypt the tokens are unique to each Device42 installation. Bearer tokens are time limited, and, once expired, cannot be used again.

When using token authentication, a Device42 entity called an API Client is required and an additional step is necessary before making API calls. The API consumer must request a token by authenticating with an API Client. If the authentication succeeds, a token is returned and API Calls can then be made using the token as the Bearer token.

API Clients are created as needed by a Device42 administrator. API Clients act as a proxy to a Device42 user (the user must have its Staff Status deselected). Role-based security is inherited by the API Client from the associated Device42 user.

When an API Client is created, a pair of universally unique ids are generated, called the Client key and Client Secret key. The Client key identifies the API Client. The Client and Client Secret keys are used as username and password respectively when requesting a token.

To request a token, the API consumer sends a POST request to the Device42 /tauth/1.0/token/ endpoint. The request uses Basic authentication with the username set to the Client key and the password set to Cient Secret key. The successful response to this request will be a JSON object containing the token and other properties. The token is then used in subsequent Device42 API calls as the Bearer token.

Tokens can also be extended and deleted using the /tauth/1.0/token/ endpoint.

For a walkthrough on setting up Token authentication visit API Token Usage in Details

Response & Status Messages

Responses
The response to most POST calls will have the following format:
{'msg':['PartModel added/updated', 17, 'RAM Acme 123456', true, true], 'code':0}

Using the example above:
'17' = ID of the object
'RAM Acme 123456' = representation of the object
'true, true' = object added and is new.
'true, false' = object updated.
'false, false' = no changes.

Status Codes
Code 0
Success! e.g. = {'msg': 'device added or updated', code:0}

'HTTP/1.1 200 OK'
Success! All other responses are errors and will display an error code e.g.: 400, 401, 403, 405, 410, 500, 503. These are explained in each call.

Please let us know if you notice something odd with a response and we will fix it! :)

API Get Limits and Offsets

In Device42’s global settings we have the option to enforce API GET limits and this setting is recommended for better performance. To set this value from Device42, go to Tools>Settings>Global Settings and the click Edit in the top right. Toward the bottom of the screen you will see the API section. First check the “Enforce API GET Limits” checkbox, then enter a value for API GET Limit. A good limit to start with is 500 or 1000, depending on the performance you experience.

After setting this limit all GET calls below can have the results augmented via “offset” and “limit” parameters to tell Device42 which value to start returning results from, and how many results to return at maximum.
Examples:

'/?limit=50' returns the first 50 results.

'/?offset=100' will start at the 101st result.

'/?offset=42&limit=42' returns 42 results, starting at the 43rd.

Note that offset is used for paging - that is, the offset is only applied when the total number of objects returned exceeds the limit that is returned.


Commit: #32c1febff793446e935f2c73862bfa7a6cc9c9c9 contact: name: Device42 email: support@device42.com host: swaggerdemo.device42.com schemes: - https consumes: - application/json - application/x-www-form-urlencoded produces: - application/json paths: /tauth/1.0/token/: post: operationId: postapitoken summary: Request an API Token description: >- Used to request a token from an API Client. Once a token has been obtained, the token can be used as the Bearer token on subsequent API calls The Client key and Client secret key of an API Client are provided as Basic authentication userid and password. tags: - API Token Authentication responses: '200': description: 'The above command returns results like this:' schema: properties: code: example: '0' expires: example: '2022-02-03T19:23:03.267Z' token: example: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJEZXZpY2U0MiIsInRva2VuX2lkIjozOSwiY2xpZW50X2lkIjo2LCJleHAiOjE2NDM5MTYxODMsImV4aSI6NjAwfQ.CYZvhvXtKTpOJRpeQudAzFlqjdZc5tTx3oS9XOwXk_N2P9WCmQlsiXSFSVVUsU3XGRprLEULrBKlcpuo08c4mZxiNGV99X40HFWlGrWWjB0scW3CwHX0c2Y6xHbUhH70Fhw5J2ivMsuwb5ecUuQnVqLzXPAriirwjn90ikCEF56_1MPWN9Qgy6r_ZjSre2JpCFgkPZ0PKAMkq-lTH1FNLwcTGG9dB8BwWW7okEQdvU_RJsjJZCOj-i5AdPcWrHMAqpJKE1FqKTSOCD3YbMIbsLA0rhCUFzqaIgUKm8kcknCTjcpPrpzKk6toqA82UuToW8IUFoyLO7-p3hbKForc8PQR5lu3wcoqpQ_kIWRuT3e9uai7VFOZ-oZMXGnXgNrR32FVPg7ZGZBxMmTh-C_MByp9RAWa0Uqhx0cyYOe-C9uUaixXB73qigTsSSrpKGRyl96e5WqCwDeztG8XCLMiSBceZW8JSLBL-Kt10xIuSHue0bnDz6kH5kdgnc_b6l1Q5EWYIVM_BmWGj0yq5WF0cPFHlOc2rjcLZFiVsY6M0kiMIFN1EdJskP_4JS3UgnP7QwYCjUvalpJUiU85Qri_SvVqvZeXcQfTiD8BX_nT59IlopD0JIRL8ajc3RQS6g8mYNdFkzKz2jSADuryTW-yFQMo0IoYfZQLX1Xs9FrQVYc' ttl: example: 10 msg: example: 'connected' token_id: example: 42 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /tauth/1.0/token/{token_id}/: put: operationId: putapitoken summary: Extend an API Token description: >- Used to extend the expiraton time of the API Token provided as the Bearer token. The token is extended by the Time to Live value set by the API Client. The id of the token is required. It is important to note that, when this request completes, a new token is generated along with a new token_id. The new token must be used as the Bearer token in subsequent API calls. The original token is invalid and has been deleted. tags: - API Token Authentication parameters: - $ref: '#/parameters/token_id' responses: '200': description: 'The above command returns results like this:' schema: properties: code: example: '0' expires: example: '2022-02-03T19:27:01.872Z' token: example: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJEZXZpY2U0MiIsInRva2VuX2lkIjo0MCwiY2xpZW50X2lkIjo2LCJleHAiOjE2NDM5MTY0MjEsImV4aSI6NjAwfQ.Uko8axOaUuJDt6IRsNZhzBZSrAG_0jMyHHJGN3x3i3PqA-xaVO3P5djud3D7Jz4GkYolEZQSudMB9FE8NPQXVCjjuUVMbGKmBele_oIxnC1dAwnJ0H2ZDC2AM1GO-8685nmi39wMEPrtfm0PbY8KW4uB4_BJOQWVv4GYd_J_c4wxQ-THKRir8fFRyNO5Jjr220-Irn6Le2zV4DqoSbLG88gATjECbUSKyBIQwwB_zPHe05xYyP5DCKF7FRAl5kab1HZYWJ_0FBVYyqddSgZxQ4und3u5TgIVtp3VXrFdOKFAmj9pAK8kNieApxb4-NY2jZYmwGZpu3yca-tULj3q-dn3RXq5niZBD1cJqvsI-fkiOrD_OMvraR95OJqEo93OWILbS5rXXQAHS_zONkKkoEKe1kCb7EzW59-Z8eQI0UxgtYJM238ZCLxvucIjg518zSsxDOV7TK875FL-WyCiRZ4N86gbCHJvWkfqCb1Dx5MojgujMOG0LkE2zs9LMyftUDFx1MYf756xgt-iILZyQFD1Su-uHHjqV1Pb5_-fqTWg3XfD3ALNmmX8mdEux_GPRbeaHTSASaRtVXJVDrqLO18rg93xraTKF1J1IvgtxjI3bPSQ99o3z_LK1sSg0dFcUJw3dHb3OG-jaW3KnGRkKlCldFaWsb1eL9HP4nxL1wU' ttl: example: 10 msg: example: 'connected' token_id: example: 43 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' delete: operationId: deleteapitoken summary: Delete an API Token description: >- Used to deelete the API Token provided as the Bearer token. The token is deleted thus preventing it from validating in subsequent API call. The id of the token is required. tags: - API Token Authentication parameters: - $ref: '#/parameters/token_id' responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: 'API Token deleted' code: example: '0' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/api_clients/: get: operationId: getapiclients summary: Get All API Clients description: >- Get all API Clients tags: - API Clients responses: '200': description: 'The above command returns results like this:' schema: properties: api_client: type: array items: $ref: '#/definitions/api_client' total_count: example: 1 limit: example: 1000 offset: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' post: operationId: postAPIClient description: This call will create/update an API Client summary: Create/update API Client tags: - API Clients parameters: - name: client_key type: string description: unique client key in: formData - name: client_secret_key type: string description: unique client secret key in: formData - name: resource_owner type: string description: username of a Device42 non-staff user in: formData - name: token_ttl type: integer description: token time to live in seconds in: formData - name: active type: boolean description: true if the token is active in: formData responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: - 7 - "57a1272bd48940a29f3b3b0fc78acc4e" - true - true code: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/api_clients/{client_id}: get: operationId: getapiclient_id summary: Get an API Client description: >- Get an API Client by ID tags: - API Clients parameters: - name: client_id in: path description: API Client ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: $ref: '#/definitions/api_client' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' delete: operationId: deleteapiclient_id summary: Delete an API Client description: >- Delete an API Client by ID tags: - API Clients parameters: - name: client_id in: path description: API Client ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: properties: deleted: example: 'true' id: example: '3' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/api_client_keys/: get: operationId: getapiclientkeys summary: Get API Client Keys description: >- This API retrieves key and secret key for an API client tags: - API Client Keys responses: '200': description: 'The above command returns results like this:' schema: properties: apiclient_key: example: "0a7048d7be904028b798900657d4c8b9" apiclient_secret_key: example: "aa460be4f08a48488bb46b03eae07736_6468d3616a61430190ad65fceaf38b1a" '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' # AWS Roles API /api/2.0/aws_roles/: get: operationId: getawsroles summary: Get All AWS Roles description: >- Get all AWS Roles tags: - AWS Roles responses: '200': description: 'The above command returns results like this:' schema: properties: aws_roles: type: array items: $ref: '#/definitions/aws_role' total_count: example: 1 limit: example: 1000 offset: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' post: operationId: postawsroles description: This call will create/update an AWS Role summary: Create/update AWS Role tags: - AWS Roles parameters: - name: name' type: string description: Device42 AWS Role object name in: formData required: true - name: role_name type: string description: AWS Role name in: formData required: true - name: role_description type: string description: Device42 description of the Role object in: formData - name: account_id type: string description: Optional AWS Account ID (to add with this Role) in: formData - name: external_id type: string description: Optional External ID for the Optional AWS Account in: formData responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: - 7 - "example role" - true - true code: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/aws_roles/{aws_role_id}: get: operationId: getaawsrole_id summary: Get an AWS Role by ID description: >- Get an AWS Role by ID tags: - AWS Roles parameters: - name: aws_role_id in: path description: AWS Role ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: $ref: '#/definitions/aws_role' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' delete: operationId: deleteawsrole_id summary: Delete an AWS Role description: >- Delete an AWS Role by ID tags: - AWS Roles parameters: - name: aws_role_id in: path description: AWS Role ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: properties: deleted: example: 'true' id: example: '3' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/aws_roles/accounts/: get: operationId: getaawsaccountaccount_id summary: Get AWS Role Accounts description: >- Get AWS Role Accounts, optionally limited to acccounts for a specified AWS Role tags: - AWS Roles parameters: - name: aws_role_id in: query description: Optional AWS Role ID. (If provided, account list will be limited to the accounts linked to this role.) type: integer responses: '200': description: 'The above command returns results like this:' schema: properties: aws_accounts: type: array items: $ref: '#/definitions/aws_role_account' total_count: example: 1 limit: example: 1000 offset: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' post: operationId: postawsaccount description: This call will create/update an AWS Role Account summary: Create/update AWS Role Account tags: - AWS Roles parameters: - name: aws_role_id type: string description: Device42 AWS Role to add this AWS Account to in: formData required: true - name: aws_account_id type: string description: AWS Account ID in: formData required: true - name: external_id type: string description: Optional AWS External ID for the AWS Account in: formData responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: - 12 - "999999999999" - true - true code: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/2.0/aws_roles/accounts/{aws_account_id}: get: operationId: getaawsaccountaccount_id summary: Get an AWS Role Account by ID description: >- Get an AWS Role Account by ID tags: - AWS Roles parameters: - name: aws_account_id in: path description: AWS Role Account ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: $ref: '#/definitions/aws_role_account' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' delete: operationId: deleteawsroleaccount_id summary: Delete an AWS Role Accont description: >- Delete an AWS Role Account by ID tags: - AWS Roles parameters: - name: aws_account_id in: path description: AWS Role Account ID type: integer required: true responses: '200': description: 'The above command returns results like this:' schema: properties: deleted: example: 'true' id: example: '3' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/1.0/buildings/: get: operationId: getBuildings description: Retrieve information about all buildings summary: Get all tags: - Buildings parameters: - $ref: '#/parameters/name' - $ref: '#/parameters/building_include_cols' responses: '200': description: 'The above command returns results like this:' schema: properties: buildings: $ref: '#/definitions/buildings' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' post: operationId: postBuildings description: Create/update building summary: Create/update tags: - Buildings parameters: - name: name type: string in: formData required: true description: Name of building - name: latitude type: string in: formData description: north-south position - name: longitude type: string in: formData description: east-west position - $ref: '#/parameters/address_post' - $ref: '#/parameters/contact_name_post' - $ref: '#/parameters/contact_phone_post' - $ref: '#/parameters/notes_post' - $ref: '#/parameters/groups_post' - name: tags type: string description: add tags (comma separated) in: formData - name: tags_remove type: string in: formData description: comma separated tags to remove - name: new_name type: string in: formData description: Change name of an existing building. This parameter is ignored when creating a new building. responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: - Building added/updated successfully - 4 - main office code: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' '/api/1.0/buildings/{ID}/': get: operationId: getBuildingByID description: This call will get a building by ID summary: Get specific building by id tags: - Buildings parameters: - name: id in: path description: Building ID. type: integer required: true - $ref: '#/parameters/building_include_cols' responses: '200': description: 'The above command returns results like this:' schema: $ref: '#/definitions/building' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' delete: operationId: deleteBuildings summary: Delete description: >- This API is used to delete the building with the building id supplied as the required argument tags: - Buildings parameters: - name: ID type: integer in: path description: building id required: true responses: '200': description: 'The above command returns results like this:' schema: properties: deleted: example: 'true' id: example: '114' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/1.0/custom_fields/building/: put: operationId: putCustom_fieldsBuilding summary: Custom fields description: >- Create or update custom fields for building. "ID" or "name" of building is needed even when value is not being changed tags: - Buildings parameters: - name: name type: string in: formData description: Name of building - name: id type: string in: formData description: ID of building - $ref: '#/parameters/key' - $ref: '#/parameters/custom_field_type' - $ref: '#/parameters/mandatory' - $ref: '#/parameters/filterable' - $ref: '#/parameters/log_for_api' - $ref: '#/parameters/related_field_name' - $ref: '#/parameters/add_to_picklist' - $ref: '#/parameters/remove_from_picklist' - $ref: '#/parameters/delete_in_use' - $ref: '#/parameters/related_field_value_by_id' - $ref: '#/parameters/value' - $ref: '#/parameters/clear_value' - $ref: '#/parameters/notes_post' - $ref: '#/parameters/clear_notes' - $ref: '#/parameters/groups_post' - $ref: '#/parameters/bulk_fields' - $ref: '#/parameters/multi_select' responses: '200': description: 'The above command returns results like this:' schema: properties: msg: example: - custom key pair values added or updated - 2 - main office code: example: 0 '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' /api/1.0/rooms/: get: operationId: getRooms description: Retrieve information about all rooms summary: Get all tags: - Rooms parameters: - $ref: '#/parameters/name' - $ref: '#/parameters/building_id' - $ref: '#/parameters/building' responses: '200': description: 'The above command returns results like this:' schema: properties: rooms: $ref: '#/definitions/rooms' '400': $ref: '#/definitions/BadRequest' '401': $ref: '#/definitions/Unauthorized' '403': $ref: '#/definitions/Forbidden' '404': $ref: '#/definitions/NotFound' '500': $ref: '#/definitions/InternalServerError' '503': $ref: '#/definitions/ServiceUnavailable' post: operationId: postRooms description: >- Create or update a Room. Required parameters: