# HTTP API

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

Raw HTTP API を使用して、スケジュール設定を管理できます。スケジュール設定をデプロイすることにより、設定した時刻または反復的な瞬間にイベントを発行するスケジュールを作成します。

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

[Scheduler Admin API](https://services.docs.unity.com/scheduler-admin/v1/) のドキュメントには、スケジュールの作成、読み取り、削除などの管理操作の詳細な説明が記載されています。

ドキュメントには、認証、エンドポイント、およびリクエストとレスポンスの形式に関する情報が、例とともに記載されています。これらを OpenAPI 形式でダウンロードし、独自の自動化を設定するために使用できます。

API を使用するには、[サービスアカウント](../../authentication) を使用して認証します。

### Authorization ヘッダー##authorization-header

リクエストを認証するには、[Basic 認証](../../authentication#authenticating-trusted-clients-basic-authentication) を使用します。サービスアカウントと base64 エンコード `<KEY_ID>:<SECRET_KEY>` を作成し、それを `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`: `type` フィールドに応じて cron 形式または RFC3339 タイムスタンプでのスケジュール設定。
* `payloadVersion`: ペイロードのバージョン。
* `payload`: パラメーターを Cloud Code スクリプトまたはモジュールに転送するためにイベントペイロードとして使用される `JSON` オブジェクト。

デプロイしたすべてのスケジュールをプレビューするには、以下のリクエストを送信します。

```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": ""
}
```

クエリパラメーターを設定してページ処理を使用することもできます。例えば、最初の 2 つの設定を取得するには、以下のリクエストを送信します。

```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>'
```

空のレスポンスは削除に成功したことを示します。
