Johnson Controls Objects API

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. ##### Heartbeat Improved `object.values.heartbeatImproved` - Similar to `object.values.heartbeat` but includes an array of all active subscription ids. ##### 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. ##### 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.

Operations 16

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 #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/johnson-controls:johnson-controls-objects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

johnson-controls-objects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Johnson Controls Objects API
  version: Version 6 for 16.0
  x-logo:
    url: source/images/logo.svg
    href: https://jci-metasys.github.io/
  x-releases:
  - '14.0'
  - '14.1'
  - '15.0'
  - '16.0'
  x-revision: 'Commit ID: 4b227676a'
  description: 'Operations tagged objects across 2 of this provider''s published API definitions: metasys-api-v6-16.json, johnson-controls-metasys-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{hostname}/api/v6
  description: The base URL of all API routes
  variables:
    hostname:
      default: metasys-server.example.com
      description: This is the name of your site director device
security:
- Bearer-Authentication: []
tags:


# --- truncated at 32 KB (267 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/openapi/johnson-controls-objects-api-openapi.yml