Allegion Devices API

ENGAGE hardware discovery and commissioning (Allegion Device Communication SDK)

Documentation

Specifications

Schemas & Data

Other Resources

🔗
Blog
https://developer.allegion.com/en/products/schlage-home/schlage-home-api-blog.html
🔗
Webhooks
https://developer.allegion.com/en/products/schlage-home/best-practices.html
🔗
ReleaseNotes
https://developer.allegion.com/en/release-notes.html
🔗
SpectralRules
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/rules/schlage-home-rules.yml
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-list-devices-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-create-access-code-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/schlage-home-webhook-subscription-example.json
🔗
Tutorials
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
SDKs
https://developer.allegion.com/en/products/schlage-mobile-credentials/mobile-sdk.html
🔗
SDKs
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
TermsOfService
https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
🔗
SpectralRules
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/rules/engage-credentialing-rules.yml
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/engage-upload-credential-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/allegion/refs/heads/main/examples/engage-list-credentials-example.json

OpenAPI Specification

allegion-devices-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: ENGAGE Cloud Credentialing Access Codes Devices API
  version: '1.0'
  description: 'REST API hosted on the Allegion Device Management and Mobile Access Cloud

    (Engage Cloud) for managing BLE Mobile Credentials that unlock ENGAGE Gen 2

    Schlage hardware (Control B, NDEB, LEBMS/LEBMD locks; MTKB readers) and

    Von Duprin RU/RM exit devices.


    The Credentialing API performs functions to upload, delete, and get active

    lists of mobile credentials through the API, and is used by an Access

    Management Platform / Access Control System (ACS) to issue credentials that

    the Allegion BLE Mobile Access SDK then presents to hardware over Bluetooth.


    Authentication requires an `alle-subscription-key` header plus a Basic Auth

    token generated from ENGAGE credentials. Integrators must sign the Allegion

    Security Token Agreement before being granted access to the API or to the

    private GitHub repositories that contain the iOS and Android SDKs.


    Generated from public documentation at

    https://developer.allegion.com/en/products/schlage-mobile-credentials.

    Path naming is inferred from documented capability descriptions.

    '
  contact:
    name: Allegion Developer Support
    url: https://developersupport.allegion.com/hc/en-us
  termsOfService: https://developer.allegion.com/en/products/schlage-mobile-credentials/how-to-integrate-schlage-ble-mobile-credentials-with-an-access-control-system.html
servers:
- url: https://api.allegion.com/engage
  description: Production
security:
- SubscriptionKey: []
  BasicAuth: []
tags:
- name: Devices
  description: ENGAGE hardware discovery and commissioning (Allegion Device Communication SDK)
paths:
  /devices:
    get:
      tags:
      - Devices
      summary: List ENGAGE Devices
      description: List ENGAGE hardware enrolled in the integrator's tenant. Surfaces the inputs the Allegion Device Communication SDK uses for commissioning.
      operationId: listEngageDevices
      responses:
        '200':
          description: Devices returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  devices:
                    type: array
                    items:
                      $ref: '#/components/schemas/EngageDevice'
  /devices/{deviceId}:
    get:
      tags:
      - Devices
      summary: Get Device
      description: Returns a single device including lock state, battery level, WiFi signal strength, firmware, and connectivity state.
      operationId: getDevice
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      responses:
        '200':
          description: Device returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Device'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Devices
      summary: Update Device
      description: Update device configuration (name, default lock timer, vacation mode). Returns 202 ACCEPTED and emits a command that completes asynchronously.
      operationId: updateDevice
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceUpdate'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /devices/{deviceId}/lock:
    post:
      tags:
      - Devices
      summary: Lock Device
      description: Issue an asynchronous lock command. Returns 202 ACCEPTED with a command id; final state surfaces via webhook.
      operationId: lockDevice
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
  /devices/{deviceId}/unlock:
    post:
      tags:
      - Devices
      summary: Unlock Device
      description: Issue an asynchronous unlock command. Returns 202 ACCEPTED with a command id; final state surfaces via webhook.
      operationId: unlockDevice
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      responses:
        '202':
          $ref: '#/components/responses/CommandAccepted'
components:
  schemas:
    EngageDevice:
      type: object
      properties:
        deviceId:
          type: string
        name:
          type: string
        model:
          type: string
          enum:
          - BE467B
          - FE410B
          - NDEB
          - LEBMS
          - LEBMD
          - MTKB
          - XE360
          - CTE
          - VonDuprinRU
          - VonDuprinRM
        firmwareVersion:
          type: string
        siteId:
          type: string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: string
    DeviceUpdate:
      type: object
      properties:
        name:
          type: string
        autoLockDelaySeconds:
          type: integer
        vacationMode:
          type: boolean
    Device:
      type: object
      properties:
        deviceId:
          type: string
        name:
          type: string
        model:
          type: string
          enum:
          - BE489WB
          - BE499WB
          - FE789WB
          description: Schlage Encode Deadbolt, Encode Plus, or Encode Lever
        firmwareVersion:
          type: string
        batteryLevel:
          type: integer
          minimum: 0
          maximum: 100
        wifiSignalStrength:
          type: integer
          description: WiFi RSSI in dBm (added March 6, 2025).
        connectivityState:
          type: string
          enum:
          - Online
          - Offline
        lockState:
          type: string
          enum:
          - Locked
          - Unlocked
          - Unknown
        timeZone:
          type: string
    Command:
      type: object
      properties:
        commandId:
          type: string
        deviceId:
          type: string
        type:
          type: string
          enum:
          - Lock
          - Unlock
          - UpdateDevice
          - CreateAccessCode
          - UpdateAccessCode
          - DeleteAccessCode
        status:
          type: string
          enum:
          - Pending
          - InProgress
          - Completed
          - Failed
        errorMessage:
          type: string
          description: Populated when status is Failed (improved March 6, 2025).
        createdAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
  responses:
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Access token missing, expired, or insufficient scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    CommandAccepted:
      description: 'Asynchronous command accepted. The response includes a commandId that can

        be polled at GET /devices/{deviceId}/commands/{commandId} or watched for

        via the corresponding command-status webhook event.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Command'
  parameters:
    DeviceId:
      in: path
      name: deviceId
      required: true
      schema:
        type: string
      description: Unique identifier for a Schlage Home device.
  securitySchemes:
    SubscriptionKey:
      type: apiKey
      in: header
      name: alle-subscription-key
      description: Azure API Management subscription key issued via the Allegion Developer Portal.
    BasicAuth:
      type: http
      scheme: basic
      description: Basic Auth token generated from ENGAGE credentials.