Cognite Signals API

A signal is a notification that something has occurred in a CDF process. Users and systems may listen to signals by creating a sink and attaching subscriptions with a filter that matches the signals they are interested in. Subscriptions tie sinks to topics. Each topic represents some CDF resource like integrations or workflows. When a signal is emitted for a resource, all subscriptions for that resource's topic are evaluated. If the signal matches the subscription filter, it is pushed to the the sink.

OpenAPI Specification

cognite-signals-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Cognite 3D Asset Mapping Signals 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: Signals
  description: 'A signal is a notification that something has occurred in a CDF process. Users and systems may listen to signals by creating a sink and attaching subscriptions with a filter that matches the signals they are interested in.

    Subscriptions tie sinks to topics. Each topic represents some CDF resource like integrations or workflows. When a signal is emitted for a resource, all subscriptions for that resource''s topic are evaluated. If the signal matches the subscription filter, it is pushed to the the sink.'
paths:
  /processes/signals/sinks:
    get:
      x-capability: subscribeSignalsAcl:READ
      tags:
      - Signals
      summary: List sinks
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:READ`


        List all sinks in the project. This will return all sinks the user has access to. If the user only has "current_user" scope, it will only return the sink for the user making the request, if it exists.

        '
      operationId: listSignalSinks
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: List of sinks and an optional cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SinkRead_WithCursor'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Create sinks
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Create one or more sinks in the project. A sink represents a destination for signals, either a user sink (signals sent to the user''s e-mail) or an e-mail sink (signals sent to a specified e-mail address).

        '
      operationId: createSignalSinks
      requestBody:
        description: Sinks to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_SinkWrite'
      responses:
        '200':
          description: Created sinks.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SinkRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/sinks/byids:
    post:
      x-capability: subscribeSignalsAcl:READ
      tags:
      - Signals
      summary: Retrieve sinks by external IDs
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:READ`


        Retrieve one or more sinks by their external IDs.

        '
      operationId: retrieveSignalSinksByIds
      requestBody:
        description: Sinks to retrieve.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_RetrieveSinks'
      responses:
        '200':
          description: Retrieved sinks.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SinkRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/sinks/delete:
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Delete sinks
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Delete one or more sinks by their external IDs.

        '
      operationId: deleteSignalSinks
      requestBody:
        description: Sinks to delete.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_DeleteSinks'
      responses:
        '200':
          $ref: '#/components/responses/EmptyResponse'
          description: Empty response
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/sinks/update:
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Update sinks
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Update one or more sinks in the project.

        '
      operationId: updateSignalSinks
      requestBody:
        description: Sinks to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_SinkUpdate'
      responses:
        '200':
          description: Updated sinks.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SinkRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/subscriptions:
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Create subscriptions
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Create one or more subscriptions in the project. A subscription ties a sink to a topic with a filter that determines which signals will be pushed out to the sink.

        '
      operationId: createSignalSubscriptions
      requestBody:
        description: Subscriptions to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_SubscriptionWrite'
      responses:
        '200':
          description: Created subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SubscriptionRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/subscriptions/list:
    post:
      x-capability: subscribeSignalsAcl:READ
      tags:
      - Signals
      summary: Filter subscriptions
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:READ`


        Retrieve subscriptions matching a filter.

        '
      operationId: filterSignalSubscriptions
      requestBody:
        description: Subscription filter request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionFilterRequest'
      responses:
        '200':
          description: List of subscriptions and an optional cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SubscriptionRead_WithCursor'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/subscriptions/update:
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Update subscriptions
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Update one or more subscriptions in the project.

        '
      operationId: updateSignalSubscriptions
      requestBody:
        description: Subscriptions to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_UpdateSubscriptions'
      responses:
        '200':
          description: Updated subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SubscriptionRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/subscriptions/delete:
    post:
      x-capability: subscribeSignalsAcl:WRITE
      tags:
      - Signals
      summary: Delete subscriptions
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:WRITE`


        Delete one or more subscriptions by their external IDs.

        '
      operationId: deleteSignalSubscriptions
      requestBody:
        description: Subscriptions to delete.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Items_DeleteSubscriptions'
      responses:
        '200':
          $ref: '#/components/responses/EmptyResponse'
          description: Empty response
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/list:
    post:
      x-capability: subscribeSignalsAcl:READ
      tags:
      - Signals
      summary: List signals.
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:READ`


        List all signals for a sink.'
      operationId: listSignals
      requestBody:
        description: Filter for signals to list.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalsFilter'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_SignalRead_WithCursor'
          description: A list of signals available for the sink.
        '400':
          $ref: '#/components/responses/400ErrorResponse'
        '422':
          $ref: '#/components/responses/ErrorResponse'
          description: Validation Error
  /processes/signals/topics:
    get:
      x-capability: subscribeSignalsAcl:READ
      tags:
      - Signals
      summary: List topics
      description: '


        > **Required capabilities:** `subscribeSignalsAcl:READ`


        List all topics supported by the signals service. Each topic represents a type of CDF resource that can emit signals, such as integrations or workflows. The response includes the available notification categories for each topic, which can be used when creating subscriptions.

        '
      operationId: listSignalTopics
      responses:
        '200':
          description: List of supported topics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items_TopicRead'
        '400':
          $ref: '#/components/responses/400ErrorResponse'
components:
  schemas:
    Items_SubscriptionRead:
      type: object
      required:
      - items
      title: SubscriptionReadList
      properties:
        items:
          type: array
          title: Items
          minItems: 0
          maxItems: 100
          items:
            $ref: '#/components/schemas/SubscriptionRead'
    SignalSeverity:
      type: string
      description: The severity level of the signal.
      enum:
      - info
      - warning
      - error
    UpdateHostedExtractorsSubscriptionFilter:
      type: object
      title: UpdateHostedExtractorsSubscriptionFilter
      allOf:
      - $ref: '#/components/schemas/SubscriptionFilterUpdate'
      - $ref: '#/components/schemas/HostedExtractorFilterProperties'
    UserSinkWrite:
      type: object
      title: UserSinkWrite
      description: Request to create a user sink. The external ID of the sink must match a user in the user profiles API.
      required:
      - type
      - externalId
      properties:
        type:
          enum:
          - user
          title: Type
          type: string
          description: Sink type.
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
    CogniteExternalId:
      description: The external ID provided by the client. Must be unique for the resource type.
      type: string
      maxLength: 255
      example: my.known.id
    SinkUpdateItem:
      discriminator:
        mapping:
          email: '#/components/schemas/EmailSinkUpdateItem'
          user: '#/components/schemas/UserSinkUpdateItem'
          current_user: '#/components/schemas/CurrentUserSinkUpdateItem'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/EmailSinkUpdateItem'
      - $ref: '#/components/schemas/UserSinkUpdateItem'
      - $ref: '#/components/schemas/CurrentUserSinkUpdateItem'
    FilterHostedExtractorsSubscriptions:
      allOf:
      - $ref: '#/components/schemas/FilterSubscriptionsBase'
      title: FilterHostedExtractorsSubscriptions
      required:
      - topic
      properties:
        topic:
          type: string
          enum:
          - cognite_hosted_extractors
          description: Topic name.
        metadata:
          type: object
          description: Filter on signal metadata specific to hosted extractors.
          properties: {}
    CurrentUserSinkId:
      type: object
      required:
      - externalId
      - type
      title: CurrentUserSinkId
      properties:
        type:
          enum:
          - current_user
          title: Type
          type: string
          description: Sink type.
    EmailSinkUpdateItem:
      type: object
      title: EmailSinkUpdateItem
      description: Update an e-mail sink.
      required:
      - externalId
      - update
      - type
      properties:
        type:
          enum:
          - email
          title: Type
          type: string
          description: Sink type.
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
        update:
          $ref: '#/components/schemas/EmailSinkUpdate'
    SubscriptionFilter:
      description: 'Filter used to select which signals will be received by a subscription. Omitted fields are ignored when filtering, allowing signals with any value in that field.

        '
      discriminator:
        mapping:
          cognite_integrations: '#/components/schemas/IntegrationsSubscriptionFilter'
          cognite_workflows: '#/components/schemas/WorkflowsSubscriptionFilter'
          cognite_hosted_extractors: '#/components/schemas/HostedExtractorsSubscriptionFilter'
        propertyName: topic
      oneOf:
      - $ref: '#/components/schemas/IntegrationsSubscriptionFilter'
      - $ref: '#/components/schemas/WorkflowsSubscriptionFilter'
      - $ref: '#/components/schemas/HostedExtractorsSubscriptionFilter'
    Items_SignalRead_WithCursor:
      type: object
      title: Items_NotificationRead_WithCursor
      description: List of signals.
      required:
      - items
      properties:
        items:
          type: array
          title: Items
          maxItems: 1000
          items:
            $ref: '#/components/schemas/SignalsNotificationRead'
        nextCursor:
          type: string
          title: NextCursor
          description: 'Cursor for retrieving the next page of results. Omitted if there are no more results.

            '
    Items_SubscriptionRead_WithCursor:
      type: object
      required:
      - items
      title: SubscriptionReadList
      properties:
        items:
          type: array
          title: Items
          minItems: 0
          maxItems: 100
          items:
            $ref: '#/components/schemas/SubscriptionRead'
        nextCursor:
          type: string
          title: NextCursor
          description: Cursor for retrieving the next page of results. Omitted if there are no more results.
    Items_RetrieveSinks:
      type: object
      required:
      - items
      title: RetrieveSinksList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/RefSinkId'
        ignoreUnknownIds:
          type: boolean
          title: IgnoreUnknownIds
          description: 'Ignore external IDs that are not found

            '
          default: false
    Error:
      type: object
      required:
      - code
      - message
      description: Cognite API error.
      properties:
        code:
          type: integer
          description: HTTP status code.
          format: int32
          example: 401
        message:
          type: string
          description: Error message.
          example: Could not authenticate.
        missing:
          type: array
          description: List of lookup objects that do not match any results.
          items:
            type: object
            additionalProperties: true
        duplicated:
          type: array
          description: List of objects that are not unique.
          items:
            type: object
            additionalProperties: true
    IntegrationsSubscriptionFilter:
      type: object
      title: IntegrationsSubscriptionFilter
      allOf:
      - $ref: '#/components/schemas/SubscriptionFilterUpdate'
      required:
      - topic
      properties:
        topic:
          type: string
          enum:
          - cognite_integrations
          description: Topic name.
        extractorExternalId:
          type: string
          minLength: 1
          maxLength: 255
          description: Filter signals to only include those from integrations with the specified extractor external ID.
        extractorVersion:
          type: string
          minLength: 1
          maxLength: 32
          description: Filter signals to only include those from integrations with the specified extractor version.
    EmailSinkUpdate:
      type: object
      title: EmailSinkUpdate
      description: Update request for an email sink.
      properties:
        emailAddress:
          type: object
          properties:
            set:
              type: string
              title: EmailAddress
              description: The e-mail address to send signals to.
              minLength: 3
              maxLength: 255
          required:
          - set
          description: Set the e-mail address of the sink.
    EmailSinkWrite:
      type: object
      title: EmailSinkWrite
      description: Request to create an e-mail sink.
      required:
      - type
      - externalId
      - emailAddress
      properties:
        type:
          enum:
          - email
          title: Type
          type: string
          description: Sink type.
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
        emailAddress:
          type: string
          title: EmailAddress
          description: The e-mail address to send signals to.
          minLength: 3
          maxLength: 255
    Items_UpdateSubscriptions:
      type: object
      required:
      - items
      title: UpdateSubscriptionsList
      description: List of subscription updates.
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/SubscriptionUpdateItem'
    SupportedTopics:
      type: string
      enum:
      - cognite_integrations
      - cognite_workflows
      - cognite_hosted_extractors
      description: Topics supported by the service.
    UpdateIntegrationsSubscriptionFilter:
      type: object
      title: UpdateIntegrationsSubscriptionFilter
      allOf:
      - $ref: '#/components/schemas/SubscriptionFilterUpdate'
      properties:
        extractorExternalId:
          type: string
          minLength: 1
          maxLength: 255
          description: Filter signals to only include those from integrations with the specified extractor external ID.
        extractorVersion:
          type: string
          minLength: 1
          maxLength: 32
          description: Filter signals to only include those from integrations with the specified extractor version.
    Items_SinkRead:
      type: object
      required:
      - items
      title: SinkReadList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/SinkRead'
    IntegrationSignalMetadata:
      type: object
      title: IntegrationSignalMetadata
      description: Metadata specific to integration signals.
      properties:
        extractorExternalId:
          type: string
          minLength: 1
          maxLength: 255
          description: External ID of the extractor the integration manages.
        extractorVersion:
          type: string
          minLength: 1
          maxLength: 32
          description: Version of the extractor the integration manages.
    SinkWrite:
      discriminator:
        mapping:
          email: '#/components/schemas/EmailSinkWrite'
          user: '#/components/schemas/UserSinkWrite'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/EmailSinkWrite'
      - $ref: '#/components/schemas/UserSinkWrite'
    SubscriptionUpdateItem:
      type: object
      title: SubscriptionUpdateItem
      description: Update an existing subscription.
      required:
      - externalId
      - update
      properties:
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
        update:
          type: object
          title: SubscriptionUpdate
          properties:
            filter:
              type: object
              title: SetSubscriptionFilter
              description: Set a new subscription filter. The filter must match the topic of the existing subscription.
              properties:
                set:
                  oneOf:
                  - $ref: '#/components/schemas/UpdateIntegrationsSubscriptionFilter'
                  - $ref: '#/components/schemas/UpdateWorkflowsSubscriptionFilter'
                  - $ref: '#/components/schemas/UpdateHostedExtractorsSubscriptionFilter'
    Items_DeleteSubscriptions:
      type: object
      required:
      - items
      title: DeleteSubscriptionsList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            type: object
            required:
            - externalId
            properties:
              externalId:
                $ref: '#/components/schemas/CogniteExternalId'
        ignoreUnknownIds:
          type: boolean
          title: IgnoreUnknownIds
          description: 'Ignore external IDs that are not found

            '
          default: false
    Items_SinkRead_WithCursor:
      type: object
      required:
      - items
      title: SinkReadList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/SinkRead'
        nextCursor:
          type: string
          title: NextCursor
          description: Cursor for retrieving the next page of results. Omitted if there are no more results.
    EmailSink:
      type: object
      title: EmailSinkWrite
      description: Description of an e-mail sink.
      required:
      - type
      - externalId
      - emailAddress
      - createdTime
      - lastUpdatedTime
      properties:
        type:
          enum:
          - email
          title: Type
          type: string
          description: Sink type.
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
        emailAddress:
          type: string
          title: EmailAddress
          description: The e-mail address to send signals to.
          minLength: 3
          maxLength: 255
        createdTime:
          $ref: '#/components/schemas/EpochTimestamp'
        lastUpdatedTime:
          $ref: '#/components/schemas/EpochTimestamp'
    EpochTimestamp:
      description: The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.
      type: integer
      minimum: 0
      format: int64
      example: 1730204346000
    WorkflowSignalMetadata:
      type: object
      title: WorkflowSignalMetadata
      description: Metadata specific to workflow signals.
      properties: {}
    Items_SinkWrite:
      type: object
      required:
      - items
      title: SinkWriteList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/SinkWrite'
    SinkRead:
      discriminator:
        mapping:
          email: '#/components/schemas/EmailSink'
          user: '#/components/schemas/UserSink'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/EmailSink'
      - $ref: '#/components/schemas/UserSink'
    CurrentUserSinkUpdateItem:
      type: object
      title: CurrentUserSinkUpdateItem
      description: Update the sink for the user making the request.
      required:
      - externalId
      - update
      - type
      properties:
        type:
          enum:
          - current_user
          title: Type
          type: string
          description: Sink type.
        update:
          $ref: '#/components/schemas/UserSinkUpdate'
    UserSinkId:
      type: object
      required:
      - externalId
      - type
      title: UserSinkId
      properties:
        type:
          enum:
          - user
          title: Type
          type: string
          description: Sink type.
        externalId:
          $ref: '#/components/schemas/CogniteExternalId'
    Items_DeleteSinks:
      type: object
      required:
      - items
      title: DeleteSinksList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/ConcreteSinkId'
        ignoreUnknownIds:
          type: boolean
          title: IgnoreUnknownIds
          description: 'Ignore external IDs that are not found

            '
          default: false
    Items_SubscriptionWrite:
      type: object
      required:
      - items
      title: SubscriptionWriteList
      properties:
        items:
          type: array
          title: Items
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/SubscriptionWrite'
    UserSinkUpdateItem:
      type: object
      title: UserSinkUpdateItem
      description: Update a user sink.
      required:
      - externalId
      - update
      - type
 

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