Cognite Data point subscriptions API

A data point subscription is a way to listen to changes to time series data points, in ingestion order. A single subscription can listen to many time series, and a time series can be part of many subscriptions. You listen to subscriptions by calling the “list subscription data“ endpoint. It will return a list of data point upserts and deleted ranges, together with a cursor to retrieve the next batch of updates. Updates written since the creation of the subscription, up to 7 days ago, can be retrieved through the subscription. Subscriptions can be defined explicitly through a list of time series external ids and instance ids, or implicitly through a filter. The filter is a subset of the advanced filter query in the regular “time series search“ endpoint. Partitions: Subscriptions can be further divided into a number of partitions, for the purpose of fetching subscription data in parallel. Each partition will return data in ingestion order, but the order between partitions is not guaranteed. Limitations: - Each subscription can have at most 10000 time series. - A time series can be part of at most 10 subscriptions. - A project can have at most 1000 subscriptions, of which 100 are filter subscriptions. - Time series with security categories can not be shown in filter subscriptions. - Time series with neither external id nor instance id cannot be added to non-filter subscriptions. - The number of partitions cannot be changed after creation. Access control: You need READ access to subscriptions ACL to read/list subscriptions or list data, and you need WRITE access to create/update/delete subscriptions. Furthermore, you need READ access to the time series you want to get updates from. For filter subscriptions, you either need READ access to all time series, or the filter must be restricted according to your access rights (e.g. by filtering on specific data set IDs). Subscriptions can have data sets that allow for more granular access control. The data set on a subscription does not influence the data stream, but allows you to restrict who can read/update the subscription. Name of ACL: `timeSeriesSubscriptionsAcl` Supported actions: - `READ` - `WRITE` Example capabilities: ``` [ {"timeSeriesAcl":{"actions":["READ"], "scope":{"all":{}}}}, {"timeSeriesSubscriptionsAcl":{"actions":["WRITE", "READ"], "scope":{"all":{}}}} ] ```

OpenAPI Specification

cognite-data-point-subscriptions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Cognite 3D Asset Mapping Data point subscriptions API
  description: "# Introduction\nThis is the reference documentation for the Cognite API with\nan overview of all the available methods.\n\n# Postman\nSelect the **Download** button to download our OpenAPI specification to get started.\n\nTo import your data into Postman, select **Import**, and the Import modal opens.\nYou can import items by dragging or dropping files or folders. You can choose how to import your API and manage the import settings in **View Import Settings**.\n\nIn the Import Settings, set the **Folder organization** to **Tags**, select\n**Enable optional parameters** to turn off the settings, and select **Always inherit authentication** to turn on the settings. Select **Import**.\n\nSet the Authorization to **Oauth2.0**. By default, the settings are for Open Industrial Data. Navigate to [Cognite Hub](https://hub.cognite.com/open-industrial-data-211) to understand how to get the credentials for use in Postman.\n\nFor more information, see [Getting Started with Postman](https://developer.cognite.com/dev/guides/postman/).\n\n# Pagination\nMost resource types can be paginated, indicated by the field `nextCursor` in the response.\nBy passing the value of `nextCursor` as the cursor you will get the next page of `limit` results.\nNote that all parameters except `cursor` has to stay the same.\n\n# Parallel retrieval\nAs general guidance, Parallel Retrieval is a technique that should be used when due to query complexity, retrieval of data in a single request is significantly slower than it would otherwise be for a simple request.  Parallel retrieval does not act as a speed multiplier on optimally running queries.  By parallelizing such requests, data retrieval performance can be tuned to meet the client application needs. \n\nCDF supports parallel retrieval through the `partition` parameter, which has the format `m/n` where `n` is the amount of partitions you would like to split the entire data set into.\nIf you want to download the entire data set by splitting it into 10 partitions, do the following in parallel with `m` running from 1 to 10:\n  - Make a request to `/events` with `partition=m/10`.\n  - Paginate through the response by following the cursor as explained above. Note that the `partition` parameter needs to be passed to all subqueries.\n\nProcessing of parallel retrieval requests is subject to concurrency quota availability. The request returns the `429` response upon exceeding concurrency limits. See the Request throttling chapter below.\n\nTo prevent unexpected problems and to maximize read throughput, you should at most use 10 partitions. \nSome CDF resources will automatically enforce a maximum of 10 partitions.\nFor more specific and detailed information, please read the ```partition``` attribute documentation for the CDF resource you're using.  \n\n# Requests throttling\nCognite Data Fusion (CDF) returns the HTTP `429` (too many requests) response status code when project capacity exceeds the limit.\n\nThe throttling can happen:\n  - If a user or a project sends too many (more than allocated) concurrent requests.\n  - If a user or a project sends a too high (more than allocated) rate of requests in a given amount of time.\n\nCognite recommends using a retry strategy based on truncated exponential backoff to handle sessions with HTTP response codes 429.\n\nCognite recommends using a reasonable number (up to 10) of  `Parallel retrieval` partitions.\n\nFollowing these strategies lets you slow down the request frequency to maximize productivity without having to re-submit/retry failing requests.\n\nSee more [here](https://docs.cognite.com/dev/concepts/resource_throttling).\n\n# API versions\n## Version headers\nThis API uses calendar versioning, and version names follow the `YYYYMMDD` format.\nYou can find the versions currently available by using the version selector at the top of this page.\n\nTo use a specific API version, you can pass the `cdf-version: $version` header along with your requests to the API.\n\n## Beta versions\nThe beta versions provide a preview of what the stable version will look like in the future.\nBeta versions contain functionality that is reasonably mature, and highly likely to become a part of the stable API.\n\nBeta versions are indicated by a `-beta` suffix after the version name. For example, the beta version header for the\n2023-01-01 version is then `cdf-version: 20230101-beta`.\n\n## Alpha versions\nAlpha versions contain functionality that is new and experimental, and not guaranteed to ever become a part of the stable API.\nThis functionality presents no guarantee of service, so its use is subject to caution.\n\nAlpha versions are indicated by an `-alpha` suffix after the version name. For example, the alpha version header for\nthe 2023-01-01 version is then `cdf-version: 20230101-alpha`."
  version: v1
  contact:
    name: Cognite Support
    url: https://support.cognite.com
    email: support@cognite.com
servers:
- url: https://{cluster}.cognitedata.com/api/v1/projects/{project}
  description: The URL for the CDF cluster to connect to
  variables:
    cluster:
      enum:
      - api
      - az-tyo-gp-001
      - az-eastus-1
      - az-power-no-northeurope
      - westeurope-1
      - asia-northeast1-1
      - gc-dsm-gp-001
      default: api
      description: The CDF cluster to connect to
    project:
      default: publicdata
      description: The CDF project name.
security:
- oidc-token:
  - https://{cluster}.cognitedata.com/.default
- oauth2-client-credentials:
  - https://{cluster}.cognitedata.com/.default
- oauth2-open-industrial-data:
  - https://api.cognitedata.com/.default
- oauth2-auth-code:
  - https://{cluster}.cognitedata.com/.default
tags:
- name: Data point subscriptions
  description: "A data point subscription is a way to listen to changes to time series data points, in ingestion order.\n\nA single subscription can listen to many time series, and a time series can be part of many subscriptions.\n\nYou listen to subscriptions by calling the â\x80\x9Clist subscription dataâ\x80\x9C endpoint. It will return\na list of data point upserts and deleted ranges, together with a cursor to retrieve the next\nbatch of updates. Updates written since the creation of the subscription, up to 7 days ago, can be\nretrieved through the subscription.\n\nSubscriptions can be defined explicitly through a list of time series external ids and\ninstance ids, or implicitly through a filter. The filter is a subset of the advanced filter\nquery in the regular â\x80\x9Ctime series searchâ\x80\x9C endpoint.\n\nPartitions:\nSubscriptions can be further divided into a number of partitions, for the purpose of\nfetching subscription data in parallel. Each partition will return data in ingestion order,\nbut the order between partitions is not guaranteed.\n\nLimitations:\n- Each subscription can have at most 10000 time series.\n- A time series can be part of at most 10 subscriptions.\n- A project can have at most 1000 subscriptions, of which 100 are filter subscriptions.\n- Time series with security categories can not be shown in filter subscriptions.\n- Time series with neither external id nor instance id cannot be added to non-filter subscriptions.\n- The number of partitions cannot be changed after creation.\n\nAccess control:\nYou need READ access to subscriptions ACL to read/list\nsubscriptions or list data, and you need WRITE access to create/update/delete subscriptions.\nFurthermore, you need READ access to the time series you want to get updates from.\nFor filter subscriptions, you either need READ access to all time series, or the filter must\nbe restricted according to your access rights (e.g. by filtering on specific data set IDs).\n\nSubscriptions can have data sets that allow for more granular access\ncontrol. The data set on a subscription does not influence the data\nstream, but allows you to restrict who can read/update the subscription.\n\nName of ACL:\n  `timeSeriesSubscriptionsAcl`\n\nSupported actions:\n  - `READ`\n  - `WRITE`\n\nExample capabilities:\n```\n[\n    {\"timeSeriesAcl\":{\"actions\":[\"READ\"], \"scope\":{\"all\":{}}}},\n    {\"timeSeriesSubscriptionsAcl\":{\"actions\":[\"WRITE\", \"READ\"], \"scope\":{\"all\":{}}}}\n]\n```"
paths:
  /timeseries/subscriptions:
    post:
      tags:
      - Data point subscriptions
      summary: Create subscriptions
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:WRITE`


        Create one or more subscriptions that can be used to listen for changes in data points for a set of time series.'
      operationId: postSubscriptions
      requestBody:
        description: The subscriptions to create.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionsCreateRequest'
        required: true
      responses:
        '201':
          description: A list of subscriptions that were created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionDTO'
      x-capability:
      - timeSeriesSubscriptionsAcl:WRITE
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: "from cognite.client.data_classes import DataPointSubscriptionWrite\nsub = DataPointSubscriptionWrite(\n    external_id=\"my_subscription\",\n    name=\"My subscription\",\n    partition_count=1,\n    time_series_ids=[\"myFistTimeSeries\", \"mySecondTimeSeries\"])\ncreated = client.time_series.subscriptions.create(sub)\n\nfrom cognite.client.data_classes import DataPointSubscriptionWrite\nfrom cognite.client.data_classes.data_modeling import NodeId\nsub = DataPointSubscriptionWrite(\n    external_id=\"my_subscription\",\n    name=\"My subscription with Data Model Ids\",\n    partition_count=1,\n    instance_ids=[NodeId(\"my_space\", \"myFistTimeSeries\"), NodeId(\"my_space\", \"mySecondTimeSeries\")])\ncreated = client.time_series.subscriptions.create(sub)\n\nfrom cognite.client.data_classes import DataPointSubscriptionWrite\nfrom cognite.client.data_classes import filters as flt\nfrom cognite.client.data_classes.datapoints_subscriptions import DatapointSubscriptionProperty\nis_numeric_stepwise = flt.And(\n    flt.Equals(DatapointSubscriptionProperty.is_string, False),\n    flt.Equals(DatapointSubscriptionProperty.is_step, True))\nsub = DataPointSubscriptionWrite(\n    external_id=\"my_subscription\",\n    name=\"My subscription for numeric, stepwise time series\",\n    partition_count=1,\n    filter=is_numeric_stepwise)\ncreated = client.time_series.subscriptions.create(sub)\n"
    get:
      tags:
      - Data point subscriptions
      summary: List subscriptions
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:READ`


        List all subscriptions for the tenant. Use nextCursor to paginate through the results.'
      operationId: listSubscriptions
      parameters:
      - name: limit
        in: query
        description: Limit on the number of results to return.
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 100
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: A complete list of subscriptions in the tenant.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionDTOWithCursor'
      x-capability:
      - timeSeriesSubscriptionsAcl:READ
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: 'subscriptions = client.time_series.subscriptions.list(limit=5)

          '
  /timeseries/subscriptions/members:
    get:
      tags:
      - Data point subscriptions
      summary: List subscription members
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:READ`


        List all member time series for a subscription.


        For non-filter subscriptions, either `externalId` or `instanceId` will be set. This is to be

        able to see if each time series was added by external id or instance id. If a time series

        has been added to a subscription both by external id and by instance id, it will be listed

        twice in the output. If a time series that belonged to the subscription has been deleted,

        `id` will not be set.


        Use `nextCursor` to paginate through the results.'
      operationId: listSubscriptionMembers
      parameters:
      - name: limit
        in: query
        description: Limit on the number of results to return.
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 100
      - $ref: '#/components/parameters/Cursor'
      - name: externalId
        description: External id of the subscription.
        in: query
        schema:
          $ref: '#/components/schemas/CogniteExternalId'
      responses:
        '200':
          description: A complete list of member time series in the subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionMemberDTOWithCursor'
      x-capability:
      - timeSeriesSubscriptionsAcl:READ
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: 'from cognite.client.data_classes import DataPointSubscriptionUpdate

          members = client.time_series.subscriptions.list_member_time_series("my_subscription")

          timeseries_external_ids = members.as_external_ids()

          '
  /timeseries/subscriptions/byids:
    post:
      tags:
      - Data point subscriptions
      summary: Retrieve subscriptions
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:READ`


        Retrieve one or more subscriptions by external ID.'
      operationId: getSubscriptionsByIds
      requestBody:
        description: Specify a list of the subscriptions to retrieve.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionsByIdsRequest'
        required: true
      responses:
        '200':
          description: The retrieved subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionDTO'
      x-capability:
      - timeSeriesSubscriptionsAcl:READ
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: 'res = client.time_series.subscriptions.retrieve("my_subscription")

          '
  /timeseries/subscriptions/update:
    post:
      tags:
      - Data point subscriptions
      summary: Update subscriptions
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:WRITE`


        Updates one or more subscriptions. Fields that are not included in the request, are not changed.


        If both `instanceIds` and `timeSeriesIds` are set, they must either both be add/remove or

        both be set operations.'
      operationId: updateSubscriptions
      requestBody:
        description: The subscriptions to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionsUpdateRequest'
        required: true
      responses:
        '200':
          description: A list of subscriptions updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionDTO'
      x-capability:
      - timeSeriesSubscriptionsAcl:WRITE
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: 'from cognite.client.data_classes import DataPointSubscriptionUpdate

          update = DataPointSubscriptionUpdate("my_subscription").name.set("My New Name")

          updated = client.time_series.subscriptions.update(update)


          from cognite.client.data_classes import DataPointSubscriptionUpdate

          update = DataPointSubscriptionUpdate("my_subscription").time_series_ids.add(["MyNewTimeSeriesExternalId"])

          updated = client.time_series.subscriptions.update(update)

          '
  /timeseries/subscriptions/delete:
    post:
      tags:
      - Data point subscriptions
      summary: Delete subscriptions
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:WRITE`


        Delete subscription(s). This operation cannot be undone'
      operationId: deleteSubscriptions
      requestBody:
        description: Specify a list of the subscriptions to delete.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionsDeleteRequest'
        required: true
      responses:
        '200':
          $ref: '#/components/responses/EmptyResponse'
        '400':
          description: IDs not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
      x-capability:
      - timeSeriesSubscriptionsAcl:WRITE
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: 'client.time_series.subscriptions.delete("my_subscription")

          '
  /timeseries/subscriptions/data/list:
    post:
      tags:
      - Data point subscriptions
      summary: List subscription data
      description: '


        > **Required capabilities:** `timeSeriesSubscriptionsAcl:READ`


        Fetch the next batch of data from a given subscription and partition(s).

        Data can be ingested datapoints and time ranges where data is deleted.

        This endpoint will also return changes to the subscription itself, that is, if time series

        are added or removed from the subscription.


        The data can be returned multiple times, there is no mechanism to acknowledge or delete data.

        Use cursors to paginate through the results.'
      operationId: listSubscriptionData
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionsListDataRequest'
      responses:
        '200':
          description: A batch of data from the subscription.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionsListDataResponse'
      x-capability:
      - timeSeriesSubscriptionsAcl:READ
      x-code-samples:
      - lang: Python
        label: Python SDK
        source: "for batch in client.time_series.subscriptions.iterate_data(\"my_subscription\"):\n    # Changes to the subscription itself:\n    print(f\"Added {len(batch.subscription_changes.added)} timeseries\")\n    print(f\"Removed {len(batch.subscription_changes.removed)} timeseries\")\n    print(f\"Changed timeseries data in {len(batch.updates)} updates\")\n    # Changes to datapoints for time series in the subscription:\n    for update in batch.updates:\n        upserts.time_series  # The time series the update belongs to\n        upserts.upserts  # The upserted datapoints, if any\n        upserts.deletes  # Ranges of deleted periods, if any\n    if not batch.has_next:\n        break\n\nfor batch in client.time_series.subscriptions.iterate_data(\"my_subscription\", \"3d-ago\"):\n    pass  # do something\n"
components:
  schemas:
    PostDatapoint:
      oneOf:
      - required:
        - timestamp
        title: NumericalDatapoint
        type: object
        properties:
          timestamp:
            minimum: -2208988800000
            maximum: 4102444799999
            description: The timestamp in milliseconds since the Epoch (Jan 1, 1970). The timestamp must be from a year between 1900 and 2099, inclusive. Use a negative number for timestamps before 1970.
          value:
            type: number
            description: 'The numerical data value of a numerical metric.

              Numerical data values can be in the range (-1e100, 1e100)


              The value is required unless the status is bad. Bad data points may also have one

              of the three special string values: ''NaN'', ''Infinity'' or ''-Infinity''.'
          status:
            $ref: '#/components/schemas/DatapointStatus'
      - required:
        - timestamp
        type: object
        title: StringDatapoint
        properties:
          timestamp:
            minimum: -2208988800000
            maximum: 4102444799999
            description: The timestamp in milliseconds since the Epoch (Jan 1, 1970). The timestamp must be from a year between 1900 and 2099, inclusive. Use a negative number for timestamps before 1970.
          value:
            maxLength: 1023
            type: string
            description: "The string data value of a string metric. The value is required unless the status is bad. The max length is 1023 bytes (UTF-8 encoded). The \"character-to-byte ratio\" is dependent on the language / alphabet used. The following can be used as a **loose** guide for estimation:\n  * Basic Latin characters (ASCII): 1 byte / character\n  * Latin-based alphabets with diacritics (e.g., French, German): 1-2 bytes / character\n  * Greek, Cyrillic, Arabic, Hebrew: typically 2 bytes / character\n  * CJK logograms (e.g., Chinese, Japanese, Korean): typically 3 bytes / character\n  * Emojis and other symbols: typically 4 bytes / character\n"
          status:
            $ref: '#/components/schemas/DatapointStatus'
    DataSetId:
      description: The dataSet Id for the item.
      type: integer
      minimum: 1
      maximum: 9007199254740991
      format: int64
    ListSubscriptionDTOWithCursor:
      type: object
      required:
      - items
      properties:
        items:
          type: array
          minItems: 0
          maxItems: 100
          items:
            $ref: '#/components/schemas/SubscriptionDTO'
        nextCursor:
          type: string
          description: The cursor to get the next page of results (if available).
      description: A list of subscriptions along with possible cursors to get the next page of result
    CogniteExternalId:
      description: The external ID provided by the client. Must be unique for the resource type.
      type: string
      maxLength: 255
      example: my.known.id
    SubscriptionFilterLanguage:
      type: object
      description: 'A filter DSL (Domain Specific Language) to define advanced filter queries.


        At the top level, a `filter` expression is either a single Boolean filter or a

        single leaf filter. Boolean filters contain other Boolean filters and/or leaf filters. The

        total number of filters may be at most 100, and the depth (the greatest number of times

        filters have been nested inside each other) may be at most 10.

        '
      oneOf:
      - $ref: '#/components/schemas/TimeSeriesBoolFilter'
      - $ref: '#/components/schemas/SubscriptionLeafFilter'
      example:
        or:
        - not:
            and:
            - equals:
                property:
                - metadata
                - manufacturer
                value: acme
            - in:
                property:
                - name
                values:
                - pump-1-temperature
                - motor-9-temperature
            - range:
                property:
                - dataSetId
                gte: 1
                lt: 10
        - and:
          - equals:
              property:
              - assetId
              value: 1234
          - equals:
              property:
              - description
              value: Temperature in Celsius
    TimeSeriesValue:
      description: 'A value that you wish to find in the provided property.

        '
      oneOf:
      - type: string
        maxLength: 256
      - type: number
      - type: integer
      - type: boolean
    GetTimeSeriesForSubscription:
      type: object
      required:
      - id
      - isString
      - type
      properties:
        id:
          $ref: '#/components/schemas/CogniteInternalId'
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
        instanceId:
          $ref: '#/components/schemas/CogniteInstanceId'
        isString:
          type: boolean
          description: 'True if the time series contains string values; false if it contains numeric values.

            '
        type:
          $ref: '#/components/schemas/TimeSeriesType'
    CogniteInstanceId:
      description: The ID of an [instance in Cognite Data Models](https://docs.cognite.com/cdf/dm/dm_concepts/dm_spaces_instances#instance).
      type: object
      required:
      - space
      - externalId
      properties:
        space:
          type: string
          minLength: 1
          maxLength: 43
        externalId:
          type: string
          minLength: 1
          maxLength: 255
    IgnoreUnknownIdsField:
      type: object
      properties:
        ignoreUnknownIds:
          description: Ignore IDs and external IDs that are not found
          type: boolean
          default: false
    SubscriptionsDeleteRequest:
      type: object
      allOf:
      - type: object
        required:
        - items
        properties:
          items:
            uniqueItems: true
            type: array
            description: List of ID objects
            items:
              type: object
              title: QueryWithExternalId
              properties:
                externalId:
                  $ref: '#/components/schemas/CogniteExternalId'
            maxItems: 1
            minItems: 1
      - $ref: '#/components/schemas/IgnoreUnknownIdsField'
    CogniteInternalId:
      description: A server-generated ID for the object.
      type: integer
      minimum: 1
      maximum: 9007199254740991
      format: int64
    TimeSeriesBoolFilter:
      description: 'A query that matches items matching boolean combinations of other queries.

        It is built by nesting one or more Boolean clauses, each of which is one of `and`, `or`, and `not`.

        Each such clause contains one or more child clauses (though `not` can only have one).

        Each child clause can be either another Boolean clause or a leaf filter.

        '
      title: Boolean filter
      type: object
      oneOf:
      - type: object
        title: and
        required:
        - and
        properties:
          and:
            description: All of the sub-clauses in the query must appear in matching items.
            type: array
            minItems: 1
            maxItems: 99
            items:
              $ref: '#/components/schemas/TimeSeriesFilterLanguage'
      - type: object
        title: or
        required:
        - or
        properties:
          or:
            description: At least one of the sub-clauses in the query must appear in matching items.
            type: array
            minItems: 1
            maxItems: 99
            items:
              $ref: '#/components/schemas/TimeSeriesFilterLanguage'
      - type: object
        title: not
        required:
        - not
        properties:
          not:
            title: Filter DSL
            description: Sub-clauses in the query must not appear in matching items.
            type: object
            allOf:
            - $ref: '#/components/schemas/TimeSeriesFilterLanguage'
    TimeSeriesSearchFilter:
      type: object
      title: search
      required:
      - search
      properties:
        search:
          required:
          - property
          - value
          description: 'Matches items where the provided string property contains the given value according to a fuzzy search.

            The value may exist anywhere in the string, even as a part of a word or with some grammatical

            variations (e.g., searching for "run" will also find "ran").


            The supported properties are `name` and `description`. It''s also possible to set `property`

            to `["query"]`, in which case both `name` and `description` will be searched.


            When the `search` filter is being used, and it''s not nested inside a `not` filter (directly or indirectly),

            and no `sort` is specified, the results will be ranked according to how good the match is.

            When the `query` ''property'' is specified, matches in `name` will rank higher than matches in `description`.

            The `search` filter may be used at most twice within the same `advancedFilter` expression.

            '
          type: object
          properties:
            property:
              $ref: '#/components/schemas/TimeSeriesFilterProperty'
            value:
              $ref: '#/components/schemas/TimeSeriesStringValue'
    TimeSeriesFilterLanguage:
      type: object
      description: 'A filter DSL (Domain Specific Language) to define advanced filter queries.


        At the top level, an `advancedFilter` expression is either a single Boolean filter or a

        single leaf filter. Boolean filters contain other Boolean filters and/or leaf filters. The

        total number of filters may be at most 100, and the depth (the greatest number of times

        filters have been nested inside each other) may be at most 10. The `search` leaf filter may

        at most be used twice within a single `advancedFilter`, but all other filters can be used

        as many times as you like as long as the other limits are respected.

        '
      oneOf:
      - $ref: '#/components/schemas/TimeSeriesBoolFilter'
      - $ref: '#/components/schemas/TimeSeriesLeafFilter'
      example:
        or:
        - not:
            and:
            - equals:
                property:
                - metadata
                - manufacturer
                value: acme
            - in:
                property:
                - name
                values:
                - pump-1-temperature
                - motor-9-temperature
            - range:
                property:
                - dataSetId
                gte: 1
                lt: 10
        - and:
          - equals:
              property:
              - assetId
              value: 1234
          - equals:
              property:
              - description
              value: Temperature in Celsius
    TimeSeriesEpochTimestamp:
      description: The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds. Can be negative to define dates before 1970, up to 1900.
      type: integer
      minimum: -2208988800000
      format: int64
      example: 1638795554528
    TimeSeriesRangeFilter:
      type: object
      title: range
      required:
      - range
      properties:
        range:
          required:
          - property
          description: 'Matches items that contain terms within the provided range.


            One upper bound and/or one lower bound must be specified. It''s not allowed to specify both inclusive and exclusive

            bounds "on the same side" together (at most one of `lte` and `lt` may be specified, and at most one of `gte` and `gt`).

            - `gte`: Greater than or equal to.

            - `gt`: Greater than.

            - `lte`: Less than or equal to.

            - `lt`: Less than.


            May only be applied to string properties and number properties.

            '
          type: object
          properties:
            property:
              $ref: '#/components/schemas/TimeSeriesFilterProperty'
            gte:
              $ref: '#/components/schemas/TimeSeriesRangeValue'
            gt:
              $ref: '#/components/schemas/TimeSeriesRangeValue'
            lte:
              $ref: '#/components/schemas/TimeSeriesRangeValue'
            lt:
              $ref: '#/components/schemas/TimeSeriesRangeValue'
    SubscriptionsDataDeletesDTO:
      type: array
      description: List of time ranges in which all data points were deleted.
      items:
        $ref: '#/components/schemas/DatapointsDeleteRange'
    NullableSinglePatchLong:
      oneOf:
      - type: object
        required:
        - set
        title: set
        properties:
          set:
            type: integer
            format: int64
      - type: object
        required:
        - setNull
        title: remove
        properties:
          setNull:
            type: boolean
            enum:
            - true
      description: The change that will be applied to the key.
    DatapointsDeleteRange:
      required:
      

# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cognite/refs/heads/main/openapi/cognite-data-point-subscriptions-api-openapi.yml