{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/DeviceObject",
  "title": "DeviceObject",
  "type": "object",
  "required": [
    "model",
    "displayName",
    "type",
    "manufacturer",
    "managedBy",
    "supportedFor",
    "onboardingMethod",
    "allowConfigureLayoutEnabled",
    "numberOfLinePorts",
    "kemSupportEnabled",
    "kemLinesSupportEnabled",
    "upgradeChannelEnabled",
    "additionalPrimaryLineAppearancesEnabled",
    "basicEmergencyNomadicEnabled",
    "customizedBehaviorsEnabled",
    "allowConfigurePortsEnabled",
    "customizableLineLabelEnabled",
    "supportsLinePortReorderingEnabled",
    "portNumberSupportEnabled",
    "t38Enabled",
    "callDeclinedEnabled",
    "touchScreenPhone",
    "numberOfLineKeyButtons",
    "allowHotelingHostEnabled",
    "supportsApplyChangesEnabled",
    "allowConfigureLinesEnabled",
    "allowConfigurePhoneSettingsEnabled",
    "supportsHotlineEnabled"
  ],
  "properties": {
    "model": {
      "type": "string",
      "example": "2N Customer Managed",
      "description": "Model name of the device."
    },
    "displayName": {
      "type": "string",
      "example": "2N Customer Managed",
      "description": "Display name of the device."
    },
    "familyDisplayName": {
      "type": "string",
      "example": "Poly",
      "description": "The display name of the device family."
    },
    "type": {
      "$ref": "#/components/schemas/TypeObject"
    },
    "manufacturer": {
      "$ref": "#/components/schemas/ManufacturerObject"
    },
    "managedBy": {
      "$ref": "#/components/schemas/ManagedByObject"
    },
    "supportedFor": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SupportedForObject"
      },
      "description": "List of places the device is supported for."
    },
    "onboardingMethod": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/OnboardingMethodObject"
      },
      "description": "Onboarding method."
    },
    "allowConfigureLayoutEnabled": {
      "type": "boolean",
      "description": "Enables / Disables layout configuration for devices."
    },
    "numberOfLinePorts": {
      "type": "number",
      "description": "Number of port lines."
    },
    "kemSupportEnabled": {
      "type": "boolean",
      "example": true,
      "description": "Indicates whether Kem support is enabled or not."
    },
    "kemModuleCount": {
      "type": "number",
      "description": "Module count."
    },
    "kemLinesSupportEnabled": {
      "type": "boolean",
      "description": "Enables / disables Kem lines support."
    },
    "kemModuleType": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/KemModuleType"
      },
      "description": "Key expansion module type of the device."
    },
    "upgradeChannelEnabled": {
      "type": "boolean",
      "description": "Enables / Disables the upgrade channel."
    },
    "defaultUpgradeChannel": {
      "type": "string",
      "description": "The default upgrade channel."
    },
    "additionalPrimaryLineAppearancesEnabled": {
      "type": "boolean",
      "description": "Enables / disables the additional primary line appearances."
    },
    "basicEmergencyNomadicEnabled": {
      "type": "boolean",
      "description": "Enables / disables Basic emergency nomadic."
    },
    "customizedBehaviorsEnabled": {
      "type": "boolean",
      "description": "Enables / disables customized behavior support on devices."
    },
    "allowConfigurePortsEnabled": {
      "type": "boolean",
      "description": "Enables / disables configuring port support on device."
    },
    "customizableLineLabelEnabled": {
      "type": "boolean",
      "description": "Enables / disables customizable line label."
    },
    "supportsLinePortReorderingEnabled": {
      "type": "boolean",
      "description": "Enables / disables support line port reordering."
    },
    "portNumberSupportEnabled": {
      "type": "boolean",
      "description": "Enables / disables port number support."
    },
    "t38Enabled": {
      "type": "boolean",
      "description": "Enables / disables T.38."
    },
    "callDeclinedEnabled": {
      "type": "boolean",
      "description": "Enables / disables call declined."
    },
    "touchScreenPhone": {
      "type": "boolean",
      "description": "Supports touch screen on device."
    },
    "numberOfLineKeyButtons": {
      "type": "number",
      "description": "Number of line key buttons for a device."
    },
    "deviceSettingsConfiguration": {
      "$ref": "#/components/schemas/DeviceSettingsConfigurationObject"
    },
    "allowHotelingHostEnabled": {
      "type": "boolean",
      "description": "Enables / disables hoteling host."
    },
    "supportsLogCollection": {
      "$ref": "#/components/schemas/SupportsLogCollectionObject"
    },
    "supportsApplyChangesEnabled": {
      "type": "boolean",
      "description": "Enables / disables apply changes."
    },
    "allowConfigureLinesEnabled": {
      "type": "boolean",
      "description": "Enables / disables configure lines."
    },
    "allowConfigurePhoneSettingsEnabled": {
      "type": "boolean",
      "description": "Enables / disables configure phone settings."
    },
    "supportsHotlineEnabled": {
      "type": "boolean",
      "description": "Enables / disables hotline support."
    },
    "maxNumberOfLineAppearances": {
      "type": "number",
      "description": "Maximum number of line appearances available on the device."
    }
  }
}