# Johnson Controls Objects API

**Canonical:** https://apis.io/apis/johnson-controls/johnson-controls-objects-api/  
**Provider:** Johnson Controls — https://apis.io/providers/johnson-controls/  
**Base URL:** https://{hostname}/api/v6  
**Documentation:** https://jci-metasys.github.io/api-landing/

Johnson Controls Objects API is one of 11 APIs that [Johnson Controls](https://apis.io/providers/johnson-controls/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification. This API exposes 6 JSON Schema definitions. Tagged areas include Objects. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, a getting-started guide, a changelog, and 6 JSON Schemas.

This section describes the operations you can perform on objects. Objects are self-contained functional items in the Metasys system, for a full definition refer to the [Metasys System Glossary](https://docs.johnsoncontrols.com/bas/r/Metasys/en-US/Metasys-System-Glossary/11.0/O). Use objects operations to list, create, edit, and delete objects. Apply filters, sorting, and paging to further refine the results. Some operations accept subscriptions, see [Change of Value Subscriptions](#change-of-value-subscriptions). ## Batch Subscriptions And Async Operations ### Change of Value Subscriptions Subscribe for change of value (COV) events to receive updates when attribute values change. Currently, subscriptions are available for [Get attribute value](#operation/getObjectAttribute) operations (individual and batch). #### Subscribing To subscribe for COV events, complete the following steps: 1. Obtain a stream ID using the workflow outlined in the [Streaming](#tag/streaming) section. 2. Use one of the following operations and include a `METASYS-SUBSCRIBE` header with the stream ID: - Single attribute: [Get attribute value](#operation/getObjectAttribute) - Multiple attributes: [Batch object operations](#operation/postObjectsBatch) **Note:** Any filters added to the original `GET` operation also apply to the event subscription. #### Unsubscribing To unsubscribe from a COV event, complete the following steps: 1. Get the `METASYS-SUBSCRIPTION-LOCATION` from the subscribe operation response. 2. Issue a [Delete COV subscription](#operation/deleteCOVSubscription) request to `METASYS-SUBSCRIPTION-LOCATION`. **See also:** - [Get a stream](#operation/getStream) - [Streaming](#tag/streaming) #### Events COV Events : There are four event types sent by the COV subscription: heartbeat, heartbeatImproved, update, and notification. ##### Heartbeat `object.values.heartbeat` - A heartbeat event is sent to show that the subscription is still alive. A heartbeat is a JSON string with the current UTC date time in ISO 8601 format and is sent every 30 seconds. <!-- schema is not included as the associated simple schema renders poorly --> ##### Heartbeat Improved `object.values.heartbeatImproved` - Similar to `object.values.heartbeat` but includes an array of all active subscription ids. <SchemaDefinition schemaRef="#/components/schemas/objectsStreamValuesHeartbeatImproved" /> ##### COV Update `object.values.update` - The client receives an update event when an attribute value changes. This payload is similar in structure as the payload returned by _Get attribute value_, but also includes `id` and `itemReference` of the object to provide context for the attribute in question. The overall schema for this payload is identical to the _Get an object_ schema (except this payload has no `effectivePermissions` property). The payload excludes the `schema` for the attribute by default, but it can be optionally included by using the `includeSchema` flag on the initial subscription request. <SchemaDefinition schemaRef="#/components/schemas/objectsStreamValuesUpdate" /> ##### COV Notification `object.values.notification` - A notification event is sent when a value has changed but the value is not included in the payload. This happens for some values that are not simple scalar values. You can use this event as a trigger to reread the attribute. In the example, even though the payload does not include the current value, you know which object this is for (based on `id` and `itemReference`), and you know it is the `overrideExpirationTime` attribute based on the `attribute` property. <SchemaDefinition schemaRef="#/components/schemas/objectsStreamValuesNotification" />

## Operations (16)

| Method | Path | Summary |
|---|---|---|
| GET | `/objects` | List objects |
| POST | `/objects` | Create object |
| GET | `/objects/{objectId}/objects` | List child objects |
| GET | `/objectIdentifiers` | Get object id |
| GET | `/objects/identifiers` | Lookup object identifier |
| GET | `/objects/{objectId}` | Get an object |
| PATCH | `/objects/{objectId}` | Edit an object |
| DELETE | `/objects/{objectId}` | Delete an object |
| GET | `/objects/{objectId}/views` | List the views of an object |
| GET | `/objects/{objectId}/attributes` | List attributes of an object |
| GET | `/objects/{objectId}/attributes/{attributeId}` | Get attribute value |
| GET | `/objects/{objectId}/commands` | List commands |
| PUT | `/objects/{objectId}/commands/{commandId}` | Send command |
| GET | `/objects/{objectId}/supportedChildTypes` | List supported child types |
| GET | `/objects/{objectId}/points` | List object equipment points |
| POST | `/objects/batch` | Batch operations |

## Machine-readable artifacts (10)

- **OpenAPI** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/openapi/johnson-controls-objects-api-openapi.yml
- **Documentation** — https://jci-metasys.github.io/api-landing/
- **GettingStarted** — https://jci-metasys.github.io/api-landing/guides/quickstart
- **ChangeLog** — https://jci-metasys.github.io/api-landing/guides/api-changelog
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-activities-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-alarm-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-network-device-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-audit-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-equipment-item-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/json-schema/johnson-controls-equipment-points-schema.json

## Other Johnson Controls APIs (10)

- [Johnson Controls Activities API](https://apis.io/apis/johnson-controls/johnson-controls-activities-api/)
- [Johnson Controls Alarms API](https://apis.io/apis/johnson-controls/johnson-controls-alarms-api/)
- [Johnson Controls Audits API](https://apis.io/apis/johnson-controls/johnson-controls-audits-api/)
- [Johnson Controls Authentication API](https://apis.io/apis/johnson-controls/johnson-controls-authentication-api/)
- [Johnson Controls Equipment API](https://apis.io/apis/johnson-controls/johnson-controls-equipment-api/)
- [Johnson Controls network devices API](https://apis.io/apis/johnson-controls/johnson-controls-network-devices-api/)
- [Johnson Controls Schemas API](https://apis.io/apis/johnson-controls/johnson-controls-schemas-api/)
- [Johnson Controls Spaces API](https://apis.io/apis/johnson-controls/johnson-controls-spaces-api/)
- [Johnson Controls Streaming API](https://apis.io/apis/johnson-controls/johnson-controls-streaming-api/)
- [Johnson Controls time series API](https://apis.io/apis/johnson-controls/johnson-controls-time-series-api/)

## Tags

Objects

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/johnson-controls/johnson-controls-objects-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/johnson-controls/.
