{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/johnson-controls/json-schema/johnson-controls-get-objects-response-schema.json",
  "title": "Object Tree",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/johnson-controls-objects-api-openapi.yml#/components/schemas/getObjectsResponse",
  "type": "object",
  "required": [
    "self",
    "items"
  ],
  "properties": {
    "self": {
      "$ref": "#/$defs/self"
    },
    "items": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/objectEntityInTree"
          },
          {
            "title": "Object (minimal, list)",
            "description": "A minimal representation of an object.",
            "type": "object",
            "readOnly": true,
            "required": [
              "self",
              "parentUrl",
              "networkDeviceUrl",
              "pointsUrl",
              "objectsUrl",
              "alarmsUrl",
              "auditsUrl",
              "trendedAttributesUrl",
              "itemReference",
              "hasChildrenMatchingQuery",
              "name",
              "label",
              "id",
              "objectType",
              "objectTypeVersion"
            ],
            "properties": {
              "self": {
                "$ref": "#/$defs/self"
              },
              "parentUrl": {
                "$ref": "#/$defs/parentUrl"
              },
              "networkDeviceUrl": {
                "$ref": "#/$defs/networkDeviceUrl"
              },
              "pointsUrl": {
                "$ref": "#/$defs/pointsUrl"
              },
              "objectsUrl": {
                "$ref": "#/$defs/objectsUrl"
              },
              "alarmsUrl": {
                "$ref": "#/$defs/alarmsUrl"
              },
              "auditsUrl": {
                "$ref": "#/$defs/auditsUrl"
              },
              "trendedAttributesUrl": {
                "$ref": "#/$defs/trendedAttributesUrl"
              },
              "itemReference": {
                "type": "string",
                "description": "The fully qualified reference of this object.",
                "readOnly": true
              },
              "hasChildrenMatchingQuery": {
                "type": "boolean",
                "description": "Does this object have children that match the query.",
                "readOnly": true
              },
              "name": {
                "type": "string",
                "description": "The name of this object."
              },
              "label": {
                "type": "string",
                "description": "This property comes from the `localUniqueIdentifier` that was used to\ncreate this object and is identical to the last fragment of the\n`itemReference`.\n\n(There is one exception to how `label` is populated. There is a system\ndefined object with the `itemReference` ` {hostname}:{hostname}/$site` whose\n`label` is the host name of the site director.)\n"
              },
              "id": {
                "type": "string",
                "description": "The identifier of this object.",
                "readOnly": true
              },
              "objectType": {
                "$ref": "#/$defs/objectType"
              },
              "objectTypeVersion": {
                "$ref": "#/$defs/objectTypeVersion"
              },
              "classification": {
                "$ref": "#/$defs/classification"
              }
            },
            "additionalProperties": false
          }
        ]
      }
    },
    "effectivePermissions": {
      "type": "object",
      "required": [
        "canDelete",
        "canView",
        "canModify"
      ],
      "additionalProperties": false,
      "properties": {
        "canDelete": {
          "description": "A list of identifiers for objects in the payload that the current\nuser can delete.\n",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "canView": {
          "description": "A list of identifiers for objects in the payload that the current\nuser can view.\n",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "canModify": {
          "description": "A list of identifiers for objects in the current payload that the\ncurrent user can modify.\n",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  },
  "$defs": {
    "alarmsUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to the alarms generated by this object.",
      "readOnly": true
    },
    "auditsUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to the audits generated for this object.",
      "readOnly": true
    },
    "classification": {
      "type": "string",
      "description": "A classification system that groups related objects together.",
      "readOnly": true,
      "enum": [
        "object",
        "device",
        "integration",
        "controller",
        "point",
        "site",
        "navList",
        "extension",
        "folder",
        "reference",
        "server",
        "archive"
      ]
    },
    "networkDeviceUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to the network device that contains this object.",
      "readOnly": true
    },
    "objectEntityInTree": {
      "title": "Object (minimal, tree)",
      "description": "A minimal representation of an object with an `items` property for child objects.",
      "type": "object",
      "properties": {
        "self": {
          "$ref": "#/$defs/self"
        },
        "parentUrl": {
          "$ref": "#/$defs/parentUrl"
        },
        "networkDeviceUrl": {
          "$ref": "#/$defs/networkDeviceUrl"
        },
        "pointsUrl": {
          "$ref": "#/$defs/pointsUrl"
        },
        "objectsUrl": {
          "$ref": "#/$defs/objectsUrl"
        },
        "alarmsUrl": {
          "$ref": "#/$defs/alarmsUrl"
        },
        "auditsUrl": {
          "$ref": "#/$defs/auditsUrl"
        },
        "trendedAttributesUrl": {
          "$ref": "#/$defs/trendedAttributesUrl"
        },
        "itemReference": {
          "type": "string",
          "description": "The fully qualified reference of this object.",
          "readOnly": true
        },
        "hasChildrenMatchingQuery": {
          "type": "boolean",
          "description": "Does this object have children that match the query.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of this object."
        },
        "label": {
          "type": "string",
          "description": "This property comes from the `localUniqueIdentifier` that was used to\ncreate this object and is identical to the last fragment of the\n`itemReference`.\n\n(There is one exception to how `label` is populated. There is a system\ndefined object with the `itemReference` ` {hostname}:{hostname}/$site` whose\n`label` is the host name of the site director.)\n"
        },
        "id": {
          "type": "string",
          "description": "The identifier of this object.",
          "readOnly": true
        },
        "objectType": {
          "$ref": "#/$defs/objectType"
        },
        "objectTypeVersion": {
          "$ref": "#/$defs/objectTypeVersion"
        },
        "classification": {
          "$ref": "#/$defs/classification"
        },
        "items": {
          "type": "array",
          "description": "The child nodes of this object. May be empty if the `depth` parameter\nwas not large enough to include the next level of the tree. See\n`hasChildrenMatchingQuery` to determine if this object has children that\nmatch the query used to generated this response.\n",
          "readOnly": true,
          "minItems": 0,
          "items": {
            "$ref": "#/$defs/objectEntityInTree"
          }
        }
      },
      "required": [
        "self",
        "parentUrl",
        "networkDeviceUrl",
        "pointsUrl",
        "objectsUrl",
        "alarmsUrl",
        "auditsUrl",
        "trendedAttributesUrl",
        "itemReference",
        "hasChildrenMatchingQuery",
        "name",
        "label",
        "id",
        "objectType",
        "objectTypeVersion",
        "items",
        "classification"
      ],
      "additionalProperties": false
    },
    "objectType": {
      "type": "string",
      "description": "The type of this object as defined by the `objectTypeEnumSet`.",
      "readOnly": true,
      "x-metasysType": "enum",
      "x-metasysEnum": "objectTypeEnumSet"
    },
    "objectTypeVersion": {
      "type": "string",
      "description": "The version of `objectType` that is used for this object.",
      "readOnly": true
    },
    "objectsUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to the children of this object. You can use the `depth` parameter to this URL to get more than the immediate children of this object.",
      "readOnly": true
    },
    "parentUrl": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "A link to the parent of this object. All objects except the root object have a value for this property.",
      "readOnly": true
    },
    "pointsUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to all equipment point mappings defined for this object.",
      "readOnly": true
    },
    "self": {
      "type": "string",
      "description": "A link to this object.",
      "format": "uri",
      "readOnly": true
    },
    "trendedAttributesUrl": {
      "type": "string",
      "format": "uri",
      "description": "A link to the list of attributes on this object for which samples are available.",
      "readOnly": true
    }
  }
}