> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.rhombus.community/llms.txt
> Use this file to discover all available pages before exploring further.

# Get or create device physical port config

> Gets a physical port layout for the specified device, components owned by that device and details about the port configuration validity. Map is instantiated if it doesn't currently exist as part of the call.



## OpenAPI

````yaml https://api2.rhombussystems.com/api/openapi/public.json post /api/component/getOrCreateDevicePhysicalPortConfig
openapi: 3.0.1
info:
  contact:
    email: developer@rhombussystems.com
  description: >-
    This API is for use by Rhombus customers and partners.


    ## Authentication


    All requests require two headers:

    - `x-auth-scheme` — The authentication scheme identifier. Use `api-token`
    for standard API key auth, or `partner-api-token` for partner API auth.

    - `x-auth-apikey` — Your Rhombus API key.


    Example:

    ```

    POST /api/camera/getMinimalCameraStateList

    x-auth-scheme: api-token

    x-auth-apikey: YOUR_API_KEY

    Content-Type: application/json

    ```
  title: Rhombus API
  version: '1.0'
servers:
  - description: Production Server
    url: https://api2.rhombussystems.com
security:
  - ApiKeyAuth: []
paths:
  /api/component/getOrCreateDevicePhysicalPortConfig:
    post:
      tags:
        - Component Webservice
      summary: Get or create device physical port config
      description: >-
        Gets a physical port layout for the specified device, components owned
        by that device and details about the port configuration validity. Map is
        instantiated if it doesn't currently exist as part of the call.
      operationId: getOrCreateDevicePhysicalPortConfig
      parameters:
        - description: >-
            Authentication scheme identifier. Use `api-token` for standard API
            key authentication, `partner-api-token` for partner API key
            authentication. Must be paired with the `x-auth-apikey` header
            containing your API key.
          example: api-token
          in: header
          name: x-auth-scheme
          required: true
          schema:
            type: string
            default: api-token
            enum:
              - api-token
              - api
              - partner-api-token
              - partner-api
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/Component_GetOrCreateDevicePhysicalPortConfigWSRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Component_GetOrCreateDevicePhysicalPortConfigWSResponse
          description: OK
components:
  schemas:
    Component_GetOrCreateDevicePhysicalPortConfigWSRequest:
      type: object
      properties:
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    Component_GetOrCreateDevicePhysicalPortConfigWSResponse:
      type: object
      properties:
        detectedInvalidPortConfigs:
          type: array
          items:
            $ref: '#/components/schemas/InvalidPhysicalPortConfigType'
          nullable: true
        deviceComponents:
          type: array
          items:
            $ref: '#/components/schemas/BaseComponentType'
          nullable: true
        devicePhysicalPortConfig:
          $ref: '#/components/schemas/DevicePhysicalPortConfigType'
    InvalidPhysicalPortConfigType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        componentUuids:
          type: array
          items:
            type: string
            format: RUUID
            description: base 64 (url-safe) uuid string
            example: AAAAAAAAAAAAAAAAAAAAAA
            nullable: true
          nullable: true
          uniqueItems: true
        portNum:
          type: integer
          format: int32
          nullable: true
        reason:
          $ref: '#/components/schemas/InvalidPhysicalPortReasonEnumType'
    BaseComponentType:
      type: object
      discriminator:
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/RhombusOsdpDoorReaderType'
        - $ref: '#/components/schemas/OsdpDoorReaderType'
        - $ref: '#/components/schemas/WiegandDoorReaderType'
        - $ref: '#/components/schemas/IntegratedDoorPositionIndicatorType'
        - $ref: '#/components/schemas/IntegratedRequestToExitType'
        - $ref: '#/components/schemas/IntegratedDoorRelayType'
        - $ref: '#/components/schemas/IntegratedGenericRelayType'
        - $ref: '#/components/schemas/IntegratedGenericInputType'
        - $ref: '#/components/schemas/IntegratedGenericButtonType'
        - $ref: '#/components/schemas/AperioDoorReader'
        - $ref: '#/components/schemas/AperioGateway'
        - $ref: '#/components/schemas/AperioDoorExtension'
        - $ref: '#/components/schemas/AperioDoorRelay'
        - $ref: '#/components/schemas/AperioDoorPositionIndicator'
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    DevicePhysicalPortConfigType:
      type: object
      properties:
        boardMap:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BoardPhysicalPortConfigType'
          nullable: true
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
    InvalidPhysicalPortReasonEnumType:
      type: string
      enum:
        - NON_EXISTANT_COMPONENT_BOARD_NUM
        - NON_EXISTANT_COMPONENT_PORT_NUM
        - CONFLICTING_COMPONENT_PORT_TYPES
        - COMPONENT_PORT_TYPE_NOT_SUPPORTED_BY_PORT
        - MAX_COMPONENTS_PER_PORT_TYPE_EXCEEDED
    RhombusOsdpDoorReaderType:
      type: object
      properties:
        allowCredsDuringUnlock:
          type: boolean
          nullable: true
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        deviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        disableCardReader:
          type: boolean
          nullable: true
        disableKeypad:
          type: boolean
          nullable: true
        disableQrScanner:
          type: boolean
          nullable: true
        disableWaveToUnlock:
          type: boolean
          nullable: true
        disposition:
          $ref: '#/components/schemas/ReaderDispositionEnum'
        hardwareUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        osdpAddress:
          type: integer
          format: int32
          nullable: true
        otherReaderUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/OsdpReaderPortType'
        portImmutable:
          type: boolean
          nullable: true
        readerType:
          $ref: '#/components/schemas/DoorReaderEnumType'
        remoteUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        serialNumber:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    OsdpDoorReaderType:
      type: object
      properties:
        allowUnencrypted:
          type: boolean
          nullable: true
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        disableCardReader:
          type: boolean
          nullable: true
        disableKeypad:
          type: boolean
          nullable: true
        disableWaveToUnlock:
          type: boolean
          nullable: true
        disposition:
          $ref: '#/components/schemas/ReaderDispositionEnum'
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        osdpAddress:
          type: integer
          format: int32
          nullable: true
        otherReaderUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/OsdpReaderPortType'
        portImmutable:
          type: boolean
          nullable: true
        readerType:
          $ref: '#/components/schemas/DoorReaderEnumType'
        remoteUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    WiegandDoorReaderType:
      type: object
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        buzzerPort:
          $ref: '#/components/schemas/WiegandOutputPortType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        csnEndian:
          $ref: '#/components/schemas/WiegandCredentialEndianEnumType'
        d0Port:
          $ref: '#/components/schemas/WiegandDataPortType'
        d1Port:
          $ref: '#/components/schemas/WiegandDataPortType'
        disableCardReader:
          type: boolean
          nullable: true
        disableKeypad:
          type: boolean
          nullable: true
        disableWaveToUnlock:
          type: boolean
          nullable: true
        disposition:
          $ref: '#/components/schemas/ReaderDispositionEnum'
        gledPort:
          $ref: '#/components/schemas/WiegandOutputPortType'
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        otherReaderUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        readerType:
          $ref: '#/components/schemas/DoorReaderEnumType'
        remoteUnlockAudioFeedbackEnabled:
          type: boolean
          nullable: true
        rledPort:
          $ref: '#/components/schemas/WiegandOutputPortType'
        tamperPort:
          $ref: '#/components/schemas/WiegandInputPortType'
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedDoorPositionIndicatorType:
      type: object
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        dpiType:
          $ref: '#/components/schemas/DoorPositionIndicatorEnumType'
        name:
          type: string
          nullable: true
        normalState:
          $ref: '#/components/schemas/NormalStateEnumType'
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/DoorPositionIndicatorPortType'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedRequestToExitType:
      type: object
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        intentOnly:
          type: boolean
          nullable: true
        intentOnlyEvents:
          type: boolean
          nullable: true
        name:
          type: string
          nullable: true
        normalState:
          $ref: '#/components/schemas/NormalStateEnumType'
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/RequestToExitPortType'
        portImmutable:
          type: boolean
          nullable: true
        rexType:
          $ref: '#/components/schemas/RequestToExitEnumType'
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedDoorRelayType:
      type: object
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/DoorRelayPortType'
        portImmutable:
          type: boolean
          nullable: true
        rateLimitingEnabled:
          type: boolean
          nullable: true
        relayType:
          $ref: '#/components/schemas/DoorRelayEnumType'
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedGenericRelayType:
      type: object
      properties:
        auxType:
          $ref: '#/components/schemas/AuxiliaryEnumType'
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        originator:
          $ref: '#/components/schemas/BaseEventOriginator'
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/AuxiliaryRelayPortType'
        portImmutable:
          type: boolean
          nullable: true
        relayDurationSec:
          type: integer
          format: int32
          deprecated: true
          description: Deprecated, do not use.
          nullable: true
        stateChangedAtMillis:
          type: integer
          format: int64
          nullable: true
        steadyState:
          $ref: '#/components/schemas/GenericRelayStateEnumType'
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedGenericInputType:
      type: object
      properties:
        auxType:
          $ref: '#/components/schemas/AuxiliaryEnumType'
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        normalState:
          $ref: '#/components/schemas/NormalStateEnumType'
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/AuxiliaryInputPortType'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    IntegratedGenericButtonType:
      type: object
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        buttonType:
          $ref: '#/components/schemas/ButtonEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        mode:
          $ref: '#/components/schemas/ButtonModeEnum'
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        port:
          $ref: '#/components/schemas/ButtonPortType'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    AperioDoorReader:
      type: object
      allOf:
        - type: object
          properties:
            aperioDoorId:
              type: string
              nullable: true
            aperioGatewayId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
            disableCardReader:
              type: boolean
              nullable: true
            disableKeypad:
              type: boolean
              nullable: true
            disableWaveToUnlock:
              type: boolean
              nullable: true
            disposition:
              $ref: '#/components/schemas/ReaderDispositionEnum'
            otherReaderUnlockAudioFeedbackEnabled:
              type: boolean
              nullable: true
            readerType:
              $ref: '#/components/schemas/DoorReaderEnumType'
            remoteUnlockAudioFeedbackEnabled:
              type: boolean
              nullable: true
      nullable: true
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    AperioGateway:
      type: object
      properties:
        aperioGatewayId:
          type: array
          items:
            type: string
            format: byte
            nullable: true
          nullable: true
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        hwVersion:
          type: array
          items:
            type: string
            format: byte
            nullable: true
          nullable: true
        name:
          type: string
          nullable: true
        oemCode:
          type: string
          nullable: true
        oemGeneratedAtMs:
          type: integer
          format: int64
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    AperioDoorExtension:
      type: object
      allOf:
        - type: object
          properties:
            aperioDoorDeviceId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
            aperioDoorId:
              type: string
              nullable: true
            aperioGatewayId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
      nullable: true
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
      required:
        - aperioDoorDeviceId
        - aperioDoorId
        - aperioGatewayId
    AperioDoorRelay:
      type: object
      allOf:
        - type: object
          properties:
            aperioDoorId:
              type: string
              nullable: true
            aperioGatewayId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
            deviceId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
            relayType:
              $ref: '#/components/schemas/DoorRelayEnumType'
      nullable: true
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    AperioDoorPositionIndicator:
      type: object
      allOf:
        - type: object
          properties:
            aperioDoorId:
              type: string
              nullable: true
            aperioGatewayId:
              type: array
              items:
                type: string
                format: byte
                nullable: true
              nullable: true
            dpiType:
              $ref: '#/components/schemas/DoorPositionIndicatorEnumType'
            normalState:
              $ref: '#/components/schemas/NormalStateEnumType'
      nullable: true
      properties:
        baseType:
          $ref: '#/components/schemas/ComponentBaseEnumType'
        createdAtMillis:
          type: integer
          format: int64
          nullable: true
        name:
          type: string
          nullable: true
        orgUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerDeviceUuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portImmutable:
          type: boolean
          nullable: true
        type:
          $ref: '#/components/schemas/ComponentEnumType'
        updatedAtMillis:
          type: integer
          format: int64
          nullable: true
        uuid:
          type: string
          format: RUUID
          description: base 64 (url-safe) uuid string
          example: AAAAAAAAAAAAAAAAAAAAAA
          nullable: true
    ComponentBaseEnumType:
      type: string
      enum:
        - reader
        - dpi
        - relay
        - rex
        - aux
        - aperio
        - button
    HardwareVariationEnum:
      type: string
      enum:
        - RASPBERRY_PI_3
        - CAMERA_R1
        - CAMERA_R2
        - CAMERA_R2_LONG_RANGE
        - CAMERA_R2_180
        - CAMERA_R3
        - CAMERA_R4
        - CAMERA_R100
        - CAMERA_R120
        - CAMERA_R170
        - CAMERA_R200
        - CAMERA_R500
        - CAMERA_R510
        - CAMERA_R520
        - CAMERA_R600
        - SENSOR_ASSET_TAG_T1
        - SENSOR_DOOR_D1
        - SENSOR_DOOR_D20
        - SENSOR_ENVIRONMENTAL_E1
        - SENSOR_ENVIRONMENTAL_E15
        - SENSOR_ENVIRONMENTAL_E2
        - SENSOR_MOTION_M1
        - SENSOR_MOTION_M15
        - GATEWAY_A1
        - GATEWAY_A100
        - GATEWAY_ENVIRONMENTAL_E50
        - CAMERA_R220
        - CAMERA_R230
        - CAMERA_R36S
        - CAMERA_R410
        - CAMERA_R540
        - CAMERA_R545
        - BADGE_READER_DR1
        - BADGE_READER_DR40
        - BADGE_READER_DR20
        - DOOR_CONTROLLER_DC1
        - DOOR_CONTROLLER_DC20
        - DOOR_CONTROLLER_DC10
        - ETHERNET_TESTER_ET1
        - IO_BOARD_TB1
        - BLE_BUTTON_B10
        - BLE_BUTTON_B15
        - CAMERA_THIRD_PARTY_RELAY
        - CAMERA_THIRD_PARTY_NVR
        - NVR_N100
        - CAMERA_R130
        - NVR_N500
        - CAMERA_R150
        - ROBOT_RC1
        - CAMERA_R210
        - CAMERA_R650
        - UNSPECIFIED
    ComponentEnumType:
      type: string
      enum:
        - RhombusOsdpDoorReader
        - OsdpDoorReader
        - WiegandDoorReader
        - IntegratedDoorPositionIndicator
        - IntegratedRequestToExit
        - IntegratedDoorRelay
        - IntegratedGenericRelay
        - IntegratedGenericInput
        - IntegratedGenericButton
        - AperioGateway
        - AperioDoorExtension
        - AperioDoorRelay
        - AperioDoorPositionIndicator
        - AperioDoorReader
        - AperioDoorRequestToExit
    BoardPhysicalPortConfigType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        ownerHardwareType:
          $ref: '#/components/schemas/HardwareVariationEnum'
        portMap:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PhysicalPortType'
          nullable: true
    ReaderDispositionEnum:
      type: string
      enum:
        - INGRESS
        - EGRESS
        - UNKNOWN
    OsdpReaderPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/OsdpPhysicalPortEnumType'
    DoorReaderEnumType:
      type: string
      enum:
        - wiegand
        - osdp
        - rhombus_osdp
        - aperio_wireless
    WiegandOutputPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/WiegandOutputPhysicalPortEnumType'
    WiegandCredentialEndianEnumType:
      type: string
      enum:
        - MSB
        - LSB
    WiegandDataPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/WiegandDataPhysicalPortEnumType'
    WiegandInputPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/WiegandInputPhysicalPortEnumType'
    DoorPositionIndicatorEnumType:
      type: string
      enum:
        - integrated
        - remote
    NormalStateEnumType:
      type: string
      enum:
        - 'NO'
        - NC
    DoorPositionIndicatorPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/DoorPositionIndicatorPhysicalPortEnumType'
        supervisionConfiguration:
          $ref: '#/components/schemas/PortSupervisionConfigurationType'
    RequestToExitPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/RequestToExitPhysicalPortEnumType'
        supervisionConfiguration:
          $ref: '#/components/schemas/PortSupervisionConfigurationType'
    RequestToExitEnumType:
      type: string
      enum:
        - integrated
        - remote
    DoorRelayPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/DoorRelayPhysicalPortEnumType'
    DoorRelayEnumType:
      type: string
      enum:
        - integrated
        - remote
    AuxiliaryEnumType:
      type: string
      enum:
        - integrated_generic_input
        - integrated_generic_relay
    BaseEventOriginator:
      type: object
      discriminator:
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/SupportAuthorityEventOriginator'
        - $ref: '#/components/schemas/ApiTokenEventOriginator'
        - $ref: '#/components/schemas/UserEventOriginator'
        - $ref: '#/components/schemas/RuleEventOriginator'
        - $ref: '#/components/schemas/ComponentCompositeEventOriginator'
        - $ref: '#/components/schemas/GuestPassEventOriginator'
        - $ref: '#/components/schemas/DeviceServiceEventOriginator'
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    AuxiliaryRelayPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/AuxiliaryRelayPhysicalPortEnumType'
    GenericRelayStateEnumType:
      type: string
      enum:
        - ACTIVE
        - INACTIVE
        - UNKNOWN
    AuxiliaryInputPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/AuxiliaryInputPhysicalPortEnumType'
        supervisionConfiguration:
          $ref: '#/components/schemas/PortSupervisionConfigurationType'
    ButtonEnumType:
      type: string
      enum:
        - integrated_generic_button
        - integrated_doorbell_button
    ButtonModeEnum:
      type: string
      description: Optional button mode configuration
      enum:
        - PANIC
        - PROGRAMMABLE
        - DOORBELL
        - NONE
    ButtonPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        portType:
          $ref: '#/components/schemas/ButtonPhysicalPortEnumType'
    PhysicalPortType:
      type: object
      properties:
        boardNum:
          type: integer
          format: int32
          nullable: true
        componentPortTypeUsageMap:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            nullable: true
          nullable: true
        label:
          type: string
          nullable: true
        portNum:
          type: integer
          format: int32
          nullable: true
        supportedPortTypes:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalPortEnumType'
          nullable: true
          uniqueItems: true
    OsdpPhysicalPortEnumType:
      type: string
      enum:
        - RS485
    WiegandOutputPhysicalPortEnumType:
      type: string
      enum:
        - WIEGAND_OUTPUT
    WiegandDataPhysicalPortEnumType:
      type: string
      enum:
        - WIEGAND_INPUT
    WiegandInputPhysicalPortEnumType:
      type: string
      enum:
        - WIEGAND_INPUT
        - GPIO_INPUT
    DoorPositionIndicatorPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_INPUT
        - GPIO_INPUT_SUPERVISED
    PortSupervisionConfigurationType:
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/SupervisionModeEnumType'
    RequestToExitPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_INPUT
        - GPIO_INPUT_SUPERVISED
    DoorRelayPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_OUTPUT
    SupportAuthorityEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            grantedToInternalEntityUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            grantedToName:
              type: string
              nullable: true
            supportAuthorityUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            supportUserEmail:
              type: string
              nullable: true
            supportUsername:
              type: string
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    ApiTokenEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            tokenName:
              type: string
              nullable: true
            tokenUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    UserEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            userEmail:
              type: string
              nullable: true
            userUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            username:
              type: string
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    RuleEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            ruleName:
              type: string
              nullable: true
            ruleUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    ComponentCompositeEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            componentCompositeName:
              type: string
              nullable: true
            componentCompositeUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            correlationId:
              type: string
              nullable: true
            eventUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            originator:
              $ref: '#/components/schemas/BaseEventOriginator'
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    GuestPassEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            guestPassName:
              type: string
              nullable: true
            guestPassUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    DeviceServiceEventOriginator:
      type: object
      allOf:
        - type: object
          properties:
            deviceUuid:
              type: string
              format: RUUID
              description: base 64 (url-safe) uuid string
              example: AAAAAAAAAAAAAAAAAAAAAA
              nullable: true
            serviceName:
              type: string
              nullable: true
      nullable: true
      properties:
        type:
          $ref: '#/components/schemas/EventOriginatorEnum'
    EventOriginatorEnum:
      type: string
      enum:
        - USER
        - SUPPORT_AUTHORITY
        - API_TOKEN
        - RULE
        - COMPONENT_COMPOSITE_EVENT
        - GUEST_PASS
        - DEVICE_SERVICE
        - UNKNOWN
    AuxiliaryRelayPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_OUTPUT
    AuxiliaryInputPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_INPUT
        - GPIO_INPUT_SUPERVISED
    ButtonPhysicalPortEnumType:
      type: string
      enum:
        - GPIO_INPUT
        - BUTTON_INPUT
    PhysicalPortEnumType:
      type: string
      enum:
        - GPIO_OUTPUT
        - GPIO_INPUT
        - GPIO_INPUT_SUPERVISED
        - RS485
        - WIEGAND_INPUT
        - WIEGAND_OUTPUT
        - BUTTON_INPUT
    SupervisionModeEnumType:
      type: string
      enum:
        - CUT_DETECT
        - SHORT_DETECT
        - CUT_AND_SHORT_DETECT
  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

````