# HTTP API

> Create and manage schedule configurations that emit events at set or recurring moments using the REST API.

您可以使用原始 HTTP API 来管理计划配置。部署一个计划配置会创建一个计划以在设定时刻或重复时刻发出事件。

## 使用 API##using-the-api

[Scheduler Admin API](https://services.docs.unity.com/scheduler-admin/v1/) 文档包含管理操作（例如创建、读取和删除计划）的详细描述。

文档中包含有关身份验证、终端以及请求和响应格式的信息，并提供相关示例。您可以采用 OpenAPI 格式下载它们，并参考它们来设置您自己的自动化过程。

要使用 API，请使用[服务帐户](../../authentication)进行身份验证。

### Authorization 标头##authorization-header

要对请求进行身份验证，请使用[基本身份验证](../../authentication#authenticating-trusted-clients-basic-authentication)。创建一个服务帐户，对 `<KEY_ID>:<SECRET_KEY>` 进行 base64 编码，然后将其用作 `Authorization` 标头的值。

```text
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \
```

### 部署计划##deploy-schedules

您可以通过发送以下请求将一个定期计划配置部署到远程环境：

```bash
curl 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \
--data '{
  "name": "Example Recurring every hour",
  "eventName": "example-event",
  "type": "recurring",
  "schedule": "0 * * * *",
  "payloadVersion": 1,
  "payload": "{}"
}'
```

成功的响应中包含计划 ID。例如：

```json
{
    "id": "f58a376c-2d4d-50a9-a231-61477fdaf5da"
}
```

您可以使用此 ID 获取计划配置或将其删除。

部署计划配置后，便会在指定时间自动触发计划，并将事件发送到 Triggers 服务。

### 获取计划##retrieve-schedules

您可以通过发送以下请求来检查已部署的计划：

```bash
curl 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs/<CONFIG_ID>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

响应可能如下所示：

```json
{
  "id": "string",
  "name": "Example Recurring every hour",
  "eventName": "example-event",
  "type": "recurring",
  "schedule": "0 * * * *",
  "payloadVersion": 1,
  "payload": "{}"
}
```

响应包含以下字段：

* `id`：计划配置 ID。
* `name`：计划配置名称。
* `eventName`：触发计划时发出的事件的名称。
* `type`：计划配置的类型。可以是 `recurring` 或 `one-time`。
* `schedule`：cron 格式的计划配置，或 RFC3339 时间戳，具体取决于 `type` 字段。
* `payloadVersion`：有效负载的版本。
* `payload`：用作事件有效负载的 `JSON` 对象，旨在将参数转发到 Cloud Code 脚本或模块。

要预览已部署的所有计划，请发送以下请求：

```bash
curl 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

响应可能如下所示：

```json
{
  "configs": [
    {
      "id": "a0fa56fd-9763-5590-9452-769be3e6c5bb",
      "name": "Example One Time 2",
      "eventName": "example-event",
      "type": "one-time",
      "schedule": "2024-01-14T07:20:50Z",
      "payloadVersion": 1,
      "payload": "{}"
    },
    {
      "id": "f58a376c-2d4d-50a9-a231-61477fdaf5da",
      "name": "Example Recurring every hour",
      "eventName": "example-event",
      "type": "recurring",
      "schedule": "0 * * * *",
      "payloadVersion": 1,
      "payload": "{}"
    },
    {
      "id": "fb3e6636-1a99-5a82-97b4-74b5f6678bb2",
      "name": "Example One Time",
      "eventName": "example-event",
      "type": "one-time",
      "schedule": "2024-01-12T07:20:50Z",
      "payloadVersion": 1,
      "payload": "{}"
    }
  ],
  "after": ""
}
```

您还可以通过设置查询参数来使用分页。例如，要获取前两个配置，请发送以下请求：

```bash
curl 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs?limit=2' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

然后，响应将如下所示：

```json
{
  "configs": [
    {
      "id": "f58a376c-2d4d-50a9-a231-61477fdaf5da",
      "name": "Example Recurring every hour",
      "eventName": "example-event",
      "type": "recurring",
      "schedule": "0 * * * *",
      "payloadVersion": 1,
      "payload": "{}"
    },
    {
      "id": "a0fa56fd-9763-5590-9452-769be3e6c5bb",
      "name": "Example One Time 2",
      "eventName": "example-event",
      "type": "one-time",
      "schedule": "2024-01-14T07:20:50Z",
      "payloadVersion": 1,
      "payload": "{}"
    }
  ],
  "after": "<TOKEN>"
}
```

使用 `after` 令牌，您可以获得下一页结果。例如：

```bash
curl 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs?limit=2&after=<TOKEN>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

返回最后一个计划：

```json
{
    "configs": [
        {
            "id": "fb3e6636-1a99-5a82-97b4-74b5f6678bb2",
            "name": "Example One Time",
            "eventName": "example-event",
            "type": "one-time",
            "schedule": "2024-01-12T07:20:50Z",
            "payloadVersion": 1,
            "payload": "{}"
        }
    ],
    "after": ""
}
```

### 删除计划##delete-schedules

您可以通过发送以下请求来删除计划配置：

```bash
curl --request DELETE 'https://services.api.unity.com/scheduler/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/configs/<CONFIG_ID>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

空的响应表示删除成功。
