> ## Documentation Index
> Fetch the complete documentation index at: https://docs.taqtile.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Subscriptions

> Learn how to establish a WebSocket connection using any programming language or tool that supports the WebSocket protocol.

## Prerequisites

* Ability to establish a WebSocket connection using any programming language or tool that support the WebSocket protocol

## About Subscriptions

Subscriptions are a source of on-the-fly real-time Manifest data access. Using subscriptions in an external system clients can get real-time updates on changes inside of the Manifest platform without the necessity to make extra requests.

## How to Set-up Subscriptions

* To establish connection to GraphQL subscriptions from a source outside Manifest a WebSocket protocol usage is required.
* Use the following connection string in your WebSocket library or tool to establish connection:
  * "**\<protocol>**://**\<subdomain>**.**\<host>**/socket.io.v4/?transport=websocket\&EIO=4\&token=**\<jwt\_token>**&**\<parameters>**"
* Below shows what should be included in the following connection string in order to establish connections:
  * **\<protocol>:** "wss" is used to establish a secure TLS connection. Use "ws" for On-Premise Docker connection.
  * **\<subdomain>**: e.g. "clientname", use your subdomain here.
  * **\<host>**: "taqmanifest.com" or a different host you are working at. Use "localhost" for On-Premise Docker connection.
  * **\<jwt\_token>**: JWT token of any authorized on the subdomain.
  * **\<parameters>**: entities IDs or names that you need to get updates for. If you want to use multiple subscriptions - join them using & (ampersand sign). Boolean type parameters should have value of "true" to get subscription.
* Below are examples of the subscriptions you can get updates for:
  * **newAsset\<Boolean>** - subscribe to all new Assets created;
  * **newMeasurement\<Boolean>** - subscribe to all new Measurements created;
  * **jobForAssetId\<Integer>** - subscribe to all new Jobs created referencing the Asset with ID that you specify as parameter value;
  * **jobOnLocationId\<Integer>** - subscribe to all new Jobs created referencing the Location with ID that you specify as parameter value;
  * **faultOnLocationId\<Integer>** - subscribe to all new Faults set on Jobs on the Location with ID that you specify as parameter value;
  * **assetId\<Integer>** - subscribe to all updates of the Asset with ID that you specify as parameter value;
  * **jobId\<Integer>** - subscribe to all updates of the Job with ID that you specify as parameter value;
  * **userId\<Integer>** - subscribe to all updates of the User with ID that you specify as parameter value;
  * **measurementId\<Integer>** - subscribe to all updates of the Measurement with ID that you specify as parameter value;
* Additional events need to be set up using your WebSocket library or tool:
  * Send a single event with string data equal to "40" after connection is established
  * Upon every event with string data equal to "2" send an event with string data equal to "3"

## Example connection string:

"wss\://client.taqmanifest.com/socket.io.v4/?transport=websocket\&EIO=4\&token=JWT%203y4r3andsoon\&newAsset=true\&userId=321\&jobOnLocationId=2474"

<iframe title="vimeo-player" src="https://player.vimeo.com/video/796816157?h=8a1b1243fc" width="640" height="360" frameborder="0" referrerpolicy="strict-origin-when-cross-origin" allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share" allowfullscreen />
