Johnson Controls time series API

This section describes the operations you can perform on time series sample data. ### Origin of Time Series data The Metasys system has two locations from which time series samples can be retrieved. The first is from the _trend_ or _log_ object, itself. Each object on the Metasys site whose responsibility is to generate samples will have its own _buffer_ to store them. When samples are retrieved from the `objects` endpoints, they will be retrieved from their respective buffers. Time series operations that work with a buffer will include "(buffer)" in their summary. The second location is from the _repository_. As samples are collected in the _trend_ or _log_ objects themselves, those objects (if configured and enabled) have the ability to forward that information to a _repository_. The _repository_ is the location on the LAN (Local Area Network) that can receive and store historical data from one to many Metasys sources. Samples retrieved from the `timeSeries` endpoint are retrieved from the particular Metasys device's repository. Time series operations that work with the repository will include "(repository)" in their summary. ## Subscription Streaming Events Clients may subscribe to Objects and Network Devices streaming events. A subscription is established by providing a `METASYS-SUBSCRIBE` header on a `GET` operation of the `samples` resource under either the `objects` resource paths. ### Events The following events (with accompanying examples) are available for samples: - `timeSeries.subscription.established` - Indicates when a subscription has been established for `objects` samples. - `timeSeries.subscription.cancelled` - Indicates when a subscription has been cancelled for `objects` samples. - `timeSeries.error` - Indicates an error occurred with regards to an active samples subscription. - `timeSeries.samples.update` - Indicates new samples have been generated. Sample updates from multiple objects and attributes can be contained in a single event (each designated by their `sampledByObjectId`, `sampledObjectId` and `attribute` properties). - `timeSeries.heartbeat` - Indicates that time series subscription(s) are still alive. ## Metasys-Call-Async Streaming Events Clients may subscribe to Objects Samples Response streaming events. A subscription is established by providing a `METASYS-CALL-ASYNC` header on a `GET` operation of the `samples` resource under either the `objects` resource paths or `POST` operation of the `samples` resource under batch operation of times buffer. The following events (with accompanying examples) are available for samples: ### Samples Events The following events (with accompanying examples) are available for async samples: - `timeSeries.samples.stream.started` - Indicates when a subscription has been established for `objects` samples response. - `timeSeries.samples.stream.error` - Indicates an error occurred with regards to an active samples response subscription. - `timeSeries.samples.stream.data` - Indicates samples responses for each request. Samples from multiple objects and attributes can be contained in a single event (each designated by their `sampledByObjectId`, `sampledObjectId` and `attribute` properties). - `timeSeries.samples.stream.completed` - Indicates that a streaming samples response has completed successfully.

Operations 11

GET /timeSeries List all time series (repository) #
GET /objects/{objectId}/trendedAttributes List trended attributes (buffer) #
GET /timeSeries/{objectId} Get trend object (repository) #
GET /timeSeries/{objectId}/trendedAttributes List trended attributes (repository) #
GET /timeSeries/{objectId}/trendedAttributes/{attributeId} Get trended attribute (repository) #
GET /objects/{objectId}/trendedAttributes/{attributeId}/samples Get attribute samples (buffer) #
GET /timeSeries/{objectId}/trendedAttributes/{attributeId}/samples Get attribute samples (repository) #
POST /timeSeries/batch Batch operations for time series (repository) #
POST /timeSeries/streams/{streamId}/subscriptions Create samples subscription (buffer) #
PUT /timeSeries/streams/{streamId}/subscriptions/{subscriptionId} Update samples subscription (buffer) #
DELETE /timeSeries/streams/{streamId}/subscriptions/{subscriptionId} Delete trend samples subscription #

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-time-series-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-time-series-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Johnson Controls time series 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 time series 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 (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/johnson-controls/refs/heads/main/openapi/johnson-controls-time-series-api-openapi.yml