# 变现统计数据 API

> 使用变现统计数据 API 在程序中以 CSV 格式访问广告效果数据，从而创建自定义报告并分析。

使用变现统计数据 API 直接以 CSV 格式获取变现数据。该 API 可获取开发者后台提供的统计数据，不过您也可以使用该 API 以编程方式拉取数据，供自己使用。

> **Important:**
>
> 聚合合作伙伴需要 Unity API 密钥才能收集 Unity Ads 平台的准确报告。如果已在聚合集成中使用了已弃用的 Applifier 统计数据 API，请在迁移到变现统计数据 API 之前咨询您的聚合平台。请注意，仍然可以使用变现统计数据 API 来 ping Unity 的广告平台以便直接报告数据。所有非聚合客户都可以安全迁移到新的 API。

## 身份验证##authentication

> **Note:**
>
> 变现统计数据 API 需要您的 Organization ID（组织 ID），该 ID 将在转移项目时更改。

> **Note:**
>
> 转移项目会更改 Organization ID（组织 ID），这是访问变现统计数据 API 所必需的。

终端会使用来自 [Unity Monetization（变现）后台](https://cloud.unity.com/monetization)的 API 密钥。请从二级导航菜单中选择 **Setup（设置）**> **API Access（API 访问）**，然后从 \*\*Monetization Stats API Access（变现统计数据 API 访问）\*\*部分复制 API 密钥，如果不存在，则选择 **Create API Key（创建 API 密钥）**。

> **Note:**
>
> 变现统计数据 API 为每个用户生成一个唯一的密钥。为了实现聚合集成，任何个人的密钥都适用于整个组织。

必须提供 API 密钥作为 `"apikey=<token>"` 查询参数，或使用身份验证标头 `"Authorization: Token <token>"`。重定向 URL 将获取数据。这是受到所有 HTTP 客户端支持的标准 HTTP 行为。

如果身份验证失败，身份验证服务器使用 HTTP/2 错误代码以及正文中的消息进行响应。例如：

```http
400 {"errors":[{"msg":"access token required"}]}
```

## 请求格式##request-format

要从 Unity Ads 服务获取统计数据，请使用以下 [GET 请求](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#request_methods)，其中的 `<organizationId>` 表示您的 Unity 组织的 [Organization Core ID（组织核心 ID）](https://cloud.unity.com/monetization)：

```http
GET
https://monetization.api.unity.com/stats/v1/operate/organizations/<organizationId>
```

### 查询参数##query-parameters

此 API 支持各种拆分数据的方法。有些对于实现成功请求必不可少。

| **参数**    | **描述**                                                                                                            | **必需？**                      | **注意**                            |
| --------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------- | --------------------------------- |
| `apikey`  | 从 Monetization（变现）后台获取的 API 身份验证密钥。                                                                               | 否。改用 Authentication（身份验证）标头。 | 不适用。                              |
| `fields`  | 这是一个以逗号分隔的列表，用于定义可用字段的列：- `adrequest_count`
- `start_count`
- `view_count`
- `available_sum`
- `revenue_sum`      | 是                            | 不适用。                              |
| `groupBy` | 这是一个以逗号分隔的列表，用于扩展行，按以下字段拆分数据：- `placement`（按 Ad Unit ID（广告单元 ID）拆分数据）
- `country`
- `platform`
- `game` (game ID) | 否                            | 不适用。                              |
| `scale`   | 这是一个按时间维度拆分数据的值。以 00:00 UTC 划分每天。支持的选项包括：- `hour`
- `day`
- `week`
- `month`
- `year`
- `all`                     | 是                            | 不适用。                              |
| `start`   | 数据集的开始时间，采用 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 格式。                                                | 是                            | 不适用。                              |
| `end`     | 数据集的结束时间，采用 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 格式。                                                | 是                            | 不适用。                              |
| `gameIds` | 这是一个以逗号分隔的列表，其中包含源 Game ID（游戏 ID），用于过滤结果。                                                                         | 否                            | 要获取源 ID，可以使用 `groupBy=game` 发出请求。 |

此 API 支持返回 CSV 或 JSON 文件。请在 `"Accept"` 标头中指定输出格式，如下所示：

* 对于 CSV，使用 `"Accept: text/csv"`。
* 对于 JSON，使用 `"Accept: application/json"`。

以下是使用真实参数（占位的 Organization Core ID（组织核心 ID）和 API 密钥除外）的示例请求：

```http
curl
https://monetization.api.unity.com/stats/v1/operate/organizations/:organizationId?groupBy=country,placement,platform,game&fields=adrequest_count,available_sum,revenue_sum,start_count,view_count&scale=hour&start=2020-05-01T00:00:00Z&end=2020-06-01T23:59:00Z&apikey=:apiKeyValue -H "Accept: text/csv" --output stats.csv
```

> **Note:**
>
> 在多个维度上同时拆分数据会导致 CSV 呈指数级增长，这可能会造成某些大型数据集超时。如果服务器处理请求的时间超过 60 秒，则请求会超时。

### 请求状态代码##request-status-codes

终端会返回以下表明请求结果的状态代码：

| **代码** | **描述**                           |
| ------ | -------------------------------- |
| `200`  | 请求已成功。                           |
| `400`  | 查询中省略了 `organizationId` 或其他必需参数。 |
| `401`  | 请求中缺少 API 密钥或该 API 密钥无效。         |
| `404`  | 未找到组织。                           |
| `408`  | 请求已超时。                           |
| `429`  | 超出请求速率限制。                        |
| `500`  | 由于未知原因而导致请求失败。                   |
| `503`  | 服务不可用。                           |
