# <a id="bitdrift.public.unary.timeline.v1.TimelineService"></a>TimelineService

**Source definition:** [`src/bitdrift/public/unary/timeline/v1/api.proto#L17-L48`](<https://github.com/bitdriftlabs/api/blob/main/src/bitdrift/public/unary/timeline/v1/api.proto#L17-L48>)

Provides access to session timeline data, including logs, metadata, and hydration state.

### <a id="AdvancedSearchSession"></a>AdvancedSearchSession

Performs an advanced search across logs in a session.

 Supports filtering by field values, log types, log levels, and full-text
 content using a flexible query model with AND/OR logic.

 Returns the gRPC NOT_FOUND status if the session has not been hydrated yet.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">SessionAdvancedSearchRequest</i>](bitdrift_public_unary_timeline_v1_SessionAdvancedSearchRequest.md "bitdrift.public.unary.timeline.v1.SessionAdvancedSearchRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">SessionAdvancedSearchResponse</i>](bitdrift_public_unary_timeline_v1_SessionAdvancedSearchResponse.md "bitdrift.public.unary.timeline.v1.SessionAdvancedSearchResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.timeline.v1.TimelineService/AdvancedSearchSession`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "end_time": "2024-01-15T09:30:00Z",
  "include_internal_logs": true,
  "limit": 25,
  "offset": 0,
  "or_query": [
    {
      "conditions": [
        {
          "field_match": {
            "json_path": "$.fields.os_version",
            "operator": "EQUAL",
            "value": "14.0"
          }
        }
      ]
    }
  ],
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "start_time": "2024-01-15T09:30:00Z"
}
```

<p class="h4">Example Response</p>
```json
{
  "results": [
    {
      "log": {
        "fields": {
          "fields": {
            "key": {
              "string_data": ""
            }
          }
        },
        "listener_ids": [
          "abc-123-def"
        ],
        "log_level": "DEBUG",
        "log_type": "REPLAY",
        "message": "Example text",
        "timestamp": "2024-01-15T09:30:00Z"
      },
      "matches": [
        {
          "fields_json_path": "$.fields.os_version"
        }
      ],
      "row_number": 5
    }
  ],
  "total_pages": 3,
  "total_results": 42
}
```

### <a id="GetHydrationStatus"></a>GetHydrationStatus

Retrieves the hydration status of a session.

 Returns the gRPC NOT_FOUND status if hydration has not been triggered for the
 session yet.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetHydrationStatusRequest</i>](bitdrift_public_unary_timeline_v1_GetHydrationStatusRequest.md "bitdrift.public.unary.timeline.v1.GetHydrationStatusRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetHydrationStatusResponse</i>](bitdrift_public_unary_timeline_v1_GetHydrationStatusResponse.md "bitdrift.public.unary.timeline.v1.GetHydrationStatusResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.timeline.v1.TimelineService/GetHydrationStatus`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

<p class="h4">Example Response</p>
```json
{
  "status": {
    "created_at": "2024-01-15T09:30:00Z",
    "expiration_time": "2024-01-15T09:30:00Z",
    "finished_at": "2024-01-15T09:30:00Z",
    "hydration_status": "HYDRATING",
    "incremental": false,
    "started_at": "2024-01-15T09:30:00Z"
  }
}
```

### <a id="GetSessionInfo"></a>GetSessionInfo

Retrieves metadata and attributes for a session.

 Returns the gRPC NOT_FOUND status if the session has not been hydrated yet.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetSessionInfoRequest</i>](bitdrift_public_unary_timeline_v1_GetSessionInfoRequest.md "bitdrift.public.unary.timeline.v1.GetSessionInfoRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetSessionInfoResponse</i>](bitdrift_public_unary_timeline_v1_GetSessionInfoResponse.md "bitdrift.public.unary.timeline.v1.GetSessionInfoResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.timeline.v1.TimelineService/GetSessionInfo`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

<p class="h4">Example Response</p>
```json
{
  "device_id": "device-123",
  "device_model": "iPhone15,2",
  "end_time": "2024-01-15T09:30:00Z",
  "os": "iOS",
  "os_version": "17.4.1",
  "platform": {
    "apple": {
      "apps": [
        {
          "app_id": "com.example.app"
        }
      ]
    }
  },
  "start_time": "2024-01-15T09:30:00Z",
  "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

### <a id="GetSessionLogs"></a>GetSessionLogs

Retrieves the logs for a session.

 Returns the gRPC NOT_FOUND status if the session has not been hydrated yet.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetSessionLogsRequest</i>](bitdrift_public_unary_timeline_v1_GetSessionLogsRequest.md "bitdrift.public.unary.timeline.v1.GetSessionLogsRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetSessionLogsResponse</i>](bitdrift_public_unary_timeline_v1_GetSessionLogsResponse.md "bitdrift.public.unary.timeline.v1.GetSessionLogsResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.timeline.v1.TimelineService/GetSessionLogs`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "end_time": "2024-01-15T09:30:00Z",
  "include_internal_logs": true,
  "log_type": {
    "screen_capture": {}
  },
  "page": 1,
  "per_page": 25,
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "start_time": "2024-01-15T09:30:00Z"
}
```

<p class="h4">Example Response</p>
```json
{
  "logs": [
    {
      "fields": {
        "fields": {
          "key": {
            "string_data": ""
          }
        }
      },
      "listener_ids": [
        "abc-123-def"
      ],
      "log_level": "DEBUG",
      "log_type": "REPLAY",
      "message": "Example text",
      "timestamp": "2024-01-15T09:30:00Z"
    }
  ],
  "total_pages": 3
}
```

### <a id="HydrateSession"></a>HydrateSession

Triggers hydration of a session.

 Hydration prepares session data for querying. Can also be used to force
 re-hydration of an already hydrated session.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">HydrateSessionRequest</i>](bitdrift_public_unary_timeline_v1_HydrateSessionRequest.md "bitdrift.public.unary.timeline.v1.HydrateSessionRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">timeline</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">HydrateSessionResponse</i>](bitdrift_public_unary_timeline_v1_HydrateSessionResponse.md "bitdrift.public.unary.timeline.v1.HydrateSessionResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.timeline.v1.TimelineService/HydrateSession`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "force": true,
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

<p class="h4">Example Response</p>
```json
{
  "ignored": false,
  "last_hydration_state": {
    "created_at": "2024-01-15T09:30:00Z",
    "expiration_time": "2024-01-15T09:30:00Z",
    "finished_at": "2024-01-15T09:30:00Z",
    "hydration_status": "HYDRATING",
    "incremental": false,
    "started_at": "2024-01-15T09:30:00Z"
  },
  "success": true
}
```

