PassiveLogic Quantum Sync API

Routes related to quantum sync

Operations 6

GET /api/v0.19/quantumsync QuantumSync API over websockets #
GET /api/datasync QuantumSync API Legacy Route. Use /api/quantumsync instead. #
GET /api/v0.19/datasync QuantumSync API Legacy Route. Use /api/v0.19/quantumsync instead. #
GET /api/v0.20/quantumsync QuantumSync API over websockets #
GET /api/v0.20/datasync QuantumSync API Legacy Route. Use /api/v0.20/quantumsync instead. #
GET /api/quantumsync QuantumSync API over websockets #

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/passivelogic-quantum-sync-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

passivelogic-quantum-sync-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Passivelogic Quantum Sync API
  version: 0.0.0
  description: 'Operations tagged Quantum Sync across 2 of this provider''s published API definitions: passivelogic-quantum-sync-api-openapi.yml, passivelogic-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://passivelogic.com/api/
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- description: Routes related to quantum sync
  name: Quantum Sync
paths:
  /api/v0.19/quantumsync:
    get:
      tags:
      - Quantum Sync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
      summary: QuantumSync API over websockets
      operationId: getApiV0.19Quantumsync
      description: "# Custom QuantumSync/ShadowClient API:\n\n## QuantumSync QuantumSyncRequestTypes:\n### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]\nex)\n```json\n{\n    \"type\": \"start\",\n    \"id\": \"site\",\n    \"appType\":\"BuildingStudio\"\n    \"payload\": {\n        \"authToken\": \"REDACTED\",\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Site\",\n        \"include\": [\n            \"Site\",\n            \"Building\",\n            \"Floor\",\n            \"Zone\"\n    ]\n    }\n}\n```\n\n### `updateContext`: change the current context / graph in memory.\nnote: the previous graph/context can be returned from memory by using updateContext id: <previous id used in start or updateContext>.\nUp to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.\n\nex)\n```json\n{\n    \"type\": \"updateContext\",\n    \"id\": \"building\",\n    \"payload\": {\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Building\",\n        \"include\": [\n            \"Site\",\n            \"Floor\",\n            \"Zone\",\n            \"Image\",\n            \"Surface\",\n            \"Adjacency\",\n            \"System\",\n            \"Quanta\",\n            \"Manufacturer\",\n            \"Equipment\",\n            \"Property\",\n            \"Location\"\n        ]\n    }\n}\n```\n\n### `deleteContext`: delete/clear the context out of memory.\nex)\n```json\n{\n    \"type\": \"deleteContext\",\n    \"id\": \"building\",\n    \"payload\": {}\n}\n```\n\n### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.\n\nExecuting concurrent sync's is not allowed. If there is a sync already processing and another sync is requested before the response of the first sync is sent, then the 2nd symc will return an error saying there is a sync currently processing, and to wait until its finished before requesting another sync.\n\nex)\n```json\n{\n    \"type\": \"sync\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,\nand discard them at the end of the websocket session.\nex)\n```json\n{\n    \"type\": \"syncEphemeral\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `propertyHistory`: Get history data for a property & listen for updates.\nex)\n```json\n{\n    \"type\": \"propertyHistory\",\n    \"id\": \"propertyHistory1\",\n    \"payload\": {\n        \"propertyIDs\": [\"E585C3B8-F1E5-40D0-83A7-658B248DF103\"],\n        \"startAt\": \"2024-01-01T00:00:00Z\",\n        \"endAt\": \"2024-01-01T01:00:00Z\",\n        \"resample\": {\n            \"interval\": {\n                \"to\": \"minutely\",\n                \"reduceUsing\": \"avg\",\n                \"fillUsing\": \"interpolate\"\n        },\n        \"pollIntervalSec\": 60\n    }\n}\n\n### `propertyHistoryStop`: Stop listening for property history updates\nex)\n```json\n{\n    \"type\": \"propertyHistoryStop\",\n    \"id\": \"propertyHistory1\"\n}\n```\n\n### `writeHistory`: Write historical data to a property\nex)\n```json\n{\n    \"type\": \"writeHistory\",\n    \"id\": \"writeHistory\",\n    \"payload\": {\n        \"histories\": [\n            {\n                \"propertyID\": \"E585C3B8-F1E5-40D0-83A7-658B248DF103\",\n                \"time\": \"2024-01-01T00:00:00Z\",\n                \"value\": 5.0\n            }\n        ]\n    }\n}\n```"
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
  /api/datasync:
    get:
      summary: QuantumSync API Legacy Route. Use /api/quantumsync instead.
      operationId: getApiDatasync
      deprecated: true
      description: Refer to the /api/quantumsync route documentation for full details. This route will be removed in the next major version.
      tags:
      - Quantum Sync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
  /api/v0.19/datasync:
    get:
      operationId: getApiV0.19Datasync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
      summary: QuantumSync API Legacy Route. Use /api/v0.19/quantumsync instead.
      deprecated: true
      description: Refer to the /api/v0.19/quantumsync route documentation for full details. This route will be removed in the next major version.
      tags:
      - Quantum Sync
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
  /api/v0.20/quantumsync:
    get:
      summary: QuantumSync API over websockets
      operationId: getApiV0.20Quantumsync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
      description: "# Custom QuantumSync/ShadowClient API:\n\n## QuantumSync QuantumSyncRequestTypes:\n### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]\nex)\n```json\n{\n    \"type\": \"start\",\n    \"id\": \"site\",\n    \"appType\":\"BuildingStudio\"\n    \"payload\": {\n        \"authToken\": \"REDACTED\",\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Site\",\n        \"include\": [\n            \"Site\",\n            \"Building\",\n            \"Floor\",\n            \"Zone\"\n    ]\n    }\n}\n```\n\n### `updateContext`: change the current context / graph in memory.\nnote: the previous graph/context can be returned from memory by using updateContext id: <previous id used in start or updateContext>.\nUp to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.\n\nex)\n```json\n{\n    \"type\": \"updateContext\",\n    \"id\": \"building\",\n    \"payload\": {\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Building\",\n        \"include\": [\n            \"Site\",\n            \"Floor\",\n            \"Zone\",\n            \"Image\",\n            \"Surface\",\n            \"Adjacency\",\n            \"System\",\n            \"Quanta\",\n            \"Manufacturer\",\n            \"Equipment\",\n            \"Property\",\n            \"Location\"\n        ]\n    }\n}\n```\n\n### `deleteContext`: delete/clear the context out of memory.\nex)\n```json\n{\n    \"type\": \"deleteContext\",\n    \"id\": \"building\",\n    \"payload\": {}\n}\n```\n\n### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.\n\nExecuting concurrent sync's is not allowed. If there is a sync already processing and another sync is requested before the response of the first sync is sent, then the 2nd symc will return an error saying there is a sync currently processing, and to wait until its finished before requesting another sync.\n\nex)\n```json\n{\n    \"type\": \"sync\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,\nand discard them at the end of the websocket session.\nex)\n```json\n{\n    \"type\": \"syncEphemeral\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `propertyHistory`: Get history data for a property & listen for updates.\nex)\n```json\n{\n    \"type\": \"propertyHistory\",\n    \"id\": \"propertyHistory1\",\n    \"payload\": {\n        \"propertyIDs\": [\"E585C3B8-F1E5-40D0-83A7-658B248DF103\"],\n        \"startAt\": \"2024-01-01T00:00:00Z\",\n        \"endAt\": \"2024-01-01T01:00:00Z\",\n        \"resample\": {\n            \"interval\": {\n                \"to\": \"minutely\",\n                \"reduceUsing\": \"avg\",\n                \"fillUsing\": \"interpolate\"\n        },\n        \"pollIntervalSec\": 60\n    }\n}\n\n### `propertyHistoryStop`: Stop listening for property history updates\nex)\n```json\n{\n    \"type\": \"propertyHistoryStop\",\n    \"id\": \"propertyHistory1\"\n}\n```\n\n### `writeHistory`: Write historical data to a property\nex)\n```json\n{\n    \"type\": \"writeHistory\",\n    \"id\": \"writeHistory\",\n    \"payload\": {\n        \"histories\": [\n            {\n                \"propertyID\": \"E585C3B8-F1E5-40D0-83A7-658B248DF103\",\n                \"time\": \"2024-01-01T00:00:00Z\",\n                \"value\": 5.0\n            }\n        ]\n    }\n}\n```"
      tags:
      - Quantum Sync
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
  /api/v0.20/datasync:
    get:
      summary: QuantumSync API Legacy Route. Use /api/v0.20/quantumsync instead.
      operationId: getApiV0.20Datasync
      tags:
      - Quantum Sync
      description: Refer to the /api/v0.20/quantumsync route documentation for full details. This route will be removed in the next major version.
      deprecated: true
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
  /api/quantumsync:
    get:
      description: "# Custom QuantumSync/ShadowClient API:\n\n## QuantumSync QuantumSyncRequestTypes:\n### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]\nex)\n```json\n{\n    \"type\": \"start\",\n    \"id\": \"site\",\n    \"appType\":\"BuildingStudio\"\n    \"payload\": {\n        \"authToken\": \"REDACTED\",\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Site\",\n        \"include\": [\n            \"Site\",\n            \"Building\",\n            \"Floor\",\n            \"Zone\"\n    ]\n    }\n}\n```\n\n### `updateContext`: change the current context / graph in memory.\nnote: the previous graph/context can be returned from memory by using updateContext id: <previous id used in start or updateContext>.\nUp to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.\n\nex)\n```json\n{\n    \"type\": \"updateContext\",\n    \"id\": \"building\",\n    \"payload\": {\n        \"ID\": \"ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE\",\n        \"from\": \"Building\",\n        \"include\": [\n            \"Site\",\n            \"Floor\",\n            \"Zone\",\n            \"Image\",\n            \"Surface\",\n            \"Adjacency\",\n            \"System\",\n            \"Quanta\",\n            \"Manufacturer\",\n            \"Equipment\",\n            \"Property\",\n            \"Location\"\n        ]\n    }\n}\n```\n\n### `deleteContext`: delete/clear the context out of memory.\nex)\n```json\n{\n    \"type\": \"deleteContext\",\n    \"id\": \"building\",\n    \"payload\": {}\n}\n```\n\n### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.\n\nExecuting concurrent sync's is not allowed. If there is a sync already processing and another sync is requested before the response of the first sync is sent, then the 2nd symc will return an error saying there is a sync currently processing, and to wait until its finished before requesting another sync.\n\nex)\n```json\n{\n    \"type\": \"sync\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,\nand discard them at the end of the websocket session.\nex)\n```json\n{\n    \"type\": \"syncEphemeral\",\n    \"id\": \"F5B6BC51-B991-440C-8ACB-B55C65FD7C24\",\n    \"payload\": {\n        \"added\": [],\n        \"updated\": [\n            {\n                \"description\": null,\n                \"ID\": \"80187B0B-CEEB-488A-A9B7-06784CFB0464\",\n                \"longitude\": null,\n                \"locationPropertyID\": null,\n                \"elevation\": null,\n                \"latitude\": null,\n                \"address\": null,\n                \"timeZone\": null,\n                \"siteIDs\": [\n                    \"7E7E04B4-8F32-4585-839D-E0EFC7BB3544\"\n                ],\n                \"weatherSourceIDs\": [],\n                \"locked\": false,\n                \"authGroupID\": \"A1EBEC59-D887-473F-A5C5-7CBD4ADB2556\",\n                \"__typename\": \"Location\",\n                \"name\": \"foo\"\n            }\n        ],\n        \"removed\": []\n    }\n}\n```\n\n### `propertyHistory`: Get history data for a property & listen for updates.\nex)\n```json\n{\n    \"type\": \"propertyHistory\",\n    \"id\": \"propertyHistory1\",\n    \"payload\": {\n        \"propertyIDs\": [\"E585C3B8-F1E5-40D0-83A7-658B248DF103\"],\n        \"startAt\": \"2024-01-01T00:00:00Z\",\n        \"endAt\": \"2024-01-01T01:00:00Z\",\n        \"resample\": {\n            \"interval\": {\n                \"to\": \"minutely\",\n                \"reduceUsing\": \"avg\",\n                \"fillUsing\": \"interpolate\"\n        },\n        \"pollIntervalSec\": 60\n    }\n}\n\n### `propertyHistoryStop`: Stop listening for property history updates\nex)\n```json\n{\n    \"type\": \"propertyHistoryStop\",\n    \"id\": \"propertyHistory1\"\n}\n```\n\n### `writeHistory`: Write historical data to a property\nex)\n```json\n{\n    \"type\": \"writeHistory\",\n    \"id\": \"writeHistory\",\n    \"payload\": {\n        \"histories\": [\n            {\n                \"propertyID\": \"E585C3B8-F1E5-40D0-83A7-658B248DF103\",\n                \"time\": \"2024-01-01T00:00:00Z\",\n                \"value\": 5.0\n            }\n        ]\n    }\n}\n```"
      summary: QuantumSync API over websockets
      operationId: getApiQuantumsync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
      tags:
      - Quantum Sync
    servers:
    - url: https://passivelogic.com/api/
      description: Base URL declared by the provider in apis.yml (roadmap#122).
components:
  securitySchemes:
    XSRF_header:
      in: header
      description: Authentication using an XSRF protected JWT
      name: X-PL-AUTH
      type: apiKey
    Basic_Auth_-_login:
      description: Basic authentication used only at login.
      scheme: basic
      type: http
    PL_API_Key:
      in: header
      description: PL API Key in header
      name: PL-API-KEY
      type: apiKey
    DEPRECATED_-_PL_API_Key:
      in: header
      description: DEPRECATED - PL API Key in Bearer header
      name: 'Authorization: PL-API-KEY'
      type: apiKey
x-refined-from:
- passivelogic-quantum-sync-api-openapi.yml
- passivelogic-rest-api-openapi.yml