> ## Documentation index
> Fetch the complete documentation index at: https://developer.rhombus.com/llms.txt
> Use it to discover all available pages before exploring further.

# Connect Honeywell NetBox (activate)

> Activate the Honeywell NetBox integration for the calling org. NetBox is webhook-driven: the on-prem NetBox controller POSTs access events to a Rhombus webhook URL. On first activation the server generates the webhook rhombusToken and returns it (plus the fully-formed webhook URL); subsequent calls preserve the token so the configured forwarder keeps working as the door mapping changes. The request owns the door mapping and optional base URL.

```http
POST https://api2.rhombussystems.com/api/integrations/accessControl/connectHoneywellNetBox
```

EU organizations send the same request to `https://api2.eu.rhombussystems.com`.

## Authentication and parameters

- `x-auth-apikey` (header, required): Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
- `Authorization` (header): instead of an API key, an OAuth access token (`Bearer <token>`) with the `write` scope.
- `x-auth-scheme` (header, string, default: `api-token`): Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters. One of: `api-token`, `api`, `api-oauth-token`, `federated-token`, `partner-api-token`, `partner-api`, `partner-api-oauth-token`.
- `x-auth-org` (header, string<RUUID>): Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`.

## Request body

Content type: `application/json`. Activate the Honeywell NetBox integration for the calling org. NetBox is webhook-driven: the on-prem NetBox controller POSTs access events to a Rhombus webhook URL. On first activation, omit any token; the server generates a webhook rhombusToken and returns it (plus the fully-formed webhook URL) for the customer to paste into the NetBox webhook forwarder. Subsequent calls preserve the existing token so the configured forwarder keeps working as the door mapping changes. The request owns the door mapping; map keys are the stable NetBox portal identifiers and values follow the standard Rhombus badge-integration door info shape.

- `baseUrl` (string | null)
- `doorInfoMap` (map<string, object | null> | null)

## Response 200

OK. Content type: `application/json`

- `error` (boolean | null)
- `errorCode` (string | null): Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
- `errorMsg` (string | null)
- `misconfiguredDoors` (array<string | null> | null)
- `rhombusToken` (string | null)
- `warningMsg` (string | null)
- `webhookUrl` (string | null)

## Errors

Also 400, 401, 403, 429, 500, 503 with the standard error body (`errorCode`, `errorMsg`): https://developer.rhombus.com/errors

## OpenAPI

````yaml
openapi: 3.0.1
info:
  title: Rhombus API
  version: "1.0"
servers:
  - description: Production Server
    url: https://api2.rhombussystems.com
security:
  - ApiKeyAuth: []
paths:
  /api/integrations/accessControl/connectHoneywellNetBox:
    post:
      description: "Activate the Honeywell NetBox integration for the calling org. NetBox is webhook-driven: the on-prem NetBox controller POSTs access events to a Rhombus webhook URL. On first activation the server generates the webhook rhombusToken and returns it (plus the fully-formed webhook URL); subsequent calls preserve the token so the configured forwarder keeps working as the door mapping changes. The request owns the door mapping and optional base URL."
      operationId: connectHoneywellNetBox
      parameters:
        - description: "Authentication scheme identifier. Use `api-token` or `partner-api-token` with the `x-auth-apikey` header, `api` or `partner-api` with `x-auth-apikey` plus a client certificate, `api-oauth-token` or `partner-api-oauth-token` with `x-auth-access-token`, and `federated-token` with `x-auth-ft`. A request with `Authorization: Bearer <token>` and no `x-auth-scheme` is treated as OAuth, and `federated-token` may also be sent as the `x-auth-scheme` and `x-auth-ft` query parameters."
          example: api-token
          in: header
          name: x-auth-scheme
          required: false
          schema:
            default: api-token
            enum:
              - api-token
              - api
              - api-oauth-token
              - federated-token
              - partner-api-token
              - partner-api
              - partner-api-oauth-token
            type: string
        - description: "Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry `Deprecation` and `Sunset: Tue, 05 Jan 2027 00:00:00 GMT`). A malformed value returns 400 `INVALID_AUTH_ORG`; a client organization the partner cannot access returns 403 `PARTNER_CLIENT_ACCESS_DENIED`."
          in: header
          name: x-auth-org
          required: false
          schema:
            format: RUUID
            maxLength: 22
            minLength: 22
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Integration_ConnectHoneywellNetBoxWSRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Integration_ConnectHoneywellNetBoxIntegrationWSResponse"
          description: OK
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
        - ApiKeyAuth: []
        - oauth2:
            - write
      summary: Connect Honeywell NetBox (activate)
      tags:
        - Access Control Integrations Webservice
components:
  schemas:
    Integration_ConnectHoneywellNetBoxWSRequest:
      description: "Activate the Honeywell NetBox integration for the calling org. NetBox is webhook-driven: the on-prem NetBox controller POSTs access events to a Rhombus webhook URL. On first activation, omit any token; the server generates a webhook rhombusToken and returns it (plus the fully-formed webhook URL) for the customer to paste into the NetBox webhook forwarder. Subsequent calls preserve the existing token so the configured forwarder keeps working as the door mapping changes. The request owns the door mapping; map keys are the stable NetBox portal identifiers and values follow the standard Rhombus badge-integration door info shape."
      properties:
        baseUrl:
          nullable: true
          type: string
        doorInfoMap:
          additionalProperties:
            $ref: "#/components/schemas/BadgeIntegrationDoorInfoType"
          nullable: true
          type: object
      type: object
    BadgeIntegrationDoorInfoType:
      nullable: true
      properties:
        assignedCameraList:
          items:
            description: base 64 (url-safe) uuid string
            example: AAAAAAAAAAAAAAAAAAAAAA
            format: RUUID
            nullable: true
            type: string
          nullable: true
          type: array
        clipDuration:
          format: int32
          nullable: true
          type: integer
        doorName:
          nullable: true
          type: string
        leadingSeconds:
          format: int32
          nullable: true
          type: integer
        locationUuid:
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          format: RUUID
          nullable: true
          type: string
        remoteUnlock:
          nullable: true
          type: boolean
        subLocationsHierarchyKey:
          description: |
            A sequence of one or more base 64 (url-safe) uuid substrings.
            These substrings are separated by dots (.).
          example: AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAA
          format: SubLocationsHierarchyKey
          nullable: true
          pattern: ^([A-Za-z0-9\-_]{22})([.][A-Za-z0-9\-_]{22})*$
          type: string
      type: object
    Integration_ConnectHoneywellNetBoxIntegrationWSResponse:
      description: Result of activating or updating the Honeywell NetBox integration. Returns the webhook URL and token to configure on the NetBox webhook forwarder. The token is stable across re-calls so the configured forwarder keeps working when the door mapping changes.
      properties:
        error:
          nullable: true
          type: boolean
        errorCode:
          description: Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
          nullable: true
          type: string
        errorMsg:
          nullable: true
          type: string
        misconfiguredDoors:
          items:
            nullable: true
            type: string
          nullable: true
          type: array
        rhombusToken:
          nullable: true
          type: string
        warningMsg:
          nullable: true
          type: string
        webhookUrl:
          nullable: true
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: Your Rhombus API key. Must be accompanied by the `x-auth-scheme` header set to `api-token` (or `partner-api-token` for partner endpoints).
      in: header
      name: x-auth-apikey
      type: apiKey
    oauth2:
      description: 'OAuth 2.0 authorization code flow with PKCE (`S256`). Send the access token as `Authorization: Bearer <token>`. Each operation lists the scopes it requires; a token without them is refused 403 with `WWW-Authenticate: Bearer error="insufficient_scope"`.'
      flows:
        authorizationCode:
          authorizationUrl: https://console.rhombus.com/oauth/authorize
          refreshUrl: https://auth-web.rhombussystems.com/oauth/token
          scopes:
            physical: Unlock doors and elevators, lockdown, alarms, speakers and robots
            read: View cameras, footage and settings
            write: Change settings and data
          tokenUrl: https://auth-web.rhombussystems.com/oauth/token
      type: oauth2
````
