Johnson Controls Activities API

This section describes the operations you can perform on activities. Activities are a superset of all alarms and audits in a Metasys system. Use activities operations to view audits and alarms. Apply filters to further refine the results. ## Activities Event Subscriptions Subscribe for activity-related events to receive updates when activities are created, discarded, acknowledged, or annotated. #### Subscribing To subscribe for activity-related events, complete the following steps: 1. Obtain a stream ID using the workflow outlined in the [Streaming](#section/Streaming) section. 2. Use [Get Activities](#operation/getActivities) and include a `METASYS-SUBSCRIBE` header with the stream ID. **Note:** Any filters added to the original `GET` operation also apply the event subscription. #### Unsubscribing To unsubscribe from an activities event subscription, complete the following steps: 1. Get the `METASYS-SUBSCRIPTION-LOCATION` from the subscribe operation response. 2. Issue a [Delete activities subscription](#operation/deleteActivitiesSubscription) request to `METASYS-SUBSCRIPTION-LOCATION`. **See also:** - [Get a stream](#operation/getStream) - [Streaming](#tag/streaming) #### Events There are five event types sent by the activities subscription: acknowledged, annotate, discard, new, and heartbeat. - `activity.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 120 seconds. Heartbeat Payload Example ```json { "currentTime": "2021-02-16T16:21:10.23Z", "subscriptionIds": ["c569a157-7315-4f32-bc8f-11607f075660"] } ``` - `activity.alarm.ack` - An alarm acknowledge event is sent to indicate that the management status has changed to acknowledged. Acknowledged Alarm Payload Example ```json { "subscriptionIds": ["788fc8af-ff49-4501-b85b-e3d407a38a9e"], "activity": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "itemReference": "{hostname}:{deviceHostname}/AHU1.OA_T", "objectName": "OA_T", "activityManagementStatus": "acknowledged", "creationTime": "2021-02-16T20:30:00Z", "spaces": [ { "id": "20b27e9a-d721-5e88-9942-85297cc57ea1", "itemReference": "{hostname}:{deviceHostname}/Generic 1.Building 1.Floor 1", "name": "Floor 1", "spaceUrl": "https://metasys-server.example.com/api/v6/space/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "equipment": [ { "id": "4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f", "itemReference": "{hostname}:{deviceHostname}/equipment.Engine1", "equipmentName": "Engine1", "shortName": null, "equipmentUrl": "https://metasys-server.example.com/api/v6/equipment/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "objectUrl": "https://metasys-server.example.com/api/v6/objects/16defc31-1333-5379-82e7-576a6f1e8b50", "objectId": "16defc31-1333-5379-82e7-576a6f1e8b50", "alarm": { "message": "", "alarmGeneratorObject": { "objectReference": "{hostname}:{deviceHostname}/AHU1.OA_T.Alarm1", "referencedObject": { "objectUrl": "https://metasys-server.example.com/api/v6/objects/bfcc3fce-a182-53c0-a529-268f8184496b" } }, "isAckRequired": true, "acknowledgedTime": "2021-02-16T20:31:02Z", "type": "alarmValueEnumSet.avHiAlarm", "priority": 70, "category": "objectCategoryEnumSet.generalCategory", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f", "triggerValue": { "item": "2.0", "schema": { "type": "string", "metasysType": "string", "units": { "id": "unitEnumSet.degF", "title": "deg F" } } }, "description": "" } }, "effectivePermission": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "canAcknowledge": true, "canDiscard": true, "canAnnotate": true } } ``` - `activity.alarm.annotate` - An alarm annotate event is sent when an annotation is added to an alarm activity, providing the information for the annotated alarm. Annotate Alarm Payload Example ```json { "subscriptionIds": ["788fc8af-ff49-4501-b85b-e3d407a38a9e"], "activity": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "itemReference": "{hostname}:{deviceHostname}/AHU1.OA_T", "objectName": "OA_T", "activityManagementStatus": "pending", "creationTime": "2021-02-16T20:30:00Z", "spaces": [ { "id": "20b27e9a-d721-5e88-9942-85297cc57ea1", "itemReference": "{hostname}:{deviceHostname}/Generic 1.Building 1.Floor 1", "name": "Floor 1", "spaceUrl": "https://metasys-server.example.com/api/v6/space/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "equipment": [ { "id": "4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f", "itemReference": "{hostname}:{deviceHostname}/equipment.Engine1", "equipmentName": "Engine1", "shortName": null, "equipmentUrl": "https://metasys-server.example.com/api/v6/equipment/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "objectUrl": "https://metasys-server.example.com/api/v6/objects/16defc31-1333-5379-82e7-576a6f1e8b50", "objectId": "16defc31-1333-5379-82e7-576a6f1e8b50", "alarm": { "message": "", "alarmGeneratorObject": { "objectReference": "{hostname}:{deviceHostname}/AHU1.OA_T.Alarm1", "referencedObject": { "objectUrl": "https://metasys-server.example.com/api/v6/objects/bfcc3fce-a182-53c0-a529-268f8184496b" } }, "isAckRequired": true, "acknowledgedTime": "2021-02-16T20:31:02Z", "type": "alarmValueEnumSet.avHiAlarm", "priority": 70, "category": "objectCategoryEnumSet.generalCategory", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f", "triggerValue": { "item": "2.0", "schema": { "type": "string", "metasysType": "string", "units": { "id": "unitEnumSet.degF", "title": "deg F" } } }, "description": "" } }, "effectivePermission": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "canAcknowledge": true, "canDiscard": true, "canAnnotate": true } } ``` - `activity.alarm.discard` - An alarm discard event is sent when the management status of an alarm activity changes to discarded. Discard Alarm Payload Example ```json { "subscriptionIds": ["788fc8af-ff49-4501-b85b-e3d407a38a9e"], "activity": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "itemReference": "{hostname}:{deviceHostname}/AHU1.OA_T", "objectName": "OA_T", "activityManagementStatus": "discarded", "creationTime": "2021-02-16T20:30:00Z", "spaces": [ { "id": "20b27e9a-d721-5e88-9942-85297cc57ea1", "itemReference": "{hostname}:{deviceHostname}/Generic 1.Building 1.Floor 1", "name": "Floor 1", "spaceUrl": "https://metasys-server.example.com/api/v6/space/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "equipment": [ { "id": "4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f", "itemReference": "{hostname}:{deviceHostname}/equipment.Engine1", "equipmentName": "Engine1", "shortName": null, "equipmentUrl": "https://metasys-server.example.com/api/v6/equipment/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "objectUrl": "https://metasys-server.example.com/api/v6/objects/16defc31-1333-5379-82e7-576a6f1e8b50", "objectId": "16defc31-1333-5379-82e7-576a6f1e8b50", "alarm": { "message": "", "alarmGeneratorObject": { "objectReference": "{hostname}:{deviceHostname}/AHU1.OA_T.Alarm1", "referencedObject": { "objectUrl": "https://metasys-server.example.com/api/v6/objects/bfcc3fce-a182-53c0-a529-268f8184496b" } }, "isAckRequired": true, "acknowledgedTime": "2021-02-16T20:31:02Z", "type": "alarmValueEnumSet.avHiAlarm", "priority": 70, "category": "objectCategoryEnumSet.generalCategory", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f", "triggerValue": { "item": "2.0", "schema": { "type": "string", "metasysType": "string", "units": { "id": "unitEnumSet.degF", "title": "deg F" } } }, "description": "" } }, "effectivePermission": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "canAcknowledge": true, "canDiscard": true, "canAnnotate": true } } ``` - `activity.alarm.new` - A new alarm event is sent when an alarm activity is created. New Alarm Payload Example ```json { "subscriptionIds": ["788fc8af-ff49-4501-b85b-e3d407a38a9e"], "activity": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "itemReference": "{hostname}:{deviceHostname}/AHU1.OA_T", "objectName": "OA_T", "activityManagementStatus": "pending", "creationTime": "2021-02-16T20:30:00Z", "spaces": [ { "id": "20b27e9a-d721-5e88-9942-85297cc57ea1", "itemReference": "{hostname}:{deviceHostname}/Generic 1.Building 1.Floor 1", "name": "Floor 1", "spaceUrl": "https://metasys-server.example.com/api/v6/space/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "equipment": [ { "id": "4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f", "itemReference": "{hostname}:{deviceHostname}/equipment.Engine1", "equipmentName": "IDU1", "shortName": null, "equipmentUrl": "https://metasys-server.example.com/api/v6/equipment/4e0df8ec-c641-5fd0-9ed6-f2d980b1d26f" } ], "objectUrl": "https://metasys-server.example.com/api/v6/objects/16defc31-1333-5379-82e7-576a6f1e8b50", "objectId": "16defc31-1333-5379-82e7-576a6f1e8b50", "alarm": { "message": "", "alarmGeneratorObject": { "objectReference": "{hostname}:{deviceHostname}/AHU1.OA_T.Alarm1", "referencedObject": { "objectUrl": "https://metasys-server.example.com/api/v6/objects/bfcc3fce-a182-53c0-a529-268f8184496b" } }, "isAckRequired": true, "type": "alarmValueEnumSet.avHiAlarm", "priority": 70, "category": "objectCategoryEnumSet.generalCategory", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f", "triggerValue": { "item": "2.0", "schema": { "type": "string", "metasysType": "string", "units": { "id": "unitEnumSet.degF", "title": "deg F" } } }, "description": "" } }, "effectivePermission": { "id": "6443a123-ddcd-47e7-9828-d872db6a7b4f", "canAcknowledge": true, "canDiscard": true, "canAnnotate": true } } ``` - `activity.audit.new` - A new audit event is sent when an audit activity is created. New Audit Payload Example ```json { "subscriptionIds": ["7373cc85-37a5-4ad5-b703-6bc61968aa9a"], "activity": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "itemReference": "{hostname}:{deviceHostname}", "objectName": "MS-NAE5510-3", "activityManagementStatus": "pending", "creationTime": "2021-02-16T16:21:10.23Z", "objectUrl": "https://metasys-server.example.com/api/v6/objects/CDAC85B9-726F-5677-9CBC-ADC77A14E79B", "objectId": "cdac85b9-726f-5677-9cbc-adc77a14e79b", "audit": { "actionType": "auditActionTypeEnumSet.subsystemAuditActionType", "status": null, "preData": null, "postData": { "item": "10.10.198.131", "schema": { "type": "string", "metasysType": "string" } }, "parameters": [], "errorString": null, "user": "MetasysSysAgent", "signature": null, "classLevel": "auditClassesEnumSet.userActionAuditClass", "originApplication": "auditOriginAppEnumSet.systemSecurityAuditOriginApp", "description": "auditTrailStringsEnumSet.atstrSecurityUserLoginSuccessful", "annotationsUrl": null, "self": "https://metasys-server.example.com/api/v6/audits/128d7db4-8ab6-4232-afe1-026fe06d267f" } }, "effectivePermission": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "canDiscard": true } } ``` - `activity.audit.annotate` - An annotate audit event is sent when an annotation is added to an audit activity, providing the information for the annotated audit. Annotate Audit Payload Example ```json { "subscriptionIds": ["7373cc85-37a5-4ad5-b703-6bc61968aa9a"], "activity": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "itemReference": "{hostname}:{deviceHostname}", "objectName": "MS-NAE5510-3", "activityManagementStatus": "pending", "creationTime": "2021-02-16T16:21:10.23Z", "objectUrl": "https://metasys-server.example.com/api/v6/objects/CDAC85B9-726F-5677-9CBC-ADC77A14E79B", "objectId": "cdac85b9-726f-5677-9cbc-adc77a14e79b", "audit": { "actionType": "auditActionTypeEnumSet.subsystemAuditActionType", "status": null, "preData": null, "postData": { "item": "10.10.198.131", "schema": { "type": "string", "metasysType": "string" } }, "parameters": [], "errorString": null, "user": "MetasysSysAgent", "signature": null, "classLevel": "auditClassesEnumSet.userActionAuditClass", "originApplication": "auditOriginAppEnumSet.systemSecurityAuditOriginApp", "description": "auditTrailStringsEnumSet.atstrSecurityUserLoginSuccessful", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/audits/128d7db4-8ab6-4232-afe1-026fe06d267f" } }, "effectivePermission": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "canDiscard": true } } ``` - `activity.audit.discard` - An audit discard event is sent when the management status of an audit activity changes to discarded. Discard Audit Payload Example ```json { "subscriptionIds": ["7373cc85-37a5-4ad5-b703-6bc61968aa9a"], "activity": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "itemReference": "{hostname}:{deviceHostname}", "objectName": "MS-NAE5510-3", "activityManagementStatus": "discarded", "creationTime": "2021-02-16T16:21:10.23Z", "objectUrl": "https://metasys-server.example.com/api/v6/objects/CDAC85B9-726F-5677-9CBC-ADC77A14E79B", "objectId": "cdac85b9-726f-5677-9cbc-adc77a14e79b", "audit": { "actionType": "auditActionTypeEnumSet.subsystemAuditActionType", "status": null, "preData": null, "postData": { "item": "10.10.198.131", "schema": { "type": "string", "metasysType": "string" } }, "parameters": [], "errorString": null, "user": "MetasysSysAgent", "signature": null, "classLevel": "auditClassesEnumSet.userActionAuditClass", "originApplication": "auditOriginAppEnumSet.systemSecurityAuditOriginApp", "description": "auditTrailStringsEnumSet.atstrSecurityUserLoginSuccessful", "annotationsUrl": "https://metasys-server.example.com/api/v6/alarms/6443a123-ddcd-47e7-9828-d872db6a7b4f/annotations", "self": "https://metasys-server.example.com/api/v6/audits/128d7db4-8ab6-4232-afe1-026fe06d267f" } }, "effectivePermission": { "id": "128d7db4-8ab6-4232-afe1-026fe06d267f", "canDiscard": true } } ``` #### Filter Behavior Filters supplied to an activities request limit the results to activities for which the filters apply. When subscribing to an activities request that uses filters, the events received are also limited to the same filter criteria. Exceptions to this behavior occur when filtering on activity management status, such as for `acknowledged` or `discarded` activities. You receive an update whenever an activity management change occurs, regardless of filters, because the change can impact the original set of activities you subscribed to. For example, consider the following scenario: - You subscribe to `acknowledged` activities and receive all acknowledged activities, receiving updates for any acknowledged thereafter across the stream. - In this state, one of the activities in your original list is `discarded` by another user. When this occurs, you receive an `activity.alarm.discard` message for the discarded activity even though your filters exclude activities that are `discarded`. This is necessary so that you can properly maintain the state of activities already received in your application.

Operations 3

GET /activities List activities #
POST /activities/batch Batch operations #
DELETE /activities/streams/{streamId}/subscriptions/{subscriptionId} Delete activities subscription #

Documentation

Specifications

Schemas & Data

Other Resources

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