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:
  version: 0.0.0
  description: 'This page documents the operations supported by the PassiveLogic HTTP API, covering authentication, user management, and

    GraphQL API access.'
  title: PassiveLogic REST Quantum Sync API
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:


        ## QuantumSync QuantumSyncRequestTypes:

        ### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]

        ex)

        ```json

        {

        "type": "start",

        "id": "site",

        "appType":"BuildingStudio"

        "payload": {

        "authToken": "REDACTED",

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Site",

        "include": [

        "Site",

        "Building",

        "Floor",

        "Zone"

        ]

        }

        }

        ```


        ### `updateContext`: change the current context / graph in memory.

        note: the previous graph/context can be returned from memory by using updateContext id: .

        Up to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.


        ex)

        ```json

        {

        "type": "updateContext",

        "id": "building",

        "payload": {

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Building",

        "include": [

        "Site",

        "Floor",

        "Zone",

        "Image",

        "Surface",

        "Adjacency",

        "System",

        "Quanta",

        "Manufacturer",

        "Equipment",

        "Property",

        "Location"

        ]

        }

        }

        ```


        ### `deleteContext`: delete/clear the context out of memory.

        ex)

        ```json

        {

        "type": "deleteContext",

        "id": "building",

        "payload": {}

        }

        ```


        ### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.


        Executing 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.


        ex)

        ```json

        {

        "type": "sync",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,

        and discard them at the end of the websocket session.

        ex)

        ```json

        {

        "type": "syncEphemeral",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `propertyHistory`: Get history data for a property & listen for updates.

        ex)

        ```json

        {

        "type": "propertyHistory",

        "id": "propertyHistory1",

        "payload": {

        "propertyIDs": ["E585C3B8-F1E5-40D0-83A7-658B248DF103"],

        "startAt": "2024-01-01T00:00:00Z",

        "endAt": "2024-01-01T01:00:00Z",

        "resample": {

        "interval": {

        "to": "minutely",

        "reduceUsing": "avg",

        "fillUsing": "interpolate"

        },

        "pollIntervalSec": 60

        }

        }


        ### `propertyHistoryStop`: Stop listening for property history updates

        ex)

        ```json

        {

        "type": "propertyHistoryStop",

        "id": "propertyHistory1"

        }

        ```


        ### `writeHistory`: Write historical data to a property

        ex)

        ```json

        {

        "type": "writeHistory",

        "id": "writeHistory",

        "payload": {

        "histories": [

        {

        "propertyID": "E585C3B8-F1E5-40D0-83A7-658B248DF103",

        "time": "2024-01-01T00:00:00Z",

        "value": 5.0

        }

        ]

        }

        }

        ```'
  /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: []
  /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
  /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:


        ## QuantumSync QuantumSyncRequestTypes:

        ### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]

        ex)

        ```json

        {

        "type": "start",

        "id": "site",

        "appType":"BuildingStudio"

        "payload": {

        "authToken": "REDACTED",

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Site",

        "include": [

        "Site",

        "Building",

        "Floor",

        "Zone"

        ]

        }

        }

        ```


        ### `updateContext`: change the current context / graph in memory.

        note: the previous graph/context can be returned from memory by using updateContext id: .

        Up to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.


        ex)

        ```json

        {

        "type": "updateContext",

        "id": "building",

        "payload": {

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Building",

        "include": [

        "Site",

        "Floor",

        "Zone",

        "Image",

        "Surface",

        "Adjacency",

        "System",

        "Quanta",

        "Manufacturer",

        "Equipment",

        "Property",

        "Location"

        ]

        }

        }

        ```


        ### `deleteContext`: delete/clear the context out of memory.

        ex)

        ```json

        {

        "type": "deleteContext",

        "id": "building",

        "payload": {}

        }

        ```


        ### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.


        Executing 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.


        ex)

        ```json

        {

        "type": "sync",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,

        and discard them at the end of the websocket session.

        ex)

        ```json

        {

        "type": "syncEphemeral",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `propertyHistory`: Get history data for a property & listen for updates.

        ex)

        ```json

        {

        "type": "propertyHistory",

        "id": "propertyHistory1",

        "payload": {

        "propertyIDs": ["E585C3B8-F1E5-40D0-83A7-658B248DF103"],

        "startAt": "2024-01-01T00:00:00Z",

        "endAt": "2024-01-01T01:00:00Z",

        "resample": {

        "interval": {

        "to": "minutely",

        "reduceUsing": "avg",

        "fillUsing": "interpolate"

        },

        "pollIntervalSec": 60

        }

        }


        ### `propertyHistoryStop`: Stop listening for property history updates

        ex)

        ```json

        {

        "type": "propertyHistoryStop",

        "id": "propertyHistory1"

        }

        ```


        ### `writeHistory`: Write historical data to a property

        ex)

        ```json

        {

        "type": "writeHistory",

        "id": "writeHistory",

        "payload": {

        "histories": [

        {

        "propertyID": "E585C3B8-F1E5-40D0-83A7-658B248DF103",

        "time": "2024-01-01T00:00:00Z",

        "value": 5.0

        }

        ]

        }

        }

        ```'
      tags:
      - Quantum Sync
  /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: []
  /api/quantumsync:
    get:
      description: '# Custom QuantumSync/ShadowClient API:


        ## QuantumSync QuantumSyncRequestTypes:

        ### `start`: authenticates and specifies an initial context. note: the id for start and updateContext is used to key a Dictionary[String:AnyRootedQuantumGraph]

        ex)

        ```json

        {

        "type": "start",

        "id": "site",

        "appType":"BuildingStudio"

        "payload": {

        "authToken": "REDACTED",

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Site",

        "include": [

        "Site",

        "Building",

        "Floor",

        "Zone"

        ]

        }

        }

        ```


        ### `updateContext`: change the current context / graph in memory.

        note: the previous graph/context can be returned from memory by using updateContext id: .

        Up to 5 contexts can be loaded before prevention (error) or deleteContext message needed to free up loaded count to load a new context.


        ex)

        ```json

        {

        "type": "updateContext",

        "id": "building",

        "payload": {

        "ID": "ACAF9E07-5031-4BC2-A8C5-D2C6598D83DE",

        "from": "Building",

        "include": [

        "Site",

        "Floor",

        "Zone",

        "Image",

        "Surface",

        "Adjacency",

        "System",

        "Quanta",

        "Manufacturer",

        "Equipment",

        "Property",

        "Location"

        ]

        }

        }

        ```


        ### `deleteContext`: delete/clear the context out of memory.

        ex)

        ```json

        {

        "type": "deleteContext",

        "id": "building",

        "payload": {}

        }

        ```


        ### `sync`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload.


        Executing 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.


        ex)

        ```json

        {

        "type": "sync",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `syncEphemeral`: create/update/delete QuantumObjects via a FlatGraphDiff as the payload, do not write them to the database,

        and discard them at the end of the websocket session.

        ex)

        ```json

        {

        "type": "syncEphemeral",

        "id": "F5B6BC51-B991-440C-8ACB-B55C65FD7C24",

        "payload": {

        "added": [],

        "updated": [

        {

        "description": null,

        "ID": "80187B0B-CEEB-488A-A9B7-06784CFB0464",

        "longitude": null,

        "locationPropertyID": null,

        "elevation": null,

        "latitude": null,

        "address": null,

        "timeZone": null,

        "siteIDs": [

        "7E7E04B4-8F32-4585-839D-E0EFC7BB3544"

        ],

        "weatherSourceIDs": [],

        "locked": false,

        "authGroupID": "A1EBEC59-D887-473F-A5C5-7CBD4ADB2556",

        "__typename": "Location",

        "name": "foo"

        }

        ],

        "removed": []

        }

        }

        ```


        ### `propertyHistory`: Get history data for a property & listen for updates.

        ex)

        ```json

        {

        "type": "propertyHistory",

        "id": "propertyHistory1",

        "payload": {

        "propertyIDs": ["E585C3B8-F1E5-40D0-83A7-658B248DF103"],

        "startAt": "2024-01-01T00:00:00Z",

        "endAt": "2024-01-01T01:00:00Z",

        "resample": {

        "interval": {

        "to": "minutely",

        "reduceUsing": "avg",

        "fillUsing": "interpolate"

        },

        "pollIntervalSec": 60

        }

        }


        ### `propertyHistoryStop`: Stop listening for property history updates

        ex)

        ```json

        {

        "type": "propertyHistoryStop",

        "id": "propertyHistory1"

        }

        ```


        ### `writeHistory`: Write historical data to a property

        ex)

        ```json

        {

        "type": "writeHistory",

        "id": "writeHistory",

        "payload": {

        "histories": [

        {

        "propertyID": "E585C3B8-F1E5-40D0-83A7-658B248DF103",

        "time": "2024-01-01T00:00:00Z",

        "value": 5.0

        }

        ]

        }

        }

        ```'
      summary: QuantumSync API over websockets
      operationId: getApiQuantumsync
      security:
      - Basic Auth - login: []
      - XSRF header: []
      - DEPRECATED - PL API Key: []
      - PL API Key: []
      tags:
      - Quantum Sync
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