# Streaming session service

Provides read access to streaming sessions and their sources.

OpenAPI file: [`nominal.ingest.v2.json`](https://dev.nominal.io/api/_downloads/064305915dc637b34369651e3e33dd72/nominal.ingest.v2.json)

## Endpoints

### Search streaming sessions

POST `/ingest/v2/streaming-sessions/search`

Searches streaming sessions visible to the caller.

Body

`pageSize` integer
:   Defaults to 100. From 1 to 1,000.

`pageToken` string
:   At most 4,096 characters.

`filter` [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter)
:   Absent matches every session visible to the caller. The filter tree may contain at most 1000 nodes and 32 levels of nesting.

    Fields of `StreamingSessionSearchFilter`

    one of 7 fields required
    :   ​

        **datasetRids**

        `datasetRids` [`StreamingDatasetRidsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingdatasetridsfilter)
        :   ​

            Fields of `StreamingDatasetRidsFilter`

            `datasetRids` array of string
            :   At most 1,000 items. No duplicates. Each item: at most 1,024 characters.

        **source**

        `source` [`ExactStreamingSourceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#exactstreamingsourcefilter)
        :   ​

            Fields of `ExactStreamingSourceFilter`

            `datasetRid` string required
            :   At most 1,024 characters.

            `source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
            :   ​

                Fields of `StreamingSourceAttribution`

                one of `mesh`, `dataConnector`, `custom` required
                :   ​

                    **mesh**

                    `mesh` [`MeshSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#meshsourceattribution)
                    :   ​

                        Fields of `MeshSourceAttribution`

                        `sourceDatasetRid` string required
                        :   At most 1,024 characters.

                        `sourceOrgRid` string required
                        :   At most 1,024 characters.

                        `originSourceLabel` string
                        :   Label for this data’s source on the originating deployment, as that deployment reported it. Opaque: Nominal stores and returns it without interpreting it. It is part of the session’s identity, so writes carrying different labels resolve to different sessions. 1 to 1,024 characters.

                    **dataConnector**

                    `dataConnector` [`DataConnectorSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#dataconnectorsourceattribution)
                    :   ​

                        Fields of `DataConnectorSourceAttribution`

                        `dataConnectorRid` string required
                        :   At most 1,024 characters.

                    **custom**

                    `custom` [`CustomSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#customsourceattribution)
                    :   ​

                        Fields of `CustomSourceAttribution`

                        `sourceName` string
                        :   1 to 1,024 characters.

        **dataBoundsOverlap**

        `dataBoundsOverlap` [`StreamingSessionDataBoundsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessiondataboundsfilter)
        :   ​

            Fields of `StreamingSessionDataBoundsFilter`

            `start` string (date-time)
            :   ​

            `end` string (date-time)
            :   ​

        **workspace**

        `workspace` [`StreamingWorkspaceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingworkspacefilter)
        :   ​

            Fields of `StreamingWorkspaceFilter`

            `workspaceRid` string required
            :   At most 1,024 characters.

        **and**

        `and` [`StreamingSessionAndFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionandfilter)
        :   ​

            Fields of `StreamingSessionAndFilter`

            `filters` array of [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter)
            :   1 to 100 items.

        **or**

        `or` [`StreamingSessionOrFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionorfilter)
        :   ​

            Fields of `StreamingSessionOrFilter`

            `filters` array of [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter)
            :   1 to 100 items.

        **not**

        `not` [`StreamingSessionNotFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionnotfilter)
        :   ​

            Fields of `StreamingSessionNotFilter`

            `filter` [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter) required
            :   ​

`sort` [`StreamingSessionSortOptions`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsortoptions)
:   Defaults to `created_at` descending.

    Fields of `StreamingSessionSortOptions`

    `field` [`StreamingSessionSortField`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsortfield)
    :   ​

        Values of `StreamingSessionSortField`

        `STREAMING_SESSION_SORT_FIELD_UNSPECIFIED`
        :   ​

        `STREAMING_SESSION_SORT_FIELD_CREATED_AT`
        :   Orders by the time the session was created.

        `STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START`
        :   Orders by the start of the session’s data bounds. Sessions with no data bounds are excluded from the results.

    `isDescending` boolean
    :   ​

Response

`streamingSessions` array of [`StreamingSession`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsession)
:   ​

    Fields of `StreamingSession`

    `streamingSessionRid` string
    :   ​

    `datasetRid` string
    :   ​

    `status` [`StreamingSessionStatus`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionstatus)
    :   ​

        Values of `StreamingSessionStatus`

        `STREAMING_SESSION_STATUS_UNSPECIFIED`
        :   ​

        `STREAMING_SESSION_STATUS_IN_PROGRESS`
        :   The session accepts heartbeats.

        `STREAMING_SESSION_STATUS_COMPLETED`
        :   The server completed the session once it had recorded a minimum number of points and either stopped receiving heartbeats or reached its maximum age. A completed session accepts no further heartbeats; resolving the same source starts a new session.

    `source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
    :   Absent for unattributed sessions.

        Fields of `StreamingSourceAttribution`

        one of `mesh`, `dataConnector`, `custom`
        :   ​

            **mesh**

            `mesh` [`MeshSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#meshsourceattribution)
            :   ​

                Fields of `MeshSourceAttribution`

                `sourceDatasetRid` string
                :   At most 1,024 characters.

                `sourceOrgRid` string
                :   At most 1,024 characters.

                `originSourceLabel` string
                :   Label for this data’s source on the originating deployment, as that deployment reported it. Opaque: Nominal stores and returns it without interpreting it. It is part of the session’s identity, so writes carrying different labels resolve to different sessions. 1 to 1,024 characters.

            **dataConnector**

            `dataConnector` [`DataConnectorSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#dataconnectorsourceattribution)
            :   ​

                Fields of `DataConnectorSourceAttribution`

                `dataConnectorRid` string
                :   At most 1,024 characters.

            **custom**

            `custom` [`CustomSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#customsourceattribution)
            :   ​

                Fields of `CustomSourceAttribution`

                `sourceName` string
                :   1 to 1,024 characters.

    `dataBounds` [`TimeRange`](https://dev.nominal.io/api/rest/streaming-session-service.md#timerange)
    :   The time range of the data ingested so far. Absent until the first points are recorded.

        Fields of `TimeRange`

        `start` string (date-time)
        :   ​

        `end` string (date-time)
        :   ​

    `pointsCount` string (int64)
    :   ​

    `createdAt` string (date-time)
    :   ​

    `lastSeenAt` string (date-time)
    :   Time of the most recent heartbeat for this session.

    `completedAt` string (date-time)
    :   Time the session was completed. Absent while the session is in progress.

`nextPageToken` string
:   ​

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/ingest/v2/streaming-sessions/search" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "pageSize": 1,
  "pageToken": "<page token>",
  "filter": {
    "datasetRids": {
      "datasetRids": [
        "<dataset rids>"
      ]
    }
  },
  "sort": {
    "field": "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
    "isDescending": true
  }
}'
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/ingest/v2/streaming-sessions/search",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "pageSize": 1,
        "pageToken": "<page token>",
        "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
        "sort": {
            "field": "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
            "isDescending": True,
        },
    },
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/ingest/v2/streaming-sessions/search",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "pageSize": 1,
        "pageToken": "<page token>",
        "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
        "sort": {
            "field": "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
            "isDescending": True,
        },
    },
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/ingest/v2/streaming-sessions/search",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "pageSize": 1,
                "pageToken": "<page token>",
                "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
                "sort": {
                    "field": "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
                    "isDescending": True,
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "streamingSessions": [
    {
      "streamingSessionRid": "<streaming session rid>",
      "datasetRid": "<dataset rid>",
      "status": "STREAMING_SESSION_STATUS_IN_PROGRESS",
      "source": {
        "mesh": {
          "sourceDatasetRid": "<source dataset rid>",
          "sourceOrgRid": "<source org rid>",
          "originSourceLabel": "<origin source label>"
        }
      },
      "dataBounds": {
        "start": "2026-01-01T00:00:00Z",
        "end": "2026-01-01T00:00:00Z"
      },
      "pointsCount": "1",
      "createdAt": "2026-01-01T00:00:00Z",
      "lastSeenAt": "2026-01-01T00:00:00Z",
      "completedAt": "2026-01-01T00:00:00Z"
    }
  ],
  "nextPageToken": "<next page token>"
}
```

### Search streaming sources

POST `/ingest/v2/streaming-sources/search`

Searches streaming sources visible to the caller, aggregated by (source, dataset) and ordered by latest activity descending.

Body

`pageSize` integer
:   Defaults to 100. From 1 to 1,000.

`pageToken` string
:   At most 4,096 characters.

`filter` [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter)
:   Absent matches every source visible to the caller. The filter tree may contain at most 1000 nodes and 32 levels of nesting.

    Fields of `StreamingSourceSearchFilter`

    one of 6 fields required
    :   ​

        **datasetRids**

        `datasetRids` [`StreamingDatasetRidsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingdatasetridsfilter)
        :   ​

            Fields of `StreamingDatasetRidsFilter`

            `datasetRids` array of string
            :   At most 1,000 items. No duplicates. Each item: at most 1,024 characters.

        **source**

        `source` [`ExactStreamingSourceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#exactstreamingsourcefilter)
        :   ​

            Fields of `ExactStreamingSourceFilter`

            `datasetRid` string required
            :   At most 1,024 characters.

            `source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
            :   ​

                Fields of `StreamingSourceAttribution`

                one of `mesh`, `dataConnector`, `custom` required
                :   ​

                    **mesh**

                    `mesh` [`MeshSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#meshsourceattribution)
                    :   ​

                        Fields of `MeshSourceAttribution`

                        `sourceDatasetRid` string required
                        :   At most 1,024 characters.

                        `sourceOrgRid` string required
                        :   At most 1,024 characters.

                        `originSourceLabel` string
                        :   Label for this data’s source on the originating deployment, as that deployment reported it. Opaque: Nominal stores and returns it without interpreting it. It is part of the session’s identity, so writes carrying different labels resolve to different sessions. 1 to 1,024 characters.

                    **dataConnector**

                    `dataConnector` [`DataConnectorSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#dataconnectorsourceattribution)
                    :   ​

                        Fields of `DataConnectorSourceAttribution`

                        `dataConnectorRid` string required
                        :   At most 1,024 characters.

                    **custom**

                    `custom` [`CustomSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#customsourceattribution)
                    :   ​

                        Fields of `CustomSourceAttribution`

                        `sourceName` string
                        :   1 to 1,024 characters.

        **workspace**

        `workspace` [`StreamingWorkspaceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingworkspacefilter)
        :   ​

            Fields of `StreamingWorkspaceFilter`

            `workspaceRid` string required
            :   At most 1,024 characters.

        **and**

        `and` [`StreamingSourceAndFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceandfilter)
        :   ​

            Fields of `StreamingSourceAndFilter`

            `filters` array of [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter)
            :   1 to 100 items.

        **or**

        `or` [`StreamingSourceOrFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceorfilter)
        :   ​

            Fields of `StreamingSourceOrFilter`

            `filters` array of [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter)
            :   1 to 100 items.

        **not**

        `not` [`StreamingSourceNotFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcenotfilter)
        :   ​

            Fields of `StreamingSourceNotFilter`

            `filter` [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter) required
            :   ​

`lastSeenAfter` string (date-time)
:   If present, only sessions last seen strictly after this instant are aggregated; groups whose sessions were all last seen at or before it are omitted.

Response

`streamingSources` array of [`StreamingSource`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsource)
:   ​

    Fields of `StreamingSource`

    `source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
    :   Absent for unattributed sessions.

        Fields of `StreamingSourceAttribution`

        one of `mesh`, `dataConnector`, `custom`
        :   ​

            **mesh**

            `mesh` [`MeshSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#meshsourceattribution)
            :   ​

                Fields of `MeshSourceAttribution`

                `sourceDatasetRid` string
                :   At most 1,024 characters.

                `sourceOrgRid` string
                :   At most 1,024 characters.

                `originSourceLabel` string
                :   Label for this data’s source on the originating deployment, as that deployment reported it. Opaque: Nominal stores and returns it without interpreting it. It is part of the session’s identity, so writes carrying different labels resolve to different sessions. 1 to 1,024 characters.

            **dataConnector**

            `dataConnector` [`DataConnectorSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#dataconnectorsourceattribution)
            :   ​

                Fields of `DataConnectorSourceAttribution`

                `dataConnectorRid` string
                :   At most 1,024 characters.

            **custom**

            `custom` [`CustomSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#customsourceattribution)
            :   ​

                Fields of `CustomSourceAttribution`

                `sourceName` string
                :   1 to 1,024 characters.

    `datasetRid` string
    :   ​

    `sessionCount` string (int64)
    :   Number of sessions aggregated into this group.

    `totalPointsCount` string (int64)
    :   Sum of the points counts across the aggregated sessions.

    `earliestCreatedAt` string (date-time)
    :   Creation time of the oldest aggregated session.

    `latestLastSeenAt` string (date-time)
    :   Most recent heartbeat time across the aggregated sessions.

    `mergedDataBounds` [`TimeRange`](https://dev.nominal.io/api/rest/streaming-session-service.md#timerange)
    :   Union of the data bounds across the aggregated sessions, if any session has data bounds.

        Fields of `TimeRange`

        `start` string (date-time)
        :   ​

        `end` string (date-time)
        :   ​

    `anyInProgress` boolean
    :   True if at least one aggregated session is in progress.

`nextPageToken` string
:   ​

Request

**curl**

```shell
curl -X POST "https://api.gov.nominal.io/api/ingest/v2/streaming-sources/search" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "pageSize": 1,
  "pageToken": "<page token>",
  "filter": {
    "datasetRids": {
      "datasetRids": [
        "<dataset rids>"
      ]
    }
  },
  "lastSeenAfter": "2026-01-01T00:00:00Z"
}'
```

**requests**

```python
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/ingest/v2/streaming-sources/search",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "pageSize": 1,
        "pageToken": "<page token>",
        "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
        "lastSeenAfter": "2026-01-01T00:00:00Z",
    },
)
response.raise_for_status()
print(response.json())
```

**httpx**

```python
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/ingest/v2/streaming-sources/search",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "pageSize": 1,
        "pageToken": "<page token>",
        "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
        "lastSeenAfter": "2026-01-01T00:00:00Z",
    },
)
response.raise_for_status()
print(response.json())
```

**aiohttp**

```python
import asyncio

import aiohttp

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/ingest/v2/streaming-sources/search",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "pageSize": 1,
                "pageToken": "<page token>",
                "filter": {"datasetRids": {"datasetRids": ["<dataset rids>"]}},
                "lastSeenAfter": "2026-01-01T00:00:00Z",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())

asyncio.run(main())
```

Response: `200`

```json
{
  "streamingSources": [
    {
      "source": {
        "mesh": {
          "sourceDatasetRid": "<source dataset rid>",
          "sourceOrgRid": "<source org rid>",
          "originSourceLabel": "<origin source label>"
        }
      },
      "datasetRid": "<dataset rid>",
      "sessionCount": "1",
      "totalPointsCount": "1",
      "earliestCreatedAt": "2026-01-01T00:00:00Z",
      "latestLastSeenAt": "2026-01-01T00:00:00Z",
      "mergedDataBounds": {
        "start": "2026-01-01T00:00:00Z",
        "end": "2026-01-01T00:00:00Z"
      },
      "anyInProgress": true
    }
  ],
  "nextPageToken": "<next page token>"
}
```

## Errors

[Errors](https://dev.nominal.io/api.md#errors) shows how these errors are sent.

Each error’s `errorName` is `NominalIngestV2:` followed by its name below.

| Status | Name | Notes |
| --- | --- | --- |
| 400 | `StreamingSessionErrorFilterTooComplex` | A streaming search filter may contain at most 1000 nodes and 32 nested levels. |

## Types

### CustomSourceAttribution

A caller-named streaming source.

`sourceName` string
:   1 to 1,024 characters.

### DataConnectorSourceAttribution

A streaming source fed by a data connector.

`dataConnectorRid` string required
:   At most 1,024 characters.

### ExactStreamingSourceFilter

Matches a single streaming source: the sessions on `dataset_rid` with exactly the given `source` attribution. An absent `source` matches only unattributed sessions, not every source.

`datasetRid` string required
:   At most 1,024 characters.

`source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
:   ​

### MeshSourceAttribution

A streaming source replicated from a dataset in another organization over mesh.

`sourceDatasetRid` string required
:   At most 1,024 characters.

`sourceOrgRid` string required
:   At most 1,024 characters.

`originSourceLabel` string
:   Label for this data’s source on the originating deployment, as that deployment reported it. Opaque: Nominal stores and returns it without interpreting it. It is part of the session’s identity, so writes carrying different labels resolve to different sessions. 1 to 1,024 characters.

### StreamingDatasetRidsFilter

Matches the given datasets. An empty list matches every dataset.

`datasetRids` array of string
:   At most 1,000 items. No duplicates. Each item: at most 1,024 characters.

### StreamingSession

A streaming ingest session on a dataset.

`streamingSessionRid` string required
:   ​

`datasetRid` string required
:   ​

`status` [`StreamingSessionStatus`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionstatus) required
:   ​

`source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
:   Absent for unattributed sessions.

`dataBounds` [`TimeRange`](https://dev.nominal.io/api/rest/streaming-session-service.md#timerange)
:   The time range of the data ingested so far. Absent until the first points are recorded.

`pointsCount` string (int64)
:   ​

`createdAt` string (date-time) required
:   ​

`lastSeenAt` string (date-time) required
:   Time of the most recent heartbeat for this session.

`completedAt` string (date-time)
:   Time the session was completed. Absent while the session is in progress.

### StreamingSessionAndFilter

Matches when every child filter matches.

`filters` array of [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter)
:   1 to 100 items.

### StreamingSessionDataBoundsFilter

Matches sessions whose data bounds overlap this window. Sessions with no data bounds do not match. If both ends are present, `start` must not be after `end`.

`start` string (date-time)
:   ​

`end` string (date-time)
:   ​

### StreamingSessionNotFilter

Matches when the child filter does not.

`filter` [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter) required
:   ​

### StreamingSessionOrFilter

Matches when any child filter matches.

`filters` array of [`StreamingSessionSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsearchfilter)
:   1 to 100 items.

### StreamingSessionSearchFilter

Filter for streaming-session search.

Set exactly one of the fields below.

one of 7 fields required
:   ​

    **datasetRids**

    `datasetRids` [`StreamingDatasetRidsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingdatasetridsfilter)
    :   ​

    **source**

    `source` [`ExactStreamingSourceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#exactstreamingsourcefilter)
    :   ​

    **dataBoundsOverlap**

    `dataBoundsOverlap` [`StreamingSessionDataBoundsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessiondataboundsfilter)
    :   ​

    **workspace**

    `workspace` [`StreamingWorkspaceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingworkspacefilter)
    :   ​

    **and**

    `and` [`StreamingSessionAndFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionandfilter)
    :   ​

    **or**

    `or` [`StreamingSessionOrFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionorfilter)
    :   ​

    **not**

    `not` [`StreamingSessionNotFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionnotfilter)
    :   ​

### StreamingSessionSortField

`STREAMING_SESSION_SORT_FIELD_UNSPECIFIED`
:   ​

`STREAMING_SESSION_SORT_FIELD_CREATED_AT`
:   Orders by the time the session was created.

`STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START`
:   Orders by the start of the session’s data bounds. Sessions with no data bounds are excluded from the results.

### StreamingSessionSortOptions

`field` [`StreamingSessionSortField`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsessionsortfield)
:   ​

`isDescending` boolean
:   ​

### StreamingSessionStatus

`STREAMING_SESSION_STATUS_UNSPECIFIED`
:   ​

`STREAMING_SESSION_STATUS_IN_PROGRESS`
:   The session accepts heartbeats.

`STREAMING_SESSION_STATUS_COMPLETED`
:   The server completed the session once it had recorded a minimum number of points and either stopped receiving heartbeats or reached its maximum age. A completed session accepts no further heartbeats; resolving the same source starts a new session.

### StreamingSource

Aggregate view of the streaming sessions sharing a single (source, dataset) pair.

`source` [`StreamingSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceattribution)
:   Absent for unattributed sessions.

`datasetRid` string required
:   ​

`sessionCount` string (int64)
:   Number of sessions aggregated into this group.

`totalPointsCount` string (int64)
:   Sum of the points counts across the aggregated sessions.

`earliestCreatedAt` string (date-time) required
:   Creation time of the oldest aggregated session.

`latestLastSeenAt` string (date-time) required
:   Most recent heartbeat time across the aggregated sessions.

`mergedDataBounds` [`TimeRange`](https://dev.nominal.io/api/rest/streaming-session-service.md#timerange)
:   Union of the data bounds across the aggregated sessions, if any session has data bounds.

`anyInProgress` boolean
:   True if at least one aggregated session is in progress.

### StreamingSourceAndFilter

Matches when every child filter matches.

`filters` array of [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter)
:   1 to 100 items.

### StreamingSourceAttribution

Where a streaming session’s data comes from.

Set exactly one of the fields below.

one of `mesh`, `dataConnector`, `custom` required
:   ​

    **mesh**

    `mesh` [`MeshSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#meshsourceattribution)
    :   ​

    **dataConnector**

    `dataConnector` [`DataConnectorSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#dataconnectorsourceattribution)
    :   ​

    **custom**

    `custom` [`CustomSourceAttribution`](https://dev.nominal.io/api/rest/streaming-session-service.md#customsourceattribution)
    :   ​

### StreamingSourceNotFilter

Matches when the child filter does not.

`filter` [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter) required
:   ​

### StreamingSourceOrFilter

Matches when any child filter matches.

`filters` array of [`StreamingSourceSearchFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcesearchfilter)
:   1 to 100 items.

### StreamingSourceSearchFilter

Filter for streaming-source search.

Set exactly one of the fields below.

one of 6 fields required
:   ​

    **datasetRids**

    `datasetRids` [`StreamingDatasetRidsFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingdatasetridsfilter)
    :   ​

    **source**

    `source` [`ExactStreamingSourceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#exactstreamingsourcefilter)
    :   ​

    **workspace**

    `workspace` [`StreamingWorkspaceFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingworkspacefilter)
    :   ​

    **and**

    `and` [`StreamingSourceAndFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceandfilter)
    :   ​

    **or**

    `or` [`StreamingSourceOrFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourceorfilter)
    :   ​

    **not**

    `not` [`StreamingSourceNotFilter`](https://dev.nominal.io/api/rest/streaming-session-service.md#streamingsourcenotfilter)
    :   ​

### StreamingWorkspaceFilter

Matches sessions or sources whose dataset belongs to the workspace.

`workspaceRid` string required
:   At most 1,024 characters.

### TimeRange

A closed time range.

start must not be after end.

`start` string (date-time) required
:   ​

`end` string (date-time) required
:   ​

Page design based on [Scalar](https://scalar.com), MIT License.
