Skip to content

AccessControl Changelog

2.2.1-rc.1

Rolls the published reference forward from 2.0.0-rc.1 and bundles every change made since then (2.0.1 to 2.2.1).

Server URL The reference now uses the public base URL /api/v2, so the operations are reached at /api/v2/access/... (e.g. GET /api/v2/access/keys). The previous reference combined /api/v1/access with paths that already start with /access, which doubled the prefix. The operation paths themselves are unchanged.

Breaking changes

  • Keys: startTime and endTime in key responses can be null.
  • Keys: key responses no longer contain providerId and type.
  • Keys: POST /access/controllers/{controllerId}/key and PUT /access/keys/{keyId} take a single Key object instead of a choice between KeyCard and PinCode.
  • Units: code in unit responses can be null.

New

  • Batch key creation: POST /access/controllers/{controllerId}/keys (experimental).
  • Key reconciliation for a stay: PUT /access/controllers/{controllerId}/keys/by-reservation/{stayExternalId}.
  • Card dispenser operations under /access/dispensers: status, set state, place card, and reset the cache for one dispenser or for all of them.
  • Provider capabilities and extensions: GET /access/providers/{configurationId}/capabilities and GET /access/providers/{configurationId}/extensions/{extensionName}.
  • Error responses (400, 404, 422, 500, 502) are documented as RFC 9457 ProblemDetails (application/problem+json).

Changed

  • The documentation now states the rules under which a key request is rejected.

Changes since 2.0.0-rc.1. Operations: 9 added, 9 changed, 0 removed · 20 breaking changes

Detected breaking changes

20 breaking changes in 8 operations
  • GET /access/controllers/{controllerId}/key
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
  • GET /access/keys
    • the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
    • removed the required property '/allOf[subschema #2]/data/items/allOf[subschema #4 -> subschema #3]/providerId' from the response with the '200' status
    • removed the required property '/allOf[subschema #2]/data/items/allOf[subschema #4 -> subschema #3]/type' from the response with the '200' status
  • GET /access/keys/{keyId}
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
    • removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/providerId' from the response with the '200' status
    • removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/type' from the response with the '200' status
  • GET /access/units
    • the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Unit]/code' became nullable for the status '200'
  • GET /access/units/{unitId}
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Unit]/code' became nullable for the status '200'
  • POST /access/controllers/{controllerId}/key
    • added '#/components/schemas/Key, #/components/schemas/ResponseWithIdentifier, subschema #3' to the request body 'allOf' list
    • removed 'subschema #1: KeyCard, subschema #2: PinCode' from the request body 'oneOf' list
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '201'
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '201'
    • removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/type' from the response with the '201' status
  • POST /access/units
    • the response property '/allOf[subschema #2]/data/allOf[subschema #1: Unit]/code' became nullable for the status '201'
  • PUT /access/keys/{keyId}
    • added '#/components/schemas/Key, #/components/schemas/ResponseWithIdentifier, subschema #3' to the request body 'allOf' list
    • the request's body type/format changed from 'object'/'' to ''/''

Operations

  • POST /access/controllers/{controllerId}/keys added
  • PUT /access/controllers/{controllerId}/keys/by-reservation/{stayExternalId} added
  • GET /access/dispensers/{dispenserId}/status added
  • PUT /access/dispensers/{dispenserId}/status/{state} added
  • PUT /access/dispensers/{dispenserId}/place-card/{cardPosition} added
  • POST /access/dispensers/{dispenserId}/reset-cache added
  • POST /access/dispensers/reset-all-cache added
  • GET /access/providers/{configurationId}/capabilities added
  • GET /access/providers/{configurationId}/extensions/{extensionName} added
  • GET /access/controllers/{controllerId}/key changed
  • GET /access/keys changed
  • GET /access/keys/{keyId} changed
  • GET /access/units changed
  • GET /access/units/{unitId} changed
  • POST /access/controllers/{controllerId}/key changed
  • POST /access/units changed
  • PUT /access/keys/{keyId} changed
  • PUT /access/units/{unitId} changed
All 92 changes in detail
  • GET /access/controllers/{controllerId}/key
    • added the media type 'application/problem+json' for the response with the status '500'
    • added the non-success response with the status '404'
    • added the non-success response with the status '502'
    • removed the optional property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/type' from the response with the '200' status
    • removed '#/components/schemas/KeyTypeKeycard' from the '/allOf[subschema #2]/data' response property 'allOf' list for the response status '200'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
    • added discriminator to '/allOf[subschema #2]/data' response property for the response status '200'
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/providerId' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/type' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/keyType' to the response with the '200' status
  • GET /access/dispensers/{dispenserId}/status
    • endpoint added
  • GET /access/keys
    • added the new optional 'query' request parameter 'filter'
    • added the new optional 'query' request parameter 'page'
    • added the non-success response with the status '400'
    • added the non-success response with the status '500'
    • removed '#/components/schemas/KeyTypes' from the '/allOf[subschema #2]/data/items/' response property 'allOf' list for the response status '200'
    • breaking: the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • breaking: the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
    • added discriminator to '/allOf[subschema #2]/data/items/' response property for the response status '200'
    • added the required property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/providerId' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/items/allOf[subschema #1: Key]/type' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/items/allOf[subschema #4 -> subschema #3]/keyType' to the response with the '200' status
    • breaking: removed the required property '/allOf[subschema #2]/data/items/allOf[subschema #4 -> subschema #3]/providerId' from the response with the '200' status
    • breaking: removed the required property '/allOf[subschema #2]/data/items/allOf[subschema #4 -> subschema #3]/type' from the response with the '200' status
  • GET /access/keys/{keyId}
    • added the non-success response with the status '404'
    • added the non-success response with the status '500'
    • removed '#/components/schemas/KeyTypes' from the '/allOf[subschema #2]/data' response property 'allOf' list for the response status '200'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '200'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '200'
    • added discriminator to '/allOf[subschema #2]/data' response property for the response status '200'
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/providerId' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/type' to the response with the '200' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/keyType' to the response with the '200' status
    • breaking: removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/providerId' from the response with the '200' status
    • breaking: removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/type' from the response with the '200' status
  • GET /access/providers/{configurationId}/capabilities
    • endpoint added
  • GET /access/providers/{configurationId}/extensions/{extensionName}
    • endpoint added
  • GET /access/units
    • added the new optional 'query' request parameter 'filter'
    • added the new optional 'query' request parameter 'page'
    • added the non-success response with the status '400'
    • added the non-success response with the status '500'
    • breaking: the response property '/allOf[subschema #2]/data/items/allOf[subschema #1: Unit]/code' became nullable for the status '200'
  • GET /access/units/{unitId}
    • added the non-success response with the status '404'
    • added the non-success response with the status '500'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Unit]/code' became nullable for the status '200'
  • POST /access/controllers/{controllerId}/key
    • breaking: added '#/components/schemas/Key, #/components/schemas/ResponseWithIdentifier, subschema #3' to the request body 'allOf' list
    • added request discriminator
    • breaking: removed 'subschema #1: KeyCard, subschema #2: PinCode' from the request body 'oneOf' list
    • added the non-success response with the status '400' (and 3 more of response-non-success-status-added)
    • removed '#/components/schemas/KeyTypes' from the '/allOf[subschema #2]/data' response property 'allOf' list for the response status '201'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/endTime' became nullable for the status '201'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/startTime' became nullable for the status '201'
    • added discriminator to '/allOf[subschema #2]/data' response property for the response status '201'
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/providerId' to the response with the '201' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #1: Key]/type' to the response with the '201' status
    • added the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/keyType' to the response with the '201' status
    • breaking: removed the required property '/allOf[subschema #2]/data/allOf[subschema #4 -> subschema #3]/type' from the response with the '201' status
  • POST /access/controllers/{controllerId}/keys
    • endpoint added
  • POST /access/dispensers/reset-all-cache
    • endpoint added
  • POST /access/dispensers/{dispenserId}/reset-cache
    • endpoint added
  • POST /access/units
    • the request property 'code' became nullable
    • added the non-success response with the status '400'
    • added the non-success response with the status '422'
    • added the non-success response with the status '500'
    • breaking: the response property '/allOf[subschema #2]/data/allOf[subschema #1: Unit]/code' became nullable for the status '201'
  • PUT /access/controllers/{controllerId}/keys/by-reservation/{stayExternalId}
    • endpoint added
  • PUT /access/dispensers/{dispenserId}/place-card/{cardPosition}
    • endpoint added
  • PUT /access/dispensers/{dispenserId}/status/{state}
    • endpoint added
  • PUT /access/keys/{keyId}
    • breaking: added '#/components/schemas/Key, #/components/schemas/ResponseWithIdentifier, subschema #3' to the request body 'allOf' list
    • added request discriminator
    • breaking: the request's body type/format changed from 'object'/'' to ''/''
    • removed the request property 'authorizations' (and 8 more of request-property-removed)
  • PUT /access/units/{unitId}
    • the request property 'code' became nullable
  • null null
    • removed the schema 'AccessControlProviderBaseConfiguration' (and 6 more of api-schema-removed)

2.0.0-rc.1

Operations: 12 operations added, 22 removed

specification details:

  • /x-tagGroups/0/tags/0, /x-tagGroups/0/tags/1 added
  • /x-tagGroups/0/name, /tags/3/name, /tags/3/description, /info/version, /info/description changed
  • /x-tagGroups/1, /x-tagGroups/0/tags/0, /x-tagGroups/0/tags/1, /x-tagGroups/0/tags/2 removed

POST /providers: removed

GET /providers: removed

GET /providers/{providerId}: removed

PUT /providers/{providerId}: removed

DELETE /providers/{providerId}: removed

GET /providers/{providerId}/controllers: removed

POST /providers/{providerId}/controllers: removed

DELETE /providers/{providerId}/controllers/{controllerId}: removed

GET /providers/{providerId}/controllers/{controllerId}: removed

PUT /providers/{providerId}/controllers/{controllerId}: removed

GET /units: removed

POST /units: removed

GET /units/{unitId}: removed

DELETE /units/{unitId}: removed

PUT /units/{unitId}: removed

POST /controllers/{controllerId}/key: removed

GET /controllers/{controllerId}/key: removed

DELETE /controllers/{controllerId}/key: removed

GET /keys: removed

GET /providers/{providerId}/keys/{keyId}: removed

PUT /providers/{providerId}/keys/{keyId}: removed

DELETE /providers/{providerId}/keys/{keyId}: removed

GET /access/units: added

POST /access/units: added

GET /access/units/{unitId}: added

DELETE /access/controllers/{controllerId}/key: added

GET /access/keys: added

GET /access/keys/{keyId}: added

PUT /access/keys/{keyId}: added

DELETE /access/keys/{keyId}: added

0.2.0-rc.9

Operations: 3 operations added, 19 changed, 3 removed

specification details:

  • /info/version changed

POST /controllers/{controllerId}/key: removed

GET /controllers/{controllerId}/key: removed

DELETE /controllers/{controllerId}/key: removed

GET /controllers/{controllerId}/keys: added

POST /controllers/{controllerId}/keys: added

DELETE /controllers/{controllerId}/keys: added

DELETE /providers/{providerId}/keys/{keyId}:

  • /description changed

  • header parameter Accept: added

  • response 200: added

  • response 204: removed PUT /providers/{providerId}/keys/{keyId}:

  • header parameter Accept: added

  • request:

    • body application/vnd.api+json:
      • property /schema/properties/unitName: removed
      • property /schema/properties/unit: added
      • property /schema/properties/deAuthorizations: changed
      • property /schema/properties/authorizations: changed
  • response 200: added

  • response 204: removed GET /providers/{providerId}/keys/{keyId}:

  • header parameter Accept: added

GET /keys:

  • header parameter Accept: added

  • response 200:

    • body application/vnd.api+json:
      • property /schema/properties/links: added PUT /units/{unitId}:
  • header parameter Accept: added

  • response 200: added

  • response 204: removed DELETE /units/{unitId}:

  • /summary changed

  • header parameter Accept: added

GET /units/{unitId}:

  • header parameter Accept: added

POST /units:

  • header parameter Accept: added

GET /units:

  • header parameter Accept: added

  • response 200:

    • body application/vnd.api+json:
      • property /schema/properties/links: changed
      • property /schema/properties/links/properties/self: changed PUT /providers/{providerId}/controllers/{controllerId}:
  • /deprecated removed

GET /providers/{providerId}/controllers/{controllerId}:

  • /deprecated removed

DELETE /providers/{providerId}/controllers/{controllerId}:

  • /deprecated removed

  • response 200: added

  • response 204: removed POST /providers/{providerId}/controllers:

  • /deprecated removed

  • header parameter Accept: added

GET /providers/{providerId}/controllers:

  • /deprecated removed

  • header parameter Accept: added

  • response 200:

    • body application/vnd.api+json:
      • property /schema/properties/links: changed
      • property /schema/properties/links/properties/self: changed DELETE /providers/{providerId}:
  • /deprecated removed

  • header parameter Accept: added

  • response 200: added

  • response 204: removed PUT /providers/{providerId}:

  • /deprecated removed

  • header parameter Accept: added

GET /providers/{providerId}:

  • /deprecated removed

  • header parameter Accept: added

  • response 200:

    • body application/vnd.api+json:
      • property : changed
      • property /schema/oneOf/2/properties/data: changed
      • property /schema/oneOf/2/properties/data/properties/type: changed
      • property /schema/oneOf/2/properties/data/properties/id: changed
      • property /schema/oneOf/1/properties/data: changed
      • property /schema/oneOf/1/properties/data/properties/type: changed
      • property /schema/oneOf/1/properties/data/properties/id: changed
      • property /schema/oneOf/0/properties/data: changed
      • property /schema/oneOf/0/properties/data/properties/type: changed
      • property /schema/oneOf/0/properties/data/properties/id: changed GET /providers:
  • /deprecated removed

  • header parameter Accept: added

  • response 200:

    • body application/vnd.api+json:
      • property /schema/oneOf/2/properties/links: added
      • property /schema/oneOf/1/properties/links: added
      • property /schema/oneOf/0/properties/links: added POST /providers:
  • /deprecated removed

  • header parameter Accept: added

0.2.0-rc.7

Deprecated all /providers/* and /controllers/* endpoints. These endpoints will be removed in the next release and were only aliases for the configuration api.

Operations: 5 operations added, 2 changed, 4 removed

specification details:

  • /tags/1/description, /info/version changed

GET /providers/{providerId}/controllers/{controllerId}/keys: removed

POST /providers/{providerId}/controllers/{controllerId}/keys: removed

DELETE /providers/{providerId}/controllers/{controllerId}/keys: removed

GET /providers/{providerId}/keys: removed

GET /controllers/{controllerId}/keys: added

POST /controllers/{controllerId}/keys: added

DELETE /controllers/{controllerId}/keys: added

PUT /providers/{providerId}/keys/{keyId}:

  • request:
    • body application/vnd.api+json:
      • property /schema/properties/start: removed
      • property /schema/properties/end: removed
      • property /schema/properties/startDate: added
      • property /schema/properties/endDate: added
      • property /schema/properties/startTime: added
      • property /schema/properties/endTime: added DELETE /units/{unitId}: added

PUT /units/{unitId}: added

POST /units:

  • request:
    • body application/vnd.api+json:
      • property /schema/properties/providerId: changed

0.2.0-rc.6

Initial public release candidate 0.2.0-rc.6