---
title: List the entities behind a retention cell
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > API Reference > Product Analytics
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# List the entities behind a retention cell{% #list-the-entities-behind-a-retention-cell %}
Copy pageCopied
{% tab title="v2" %}
**Note**: This endpoint is in preview and is subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
| Datadog site      | API endpoint                                                               |
| ----------------- | -------------------------------------------------------------------------- |
| ap1.datadoghq.com | POST https://api.ap1.datadoghq.com/api/v2/product-analytics/retention/list |
| ap2.datadoghq.com | POST https://api.ap2.datadoghq.com/api/v2/product-analytics/retention/list |
| app.datadoghq.eu  | POST https://api.datadoghq.eu/api/v2/product-analytics/retention/list      |
| app.ddog-gov.com  | POST https://api.ddog-gov.com/api/v2/product-analytics/retention/list      |
| us2.ddog-gov.com  | POST https://api.us2.ddog-gov.com/api/v2/product-analytics/retention/list  |
| uk1.datadoghq.com | POST https://api.uk1.datadoghq.com/api/v2/product-analytics/retention/list |
| app.datadoghq.com | POST https://api.datadoghq.com/api/v2/product-analytics/retention/list     |
| us3.datadoghq.com | POST https://api.us3.datadoghq.com/api/v2/product-analytics/retention/list |
| us5.datadoghq.com | POST https://api.us5.datadoghq.com/api/v2/product-analytics/retention/list |

### Overview

List the individual users or accounts counted in one cell of the retention grid. Set `computation_scope` to the cohort and return period you want to examine. This endpoint requires the `rum_apps_read` permission.

### Request

#### Body Data (required)

The retention list query.

{% tab title="Model" %}

| Parent field                               | Field                                      | Type          | Description                                                                                                                                                                                                                                       |
| ------------------------------------------ | ------------------------------------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|                                            | data [*required*]                     | object        | The single JSON:API resource carrying a retention list query. Its attributes hold the time window, the cell to list, and the columns to return for each entity.                                                                                   |
| data                                       | attributes [*required*]               | object        | Attributes of a retention list request.                                                                                                                                                                                                           |
| attributes                                 | from [*required*]                     | int64         | Start of the query window, in epoch milliseconds.                                                                                                                                                                                                 |
| attributes                                 | query [*required*]                    | object        | Query definition for a retention list request.                                                                                                                                                                                                    |
| query                                      | columns                                    | [object]      | The attribute columns to include in each returned row.                                                                                                                                                                                            |
| columns                                    | field                                      | object        | The attribute selected for a column.                                                                                                                                                                                                              |
| field                                      | path                                       | string        | Attribute path of the column.                                                                                                                                                                                                                     |
| query                                      | computation_scope [*required*]        | object        | Narrows a retention query to a single cell, at the intersection of one cohort and one return period.                                                                                                                                              |
| computation_scope                          | cohort_target [*required*]            |  <oneOf> | Selects a cohort, either by index or by the aggregation that rolls all cohorts together.                                                                                                                                                          |
| cohort_target                              | <type=index>                               | object        | Selects a cohort or return period by its zero-based position in the grid.                                                                                                                                                                         |
| <type=index>                               | type [*required*]                     | enum          | The discriminator identifying a target selected by index. Allowed enum values: `index`                                                                                                                                                            |
| <type=index>                               | value [*required*]                    | int64         | Zero-based index of the targeted cohort or return period.                                                                                                                                                                                         |
| cohort_target                              | <type=aggregation>                         | object        | Selects the rolled-up row that aggregates every cohort, rather than a single cohort.                                                                                                                                                              |
| <type=aggregation>                         | type [*required*]                     | enum          | The discriminator identifying a target selected by aggregation. Allowed enum values: `aggregation`                                                                                                                                                |
| <type=aggregation>                         | value [*required*]                    | string        | The aggregation that produced the rolled-up row.                                                                                                                                                                                                  |
| computation_scope                          | return_period_target [*required*]     | object        | Selects a cohort or return period by its zero-based position in the grid.                                                                                                                                                                         |
| return_period_target                       | type [*required*]                     | enum          | The discriminator identifying a target selected by index. Allowed enum values: `index`                                                                                                                                                            |
| return_period_target                       | value [*required*]                    | int64         | Zero-based index of the targeted cohort or return period.                                                                                                                                                                                         |
| computation_scope                          | type [*required*]                     | enum          | The discriminator identifying a scope narrowed to one grid cell. Allowed enum values: `cell`                                                                                                                                                      |
| query                                      | limit                                      | int64         | Maximum number of rows to return. Use `0` for no limit.                                                                                                                                                                                           |
| query                                      | search [*required*]                   | object        | Defines the cohort and return criteria that make up a retention query.                                                                                                                                                                            |
| search                                     | cohort_criteria [*required*]          | object        | Defines the event that places an entity into a cohort, and how cohorts are bucketed over time.                                                                                                                                                    |
| cohort_criteria                            | base_query [*required*]               |  <oneOf> | A query definition discriminated by the `data_source` field. Use `product_analytics` for standard event queries, or `product_analytics_occurrence` for occurrence-filtered queries.                                                               |
| base_query                                 | <data_source=product_analytics>            | object        | A standard Product Analytics event query.                                                                                                                                                                                                         |
| <data_source=product_analytics>            | data_source [*required*]              | enum          | The data source identifier. Allowed enum values: `product_analytics`                                                                                                                                                                              |
| <data_source=product_analytics>            | search [*required*]                   | object        | Search parameters for an event query.                                                                                                                                                                                                             |
| search                                     | query                                      | string        | The search query using Datadog search syntax.                                                                                                                                                                                                     |
| base_query                                 | <data_source=product_analytics_occurrence> | object        | A Product Analytics occurrence-filtered query.                                                                                                                                                                                                    |
| <data_source=product_analytics_occurrence> | data_source [*required*]              | enum          | The data source identifier for occurrence queries. Allowed enum values: `product_analytics_occurrence`                                                                                                                                            |
| <data_source=product_analytics_occurrence> | search [*required*]                   | object        | Search parameters for an occurrence query.                                                                                                                                                                                                        |
| search                                     | occurrences                                | object        | Filter for occurrence-based queries.                                                                                                                                                                                                              |
| occurrences                                | meta                                       | object        | Additional metadata.                                                                                                                                                                                                                              |
| additionalProperties                       | <any-key>                                  | string        |
| occurrences                                | operator [*required*]                 | string        | Comparison operator (=, >=, <=, >, <).                                                                                                                                                                                                            |
| occurrences                                | value [*required*]                    | string        | The occurrence count threshold as a string.                                                                                                                                                                                                       |
| search                                     | query                                      | string        | The search query using Datadog search syntax.                                                                                                                                                                                                     |
| cohort_criteria                            | time_interval [*required*]            |  <oneOf> | A retention interval, either aligned to calendar boundaries or of a fixed length. Cohort criteria use calendar intervals; return criteria use fixed intervals.                                                                                    |
| time_interval                              | <type=calendar>                            | object        | A retention interval aligned to calendar boundaries.                                                                                                                                                                                              |
| <type=calendar>                            | type [*required*]                     | enum          | The discriminator identifying a calendar-aligned retention interval. Allowed enum values: `calendar`                                                                                                                                              |
| <type=calendar>                            | value [*required*]                    | object        | A calendar-aligned bucket definition, such as "every 1 week starting on Monday".                                                                                                                                                                  |
| value                                      | alignment                                  | string        | Where each bucket starts within the calendar unit. Use an hour for `day` (for example `1am` or `14`), a day name for `week` (for example `monday`), or an ordinal for `month` (for example `1st`).                                                |
| value                                      | quantity                                   | int64         | Number of calendar units per bucket.                                                                                                                                                                                                              |
| value                                      | timezone                                   | string        | Timezone used to align the buckets.                                                                                                                                                                                                               |
| value                                      | type [*required*]                     | enum          | Calendar unit used to bucket cohorts. Allowed enum values: `minute,hour,day,week,month,quarter,year`                                                                                                                                              |
| time_interval                              | <type=fixed>                               | object        | A retention interval of fixed length, such as "7 days".                                                                                                                                                                                           |
| <type=fixed>                               | type [*required*]                     | enum          | The discriminator identifying a fixed-length retention interval. Allowed enum values: `fixed`                                                                                                                                                     |
| <type=fixed>                               | unit [*required*]                     | enum          | Time unit for a fixed-length retention interval. Allowed enum values: `day,week,month`                                                                                                                                                            |
| <type=fixed>                               | value [*required*]                    | double        | Length of the interval, expressed in `unit`.                                                                                                                                                                                                      |
| search                                     | filters                                    | object        | Filters narrowing the events considered by a retention query.                                                                                                                                                                                     |
| filters                                    | audience_filters                           | object        | Audience filter definitions for targeting specific user segments.                                                                                                                                                                                 |
| audience_filters                           | accounts                                   | [object]      | Account audience queries.                                                                                                                                                                                                                         |
| accounts                                   | name [*required*]                     | string        | Name of this query, referenced in the formula.                                                                                                                                                                                                    |
| accounts                                   | query                                      | string        | Search query for filtering accounts.                                                                                                                                                                                                              |
| audience_filters                           | formula                                    | string        | Boolean formula combining audience queries by name.                                                                                                                                                                                               |
| audience_filters                           | segments                                   | [object]      | Segment audience queries.                                                                                                                                                                                                                         |
| segments                                   | name [*required*]                     | string        | Name of this query, referenced in the formula.                                                                                                                                                                                                    |
| segments                                   | segment_id [*required*]               | uuid          | UUID of the segment to filter by.                                                                                                                                                                                                                 |
| audience_filters                           | users                                      | [object]      | User audience queries.                                                                                                                                                                                                                            |
| users                                      | name [*required*]                     | string        | Name of this query, referenced in the formula.                                                                                                                                                                                                    |
| users                                      | query                                      | string        | Search query for filtering users.                                                                                                                                                                                                                 |
| filters                                    | string_filter                              | string        | Free-text search query applied to the events.                                                                                                                                                                                                     |
| search                                     | retention_entity [*required*]         | enum          | The entity whose retention is measured. Allowed enum values: `@usr.id,@account.id`                                                                                                                                                                |
| search                                     | return_condition [*required*]         | enum          | When an entity counts as having returned. Use `conversion_on` to count only entities that returned during the period itself, or `conversion_on_or_after` to also count later returns. Allowed enum values: `conversion_on,conversion_on_or_after` |
| search                                     | return_criteria                            | object        | Defines the event that counts as a return, and the window in which it must occur.                                                                                                                                                                 |
| return_criteria                            | base_query [*required*]               |  <oneOf> | A query definition discriminated by the `data_source` field. Use `product_analytics` for standard event queries, or `product_analytics_occurrence` for occurrence-filtered queries.                                                               |
| base_query                                 | <data_source=product_analytics>            | object        | A standard Product Analytics event query.                                                                                                                                                                                                         |
| <data_source=product_analytics>            | data_source [*required*]              | enum          | The data source identifier. Allowed enum values: `product_analytics`                                                                                                                                                                              |
| <data_source=product_analytics>            | search [*required*]                   | object        | Search parameters for an event query.                                                                                                                                                                                                             |
| search                                     | query                                      | string        | The search query using Datadog search syntax.                                                                                                                                                                                                     |
| base_query                                 | <data_source=product_analytics_occurrence> | object        | A Product Analytics occurrence-filtered query.                                                                                                                                                                                                    |
| <data_source=product_analytics_occurrence> | data_source [*required*]              | enum          | The data source identifier for occurrence queries. Allowed enum values: `product_analytics_occurrence`                                                                                                                                            |
| <data_source=product_analytics_occurrence> | search [*required*]                   | object        | Search parameters for an occurrence query.                                                                                                                                                                                                        |
| search                                     | occurrences                                | object        | Filter for occurrence-based queries.                                                                                                                                                                                                              |
| occurrences                                | meta                                       | object        | Additional metadata.                                                                                                                                                                                                                              |
| additionalProperties                       | <any-key>                                  | string        |
| occurrences                                | operator [*required*]                 | string        | Comparison operator (=, >=, <=, >, <).                                                                                                                                                                                                            |
| occurrences                                | value [*required*]                    | string        | The occurrence count threshold as a string.                                                                                                                                                                                                       |
| search                                     | query                                      | string        | The search query using Datadog search syntax.                                                                                                                                                                                                     |
| return_criteria                            | time_interval                              |  <oneOf> | A retention interval, either aligned to calendar boundaries or of a fixed length. Cohort criteria use calendar intervals; return criteria use fixed intervals.                                                                                    |
| time_interval                              | <type=calendar>                            | object        | A retention interval aligned to calendar boundaries.                                                                                                                                                                                              |
| <type=calendar>                            | type [*required*]                     | enum          | The discriminator identifying a calendar-aligned retention interval. Allowed enum values: `calendar`                                                                                                                                              |
| <type=calendar>                            | value [*required*]                    | object        | A calendar-aligned bucket definition, such as "every 1 week starting on Monday".                                                                                                                                                                  |
| value                                      | alignment                                  | string        | Where each bucket starts within the calendar unit. Use an hour for `day` (for example `1am` or `14`), a day name for `week` (for example `monday`), or an ordinal for `month` (for example `1st`).                                                |
| value                                      | quantity                                   | int64         | Number of calendar units per bucket.                                                                                                                                                                                                              |
| value                                      | timezone                                   | string        | Timezone used to align the buckets.                                                                                                                                                                                                               |
| value                                      | type [*required*]                     | enum          | Calendar unit used to bucket cohorts. Allowed enum values: `minute,hour,day,week,month,quarter,year`                                                                                                                                              |
| time_interval                              | <type=fixed>                               | object        | A retention interval of fixed length, such as "7 days".                                                                                                                                                                                           |
| <type=fixed>                               | type [*required*]                     | enum          | The discriminator identifying a fixed-length retention interval. Allowed enum values: `fixed`                                                                                                                                                     |
| <type=fixed>                               | unit [*required*]                     | enum          | Time unit for a fixed-length retention interval. Allowed enum values: `day,week,month`                                                                                                                                                            |
| <type=fixed>                               | value [*required*]                    | double        | Length of the interval, expressed in `unit`.                                                                                                                                                                                                      |
| attributes                                 | to [*required*]                       | int64         | End of the query window, in epoch milliseconds.                                                                                                                                                                                                   |
| data                                       | type [*required*]                     | enum          | The resource type identifier for a retention list request. Allowed enum values: `retention_list_request`                                                                                                                                          |

{% /tab %}

{% tab title="Example" %}

```json
{
  "data": {
    "attributes": {
      "from": 1756425600000,
      "query": {
        "columns": [
          {
            "field": {
              "path": "@usr.email"
            }
          }
        ],
        "computation_scope": {
          "cohort_target": {
            "type": "index",
            "value": 0
          },
          "return_period_target": {
            "type": "index",
            "value": 0
          },
          "type": "cell"
        },
        "limit": 100,
        "search": {
          "cohort_criteria": {
            "base_query": {
              "data_source": "product_analytics",
              "search": {
                "query": "@type:view"
              }
            },
            "time_interval": {
              "type": "calendar",
              "value": {
                "alignment": "monday",
                "quantity": 1,
                "timezone": "UTC",
                "type": "week"
              }
            }
          },
          "filters": {
            "audience_filters": {
              "accounts": [
                {
                  "name": "",
                  "query": "string"
                }
              ],
              "formula": "u",
              "segments": [
                {
                  "name": "",
                  "segment_id": "00000000-0000-0000-0000-000000000000"
                }
              ],
              "users": [
                {
                  "name": "u",
                  "query": "*"
                }
              ]
            },
            "string_filter": "string"
          },
          "retention_entity": "@usr.id",
          "return_condition": "conversion_on_or_after",
          "return_criteria": {
            "base_query": {
              "data_source": "product_analytics",
              "search": {
                "query": "@type:view"
              }
            },
            "time_interval": {
              "type": "calendar",
              "value": {
                "alignment": "monday",
                "quantity": 1,
                "timezone": "UTC",
                "type": "week"
              }
            }
          }
        }
      },
      "to": 1756857600000
    },
    "type": "retention_list_request"
  }
}
```

{% /tab %}

### Response

{% tab title="200" %}
OK
{% tab title="Model" %}
Response for a retention list query.

| Parent field | Field                        | Type     | Description                                                                                                                                                                  |
| ------------ | ---------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|              | data [*required*]       | object   | The single JSON:API resource holding the entities behind one retention cell. Its attributes contain the entity whose retention was measured and one row per matching entity. |
| data         | attributes [*required*] | object   | Attributes of a retention list response, containing the matching entity rows.                                                                                                |
| attributes   | records                      | [object] | The matching entity rows.                                                                                                                                                    |
| attributes   | retention_entity             | string   | The entity whose retention was measured.                                                                                                                                     |
| data         | id [*required*]         | string   | Unique identifier for this response data object.                                                                                                                             |
| data         | type [*required*]       | enum     | The resource type identifier for a retention list response. Allowed enum values: `retention_list_response`                                                                   |

{% /tab %}

{% tab title="Example" %}

```json
{
  "data": {
    "attributes": {
      "records": [],
      "retention_entity": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "retention_list_response"
  }
}
```

{% /tab %}

{% /tab %}

{% tab title="400" %}
Bad Request
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="403" %}
Not Authorized
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

{% tab title="429" %}
Too many requests
{% tab title="Model" %}
API error response.

| Field                    | Type     | Description       |
| ------------------------ | -------- | ----------------- |
| errors [*required*] | [string] | A list of errors. |

{% /tab %}

{% tab title="Example" %}

```json
{
  "errors": [
    "Bad Request"
  ]
}
```

{% /tab %}

{% /tab %}

### Code Example

##### 
                  \## default
# 
 \# Curl command curl -X POST "https://api.datadoghq.com/api/v2/product-analytics/retention/list" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d @- << EOF
{
  "data": {
    "attributes": {
      "from": 1756425600000,
      "query": {
        "columns": [
          {
            "field": {
              "path": "@usr.email"
            }
          }
        ],
        "computation_scope": {
          "cohort_target": {
            "type": "index",
            "value": 0
          },
          "return_period_target": {
            "type": "index",
            "value": 1
          },
          "type": "cell"
        },
        "limit": 100,
        "search": {
          "cohort_criteria": {
            "base_query": {
              "data_source": "product_analytics",
              "search": {
                "query": "@type:view @view.name:Signup"
              }
            },
            "time_interval": {
              "type": "calendar",
              "value": {
                "quantity": 1,
                "type": "week"
              }
            }
          },
          "retention_entity": "@usr.id",
          "return_condition": "conversion_on_or_after"
        }
      },
      "to": 1756857600000
    },
    "type": "retention_list_request"
  }
}
EOF 
                
##### 

```python
"""
List the entities behind a retention cell returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.product_analytics_api import ProductAnalyticsApi
from datadog_api_client.v2.model.product_analytics_audience_account_subquery import (
    ProductAnalyticsAudienceAccountSubquery,
)
from datadog_api_client.v2.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
from datadog_api_client.v2.model.product_analytics_audience_segment_subquery import (
    ProductAnalyticsAudienceSegmentSubquery,
)
from datadog_api_client.v2.model.product_analytics_audience_user_subquery import ProductAnalyticsAudienceUserSubquery
from datadog_api_client.v2.model.product_analytics_calendar_interval import ProductAnalyticsCalendarInterval
from datadog_api_client.v2.model.product_analytics_calendar_interval_type import ProductAnalyticsCalendarIntervalType
from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery
from datadog_api_client.v2.model.product_analytics_event_query_data_source import ProductAnalyticsEventQueryDataSource
from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch
from datadog_api_client.v2.model.product_analytics_retention_calendar_time_interval import (
    ProductAnalyticsRetentionCalendarTimeInterval,
)
from datadog_api_client.v2.model.product_analytics_retention_calendar_time_interval_type import (
    ProductAnalyticsRetentionCalendarTimeIntervalType,
)
from datadog_api_client.v2.model.product_analytics_retention_cell_scope import ProductAnalyticsRetentionCellScope
from datadog_api_client.v2.model.product_analytics_retention_cell_scope_type import (
    ProductAnalyticsRetentionCellScopeType,
)
from datadog_api_client.v2.model.product_analytics_retention_cohort_criteria import (
    ProductAnalyticsRetentionCohortCriteria,
)
from datadog_api_client.v2.model.product_analytics_retention_entity import ProductAnalyticsRetentionEntity
from datadog_api_client.v2.model.product_analytics_retention_filters import ProductAnalyticsRetentionFilters
from datadog_api_client.v2.model.product_analytics_retention_index_target import ProductAnalyticsRetentionIndexTarget
from datadog_api_client.v2.model.product_analytics_retention_index_target_type import (
    ProductAnalyticsRetentionIndexTargetType,
)
from datadog_api_client.v2.model.product_analytics_retention_list_column import ProductAnalyticsRetentionListColumn
from datadog_api_client.v2.model.product_analytics_retention_list_column_field import (
    ProductAnalyticsRetentionListColumnField,
)
from datadog_api_client.v2.model.product_analytics_retention_list_query import ProductAnalyticsRetentionListQuery
from datadog_api_client.v2.model.product_analytics_retention_list_request import ProductAnalyticsRetentionListRequest
from datadog_api_client.v2.model.product_analytics_retention_list_request_attributes import (
    ProductAnalyticsRetentionListRequestAttributes,
)
from datadog_api_client.v2.model.product_analytics_retention_list_request_data import (
    ProductAnalyticsRetentionListRequestData,
)
from datadog_api_client.v2.model.product_analytics_retention_list_request_type import (
    ProductAnalyticsRetentionListRequestType,
)
from datadog_api_client.v2.model.product_analytics_retention_return_condition import (
    ProductAnalyticsRetentionReturnCondition,
)
from datadog_api_client.v2.model.product_analytics_retention_return_criteria import (
    ProductAnalyticsRetentionReturnCriteria,
)
from datadog_api_client.v2.model.product_analytics_retention_search import ProductAnalyticsRetentionSearch
from uuid import UUID

body = ProductAnalyticsRetentionListRequest(
    data=ProductAnalyticsRetentionListRequestData(
        attributes=ProductAnalyticsRetentionListRequestAttributes(
            _from=1756425600000,
            query=ProductAnalyticsRetentionListQuery(
                columns=[
                    ProductAnalyticsRetentionListColumn(
                        field=ProductAnalyticsRetentionListColumnField(
                            path="@usr.email",
                        ),
                    ),
                ],
                computation_scope=ProductAnalyticsRetentionCellScope(
                    cohort_target=ProductAnalyticsRetentionIndexTarget(
                        type=ProductAnalyticsRetentionIndexTargetType.INDEX,
                        value=0,
                    ),
                    return_period_target=ProductAnalyticsRetentionIndexTarget(
                        type=ProductAnalyticsRetentionIndexTargetType.INDEX,
                        value=0,
                    ),
                    type=ProductAnalyticsRetentionCellScopeType.CELL,
                ),
                limit=100,
                search=ProductAnalyticsRetentionSearch(
                    cohort_criteria=ProductAnalyticsRetentionCohortCriteria(
                        base_query=ProductAnalyticsEventQuery(
                            data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS,
                            search=ProductAnalyticsEventSearch(
                                query="@type:view",
                            ),
                        ),
                        time_interval=ProductAnalyticsRetentionCalendarTimeInterval(
                            type=ProductAnalyticsRetentionCalendarTimeIntervalType.CALENDAR,
                            value=ProductAnalyticsCalendarInterval(
                                alignment="monday",
                                quantity=1,
                                timezone="UTC",
                                type=ProductAnalyticsCalendarIntervalType.WEEK,
                            ),
                        ),
                    ),
                    filters=ProductAnalyticsRetentionFilters(
                        audience_filters=ProductAnalyticsAudienceFilters(
                            accounts=[
                                ProductAnalyticsAudienceAccountSubquery(
                                    name="",
                                ),
                            ],
                            formula="u",
                            segments=[
                                ProductAnalyticsAudienceSegmentSubquery(
                                    name="",
                                    segment_id=UUID("00000000-0000-0000-0000-000000000000"),
                                ),
                            ],
                            users=[
                                ProductAnalyticsAudienceUserSubquery(
                                    name="u",
                                    query="*",
                                ),
                            ],
                        ),
                    ),
                    retention_entity=ProductAnalyticsRetentionEntity.USER_ID,
                    return_condition=ProductAnalyticsRetentionReturnCondition.CONVERSION_ON_OR_AFTER,
                    return_criteria=ProductAnalyticsRetentionReturnCriteria(
                        base_query=ProductAnalyticsEventQuery(
                            data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS,
                            search=ProductAnalyticsEventSearch(
                                query="@type:view",
                            ),
                        ),
                        time_interval=ProductAnalyticsRetentionCalendarTimeInterval(
                            type=ProductAnalyticsRetentionCalendarTimeIntervalType.CALENDAR,
                            value=ProductAnalyticsCalendarInterval(
                                alignment="monday",
                                quantity=1,
                                timezone="UTC",
                                type=ProductAnalyticsCalendarIntervalType.WEEK,
                            ),
                        ),
                    ),
                ),
            ),
            to=1756857600000,
        ),
        type=ProductAnalyticsRetentionListRequestType.RETENTION_LIST_REQUEST,
    ),
)

configuration = Configuration()
configuration.unstable_operations["query_product_analytics_retention_list"] = True
with ApiClient(configuration) as api_client:
    api_instance = ProductAnalyticsApi(api_client)
    response = api_instance.query_product_analytics_retention_list(body=body)

    print(response)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=python) and then save the example to `example.py` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
##### 

```ruby
# List the entities behind a retention cell returns "OK" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.unstable_operations["v2.query_product_analytics_retention_list".to_sym] = true
end
api_instance = DatadogAPIClient::V2::ProductAnalyticsAPI.new

body = DatadogAPIClient::V2::ProductAnalyticsRetentionListRequest.new({
  data: DatadogAPIClient::V2::ProductAnalyticsRetentionListRequestData.new({
    attributes: DatadogAPIClient::V2::ProductAnalyticsRetentionListRequestAttributes.new({
      from: 1756425600000,
      query: DatadogAPIClient::V2::ProductAnalyticsRetentionListQuery.new({
        columns: [
          DatadogAPIClient::V2::ProductAnalyticsRetentionListColumn.new({
            field: DatadogAPIClient::V2::ProductAnalyticsRetentionListColumnField.new({
              path: "@usr.email",
            }),
          }),
        ],
        computation_scope: DatadogAPIClient::V2::ProductAnalyticsRetentionCellScope.new({
          cohort_target: DatadogAPIClient::V2::ProductAnalyticsRetentionIndexTarget.new({
            type: DatadogAPIClient::V2::ProductAnalyticsRetentionIndexTargetType::INDEX,
            value: 0,
          }),
          return_period_target: DatadogAPIClient::V2::ProductAnalyticsRetentionIndexTarget.new({
            type: DatadogAPIClient::V2::ProductAnalyticsRetentionIndexTargetType::INDEX,
            value: 0,
          }),
          type: DatadogAPIClient::V2::ProductAnalyticsRetentionCellScopeType::CELL,
        }),
        limit: 100,
        search: DatadogAPIClient::V2::ProductAnalyticsRetentionSearch.new({
          cohort_criteria: DatadogAPIClient::V2::ProductAnalyticsRetentionCohortCriteria.new({
            base_query: DatadogAPIClient::V2::ProductAnalyticsEventQuery.new({
              data_source: DatadogAPIClient::V2::ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
              search: DatadogAPIClient::V2::ProductAnalyticsEventSearch.new({
                query: "@type:view",
              }),
            }),
            time_interval: DatadogAPIClient::V2::ProductAnalyticsRetentionCalendarTimeInterval.new({
              type: DatadogAPIClient::V2::ProductAnalyticsRetentionCalendarTimeIntervalType::CALENDAR,
              value: DatadogAPIClient::V2::ProductAnalyticsCalendarInterval.new({
                alignment: "monday",
                quantity: 1,
                timezone: "UTC",
                type: DatadogAPIClient::V2::ProductAnalyticsCalendarIntervalType::WEEK,
              }),
            }),
          }),
          filters: DatadogAPIClient::V2::ProductAnalyticsRetentionFilters.new({
            audience_filters: DatadogAPIClient::V2::ProductAnalyticsAudienceFilters.new({
              accounts: [
                DatadogAPIClient::V2::ProductAnalyticsAudienceAccountSubquery.new({
                  name: "",
                }),
              ],
              formula: "u",
              segments: [
                DatadogAPIClient::V2::ProductAnalyticsAudienceSegmentSubquery.new({
                  name: "",
                  segment_id: "00000000-0000-0000-0000-000000000000",
                }),
              ],
              users: [
                DatadogAPIClient::V2::ProductAnalyticsAudienceUserSubquery.new({
                  name: "u",
                  query: "*",
                }),
              ],
            }),
          }),
          retention_entity: DatadogAPIClient::V2::ProductAnalyticsRetentionEntity::USER_ID,
          return_condition: DatadogAPIClient::V2::ProductAnalyticsRetentionReturnCondition::CONVERSION_ON_OR_AFTER,
          return_criteria: DatadogAPIClient::V2::ProductAnalyticsRetentionReturnCriteria.new({
            base_query: DatadogAPIClient::V2::ProductAnalyticsEventQuery.new({
              data_source: DatadogAPIClient::V2::ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
              search: DatadogAPIClient::V2::ProductAnalyticsEventSearch.new({
                query: "@type:view",
              }),
            }),
            time_interval: DatadogAPIClient::V2::ProductAnalyticsRetentionCalendarTimeInterval.new({
              type: DatadogAPIClient::V2::ProductAnalyticsRetentionCalendarTimeIntervalType::CALENDAR,
              value: DatadogAPIClient::V2::ProductAnalyticsCalendarInterval.new({
                alignment: "monday",
                quantity: 1,
                timezone: "UTC",
                type: DatadogAPIClient::V2::ProductAnalyticsCalendarIntervalType::WEEK,
              }),
            }),
          }),
        }),
      }),
      to: 1756857600000,
    }),
    type: DatadogAPIClient::V2::ProductAnalyticsRetentionListRequestType::RETENTION_LIST_REQUEST,
  }),
})
p api_instance.query_product_analytics_retention_list(body)
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=ruby) and then save the example to `example.rb` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
##### 

```go
// List the entities behind a retention cell returns "OK" response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
	"github.com/google/uuid"
)

func main() {
	body := datadogV2.ProductAnalyticsRetentionListRequest{
		Data: datadogV2.ProductAnalyticsRetentionListRequestData{
			Attributes: datadogV2.ProductAnalyticsRetentionListRequestAttributes{
				From: 1756425600000,
				Query: datadogV2.ProductAnalyticsRetentionListQuery{
					Columns: []datadogV2.ProductAnalyticsRetentionListColumn{
						{
							Field: &datadogV2.ProductAnalyticsRetentionListColumnField{
								Path: datadog.PtrString("@usr.email"),
							},
						},
					},
					ComputationScope: datadogV2.ProductAnalyticsRetentionCellScope{
						CohortTarget: datadogV2.ProductAnalyticsRetentionCohortTarget{
							ProductAnalyticsRetentionIndexTarget: &datadogV2.ProductAnalyticsRetentionIndexTarget{
								Type:  datadogV2.PRODUCTANALYTICSRETENTIONINDEXTARGETTYPE_INDEX,
								Value: 0,
							}},
						ReturnPeriodTarget: datadogV2.ProductAnalyticsRetentionIndexTarget{
							Type:  datadogV2.PRODUCTANALYTICSRETENTIONINDEXTARGETTYPE_INDEX,
							Value: 0,
						},
						Type: datadogV2.PRODUCTANALYTICSRETENTIONCELLSCOPETYPE_CELL,
					},
					Limit: datadog.PtrInt64(100),
					Search: datadogV2.ProductAnalyticsRetentionSearch{
						CohortCriteria: datadogV2.ProductAnalyticsRetentionCohortCriteria{
							BaseQuery: datadogV2.ProductAnalyticsBaseQuery{
								ProductAnalyticsEventQuery: &datadogV2.ProductAnalyticsEventQuery{
									DataSource: datadogV2.PRODUCTANALYTICSEVENTQUERYDATASOURCE_PRODUCT_ANALYTICS,
									Search: datadogV2.ProductAnalyticsEventSearch{
										Query: datadog.PtrString("@type:view"),
									},
								}},
							TimeInterval: datadogV2.ProductAnalyticsRetentionTimeInterval{
								ProductAnalyticsRetentionCalendarTimeInterval: &datadogV2.ProductAnalyticsRetentionCalendarTimeInterval{
									Type: datadogV2.PRODUCTANALYTICSRETENTIONCALENDARTIMEINTERVALTYPE_CALENDAR,
									Value: datadogV2.ProductAnalyticsCalendarInterval{
										Alignment: datadog.PtrString("monday"),
										Quantity:  datadog.PtrInt64(1),
										Timezone:  datadog.PtrString("UTC"),
										Type:      datadogV2.PRODUCTANALYTICSCALENDARINTERVALTYPE_WEEK,
									},
								}},
						},
						Filters: &datadogV2.ProductAnalyticsRetentionFilters{
							AudienceFilters: &datadogV2.ProductAnalyticsAudienceFilters{
								Accounts: []datadogV2.ProductAnalyticsAudienceAccountSubquery{
									{
										Name: "",
									},
								},
								Formula: datadog.PtrString("u"),
								Segments: []datadogV2.ProductAnalyticsAudienceSegmentSubquery{
									{
										Name:      "",
										SegmentId: uuid.MustParse("00000000-0000-0000-0000-000000000000"),
									},
								},
								Users: []datadogV2.ProductAnalyticsAudienceUserSubquery{
									{
										Name:  "u",
										Query: datadog.PtrString("*"),
									},
								},
							},
						},
						RetentionEntity: datadogV2.PRODUCTANALYTICSRETENTIONENTITY_USER_ID,
						ReturnCondition: datadogV2.PRODUCTANALYTICSRETENTIONRETURNCONDITION_CONVERSION_ON_OR_AFTER,
						ReturnCriteria: &datadogV2.ProductAnalyticsRetentionReturnCriteria{
							BaseQuery: datadogV2.ProductAnalyticsBaseQuery{
								ProductAnalyticsEventQuery: &datadogV2.ProductAnalyticsEventQuery{
									DataSource: datadogV2.PRODUCTANALYTICSEVENTQUERYDATASOURCE_PRODUCT_ANALYTICS,
									Search: datadogV2.ProductAnalyticsEventSearch{
										Query: datadog.PtrString("@type:view"),
									},
								}},
							TimeInterval: &datadogV2.ProductAnalyticsRetentionTimeInterval{
								ProductAnalyticsRetentionCalendarTimeInterval: &datadogV2.ProductAnalyticsRetentionCalendarTimeInterval{
									Type: datadogV2.PRODUCTANALYTICSRETENTIONCALENDARTIMEINTERVALTYPE_CALENDAR,
									Value: datadogV2.ProductAnalyticsCalendarInterval{
										Alignment: datadog.PtrString("monday"),
										Quantity:  datadog.PtrInt64(1),
										Timezone:  datadog.PtrString("UTC"),
										Type:      datadogV2.PRODUCTANALYTICSCALENDARINTERVALTYPE_WEEK,
									},
								}},
						},
					},
				},
				To: 1756857600000,
			},
			Type: datadogV2.PRODUCTANALYTICSRETENTIONLISTREQUESTTYPE_RETENTION_LIST_REQUEST,
		},
	}
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.QueryProductAnalyticsRetentionList", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewProductAnalyticsApi(apiClient)
	resp, r, err := api.QueryProductAnalyticsRetentionList(ctx, body)

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `ProductAnalyticsApi.QueryProductAnalyticsRetentionList`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `ProductAnalyticsApi.QueryProductAnalyticsRetentionList`:\n%s\n", responseContent)
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=go) and then save the example to `main.go` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
##### 

```java
// List the entities behind a retention cell returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ProductAnalyticsApi;
import com.datadog.api.client.v2.model.ProductAnalyticsAudienceAccountSubquery;
import com.datadog.api.client.v2.model.ProductAnalyticsAudienceFilters;
import com.datadog.api.client.v2.model.ProductAnalyticsAudienceSegmentSubquery;
import com.datadog.api.client.v2.model.ProductAnalyticsAudienceUserSubquery;
import com.datadog.api.client.v2.model.ProductAnalyticsBaseQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsCalendarInterval;
import com.datadog.api.client.v2.model.ProductAnalyticsCalendarIntervalType;
import com.datadog.api.client.v2.model.ProductAnalyticsEventQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsEventQueryDataSource;
import com.datadog.api.client.v2.model.ProductAnalyticsEventSearch;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCalendarTimeInterval;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCalendarTimeIntervalType;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCellScope;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCellScopeType;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCohortCriteria;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionCohortTarget;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionEntity;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionFilters;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionIndexTarget;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionIndexTargetType;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListColumn;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListColumnField;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListRequest;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListRequestAttributes;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListRequestData;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListRequestType;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionListResponse;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionReturnCondition;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionReturnCriteria;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionSearch;
import com.datadog.api.client.v2.model.ProductAnalyticsRetentionTimeInterval;
import java.util.Collections;
import java.util.UUID;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setUnstableOperationEnabled("v2.queryProductAnalyticsRetentionList", true);
    ProductAnalyticsApi apiInstance = new ProductAnalyticsApi(defaultClient);

    ProductAnalyticsRetentionListRequest body =
        new ProductAnalyticsRetentionListRequest()
            .data(
                new ProductAnalyticsRetentionListRequestData()
                    .attributes(
                        new ProductAnalyticsRetentionListRequestAttributes()
                            .from(1756425600000L)
                            .query(
                                new ProductAnalyticsRetentionListQuery()
                                    .columns(
                                        Collections.singletonList(
                                            new ProductAnalyticsRetentionListColumn()
                                                .field(
                                                    new ProductAnalyticsRetentionListColumnField()
                                                        .path("@usr.email"))))
                                    .computationScope(
                                        new ProductAnalyticsRetentionCellScope()
                                            .cohortTarget(
                                                new ProductAnalyticsRetentionCohortTarget(
                                                    new ProductAnalyticsRetentionIndexTarget()
                                                        .type(
                                                            ProductAnalyticsRetentionIndexTargetType
                                                                .INDEX)
                                                        .value(0L)))
                                            .returnPeriodTarget(
                                                new ProductAnalyticsRetentionIndexTarget()
                                                    .type(
                                                        ProductAnalyticsRetentionIndexTargetType
                                                            .INDEX)
                                                    .value(0L))
                                            .type(ProductAnalyticsRetentionCellScopeType.CELL))
                                    .limit(100L)
                                    .search(
                                        new ProductAnalyticsRetentionSearch()
                                            .cohortCriteria(
                                                new ProductAnalyticsRetentionCohortCriteria()
                                                    .baseQuery(
                                                        new ProductAnalyticsBaseQuery(
                                                            new ProductAnalyticsEventQuery()
                                                                .dataSource(
                                                                    ProductAnalyticsEventQueryDataSource
                                                                        .PRODUCT_ANALYTICS)
                                                                .search(
                                                                    new ProductAnalyticsEventSearch()
                                                                        .query("@type:view"))))
                                                    .timeInterval(
                                                        new ProductAnalyticsRetentionTimeInterval(
                                                            new ProductAnalyticsRetentionCalendarTimeInterval()
                                                                .type(
                                                                    ProductAnalyticsRetentionCalendarTimeIntervalType
                                                                        .CALENDAR)
                                                                .value(
                                                                    new ProductAnalyticsCalendarInterval()
                                                                        .alignment("monday")
                                                                        .quantity(1L)
                                                                        .timezone("UTC")
                                                                        .type(
                                                                            ProductAnalyticsCalendarIntervalType
                                                                                .WEEK)))))
                                            .filters(
                                                new ProductAnalyticsRetentionFilters()
                                                    .audienceFilters(
                                                        new ProductAnalyticsAudienceFilters()
                                                            .accounts(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsAudienceAccountSubquery()
                                                                        .name("")))
                                                            .formula("u")
                                                            .segments(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsAudienceSegmentSubquery()
                                                                        .name("")
                                                                        .segmentId(
                                                                            UUID.fromString(
                                                                                "00000000-0000-0000-0000-000000000000"))))
                                                            .users(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsAudienceUserSubquery()
                                                                        .name("u")
                                                                        .query("*")))))
                                            .retentionEntity(
                                                ProductAnalyticsRetentionEntity.USER_ID)
                                            .returnCondition(
                                                ProductAnalyticsRetentionReturnCondition
                                                    .CONVERSION_ON_OR_AFTER)
                                            .returnCriteria(
                                                new ProductAnalyticsRetentionReturnCriteria()
                                                    .baseQuery(
                                                        new ProductAnalyticsBaseQuery(
                                                            new ProductAnalyticsEventQuery()
                                                                .dataSource(
                                                                    ProductAnalyticsEventQueryDataSource
                                                                        .PRODUCT_ANALYTICS)
                                                                .search(
                                                                    new ProductAnalyticsEventSearch()
                                                                        .query("@type:view"))))
                                                    .timeInterval(
                                                        new ProductAnalyticsRetentionTimeInterval(
                                                            new ProductAnalyticsRetentionCalendarTimeInterval()
                                                                .type(
                                                                    ProductAnalyticsRetentionCalendarTimeIntervalType
                                                                        .CALENDAR)
                                                                .value(
                                                                    new ProductAnalyticsCalendarInterval()
                                                                        .alignment("monday")
                                                                        .quantity(1L)
                                                                        .timezone("UTC")
                                                                        .type(
                                                                            ProductAnalyticsCalendarIntervalType
                                                                                .WEEK)))))))
                            .to(1756857600000L))
                    .type(ProductAnalyticsRetentionListRequestType.RETENTION_LIST_REQUEST));

    try {
      ProductAnalyticsRetentionListResponse result =
          apiInstance.queryProductAnalyticsRetentionList(body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println(
          "Exception when calling ProductAnalyticsApi#queryProductAnalyticsRetentionList");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=java) and then save the example to `Example.java` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
##### 

```rust
// List the entities behind a retention cell returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_product_analytics::ProductAnalyticsAPI;
use datadog_api_client::datadogV2::model::ProductAnalyticsAudienceAccountSubquery;
use datadog_api_client::datadogV2::model::ProductAnalyticsAudienceFilters;
use datadog_api_client::datadogV2::model::ProductAnalyticsAudienceSegmentSubquery;
use datadog_api_client::datadogV2::model::ProductAnalyticsAudienceUserSubquery;
use datadog_api_client::datadogV2::model::ProductAnalyticsBaseQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsCalendarInterval;
use datadog_api_client::datadogV2::model::ProductAnalyticsCalendarIntervalType;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventQueryDataSource;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventSearch;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCalendarTimeInterval;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCalendarTimeIntervalType;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCellScope;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCellScopeType;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCohortCriteria;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionCohortTarget;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionEntity;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionFilters;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionIndexTarget;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionIndexTargetType;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListColumn;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListColumnField;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListRequest;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListRequestAttributes;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListRequestData;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionListRequestType;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionReturnCondition;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionReturnCriteria;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionSearch;
use datadog_api_client::datadogV2::model::ProductAnalyticsRetentionTimeInterval;
use uuid::Uuid;

#[tokio::main]
async fn main() {
    let body =
        ProductAnalyticsRetentionListRequest::new(
            ProductAnalyticsRetentionListRequestData::new(
                ProductAnalyticsRetentionListRequestAttributes::new(
                    1756425600000,
                    ProductAnalyticsRetentionListQuery::new(
                        ProductAnalyticsRetentionCellScope::new(
                            ProductAnalyticsRetentionCohortTarget::ProductAnalyticsRetentionIndexTarget(
                                Box::new(
                                    ProductAnalyticsRetentionIndexTarget::new(
                                        ProductAnalyticsRetentionIndexTargetType::INDEX,
                                        0,
                                    ),
                                ),
                            ),
                            ProductAnalyticsRetentionIndexTarget::new(
                                ProductAnalyticsRetentionIndexTargetType::INDEX,
                                0,
                            ),
                            ProductAnalyticsRetentionCellScopeType::CELL,
                        ),
                        ProductAnalyticsRetentionSearch::new(
                            ProductAnalyticsRetentionCohortCriteria::new(
                                ProductAnalyticsBaseQuery::ProductAnalyticsEventQuery(
                                    Box::new(
                                        ProductAnalyticsEventQuery::new(
                                            ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
                                            ProductAnalyticsEventSearch::new().query("@type:view".to_string()),
                                        ),
                                    ),
                                ),
                                ProductAnalyticsRetentionTimeInterval::ProductAnalyticsRetentionCalendarTimeInterval(
                                    Box::new(
                                        ProductAnalyticsRetentionCalendarTimeInterval::new(
                                            ProductAnalyticsRetentionCalendarTimeIntervalType::CALENDAR,
                                            ProductAnalyticsCalendarInterval::new(
                                                ProductAnalyticsCalendarIntervalType::WEEK,
                                            )
                                                .alignment("monday".to_string())
                                                .quantity(1)
                                                .timezone("UTC".to_string()),
                                        ),
                                    ),
                                ),
                            ),
                            ProductAnalyticsRetentionEntity::USER_ID,
                            ProductAnalyticsRetentionReturnCondition::CONVERSION_ON_OR_AFTER,
                        )
                            .filters(
                                ProductAnalyticsRetentionFilters
                                ::new().audience_filters(
                                    ProductAnalyticsAudienceFilters::new()
                                        .accounts(vec![ProductAnalyticsAudienceAccountSubquery::new("".to_string())])
                                        .formula("u".to_string())
                                        .segments(
                                            vec![
                                                ProductAnalyticsAudienceSegmentSubquery::new(
                                                    "".to_string(),
                                                    Uuid::parse_str(
                                                        "00000000-0000-0000-0000-000000000000",
                                                    ).expect("invalid UUID"),
                                                )
                                            ],
                                        )
                                        .users(
                                            vec![
                                                ProductAnalyticsAudienceUserSubquery::new(
                                                    "u".to_string(),
                                                ).query("*".to_string())
                                            ],
                                        ),
                                ),
                            )
                            .return_criteria(
                                ProductAnalyticsRetentionReturnCriteria::new(
                                    ProductAnalyticsBaseQuery::ProductAnalyticsEventQuery(
                                        Box::new(
                                            ProductAnalyticsEventQuery::new(
                                                ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
                                                ProductAnalyticsEventSearch::new().query("@type:view".to_string()),
                                            ),
                                        ),
                                    ),
                                ).time_interval(
                                    ProductAnalyticsRetentionTimeInterval
                                    ::ProductAnalyticsRetentionCalendarTimeInterval(
                                        Box::new(
                                            ProductAnalyticsRetentionCalendarTimeInterval::new(
                                                ProductAnalyticsRetentionCalendarTimeIntervalType::CALENDAR,
                                                ProductAnalyticsCalendarInterval::new(
                                                    ProductAnalyticsCalendarIntervalType::WEEK,
                                                )
                                                    .alignment("monday".to_string())
                                                    .quantity(1)
                                                    .timezone("UTC".to_string()),
                                            ),
                                        ),
                                    ),
                                ),
                            ),
                    )
                        .columns(
                            vec![
                                ProductAnalyticsRetentionListColumn
                                ::new().field(
                                    ProductAnalyticsRetentionListColumnField::new().path("@usr.email".to_string()),
                                )
                            ],
                        )
                        .limit(100),
                    1756857600000,
                ),
                ProductAnalyticsRetentionListRequestType::RETENTION_LIST_REQUEST,
            ),
        );
    let mut configuration = datadog::Configuration::new();
    configuration.set_unstable_operation_enabled("v2.QueryProductAnalyticsRetentionList", true);
    let api = ProductAnalyticsAPI::with_config(configuration);
    let resp = api.query_product_analytics_retention_list(body).await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=rust) and then save the example to `src/main.rs` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
##### 

```typescript
/**
 * List the entities behind a retention cell returns "OK" response
 */

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.queryProductAnalyticsRetentionList"] =
  true;
const apiInstance = new v2.ProductAnalyticsApi(configuration);

const params: v2.ProductAnalyticsApiQueryProductAnalyticsRetentionListRequest =
  {
    body: {
      data: {
        attributes: {
          from: 1756425600000,
          query: {
            columns: [
              {
                field: {
                  path: "@usr.email",
                },
              },
            ],
            computationScope: {
              cohortTarget: {
                type: "index",
                value: 0,
              },
              returnPeriodTarget: {
                type: "index",
                value: 0,
              },
              type: "cell",
            },
            limit: 100,
            search: {
              cohortCriteria: {
                baseQuery: {
                  dataSource: "product_analytics",
                  search: {
                    query: "@type:view",
                  },
                },
                timeInterval: {
                  type: "calendar",
                  value: {
                    alignment: "monday",
                    quantity: 1,
                    timezone: "UTC",
                    type: "week",
                  },
                },
              },
              filters: {
                audienceFilters: {
                  accounts: [
                    {
                      name: "",
                    },
                  ],
                  formula: "u",
                  segments: [
                    {
                      name: "",
                      segmentId: "00000000-0000-0000-0000-000000000000",
                    },
                  ],
                  users: [
                    {
                      name: "u",
                      query: "*",
                    },
                  ],
                },
              },
              retentionEntity: "@usr.id",
              returnCondition: "conversion_on_or_after",
              returnCriteria: {
                baseQuery: {
                  dataSource: "product_analytics",
                  search: {
                    query: "@type:view",
                  },
                },
                timeInterval: {
                  type: "calendar",
                  value: {
                    alignment: "monday",
                    quantity: 1,
                    timezone: "UTC",
                    type: "week",
                  },
                },
              },
            },
          },
          to: 1756857600000,
        },
        type: "retention_list_request",
      },
    },
  };

apiInstance
  .queryProductAnalyticsRetentionList(params)
  .then((data: v2.ProductAnalyticsRetentionListResponse) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));
```

#### Instructions

First [install the library and its dependencies](https://docs.datadoghq.com/api/latest.md?code-lang=typescript) and then save the example to `example.ts` and run following commands:
    DD_SITE="datadoghq.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"
{% /tab %}
