# HTTP API

> Manage Cloud Code modules using raw HTTP APIs and the Admin API.

Raw HTTP API を使用して、Cloud Code モジュールを管理できます。

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

* [Admin API](https://services.docs.unity.com/cloud-code-admin/v1#tag/cloud-code-modules) のドキュメントには、モジュールの作成、読み取り、更新、削除などの管理操作の詳細な説明が記載されています。
* [Client API](https://services.docs.unity.com/cloud-code/v1#tag/cloud-code/operation/runmodule) のドキュメントには、モジュールの実行などのクライアント側操作の詳細な説明が記載されています。

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

Admin API を使用するには、[サービスアカウント](https://services.docs.unity.com/docs/service-account-auth/) を使用して認証します。

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

リクエストを認証するには、[Basic 認証](../authentication#cloud-code-admin-api-basic-authentication)) を使用します。サービスアカウントと base64 エンコード `<KEY_ID>:<SECRET_KEY>` を作成し、それを `Authorization` ヘッダーの値として使用します。

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

### モジュールのデプロイ##deploy-modules

モジュールをデプロイする前に、それを作成する必要があります。API を使用してモジュールをデプロイする場合は、[手動ワークフロー](../manual-workflow) に従うことをお勧めします。以下のリクエストを送信することで、モジュールの zip をリモート環境にデプロイできます。

```bash
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \
--form 'name="Module"' \
--form 'tags="{}"' \
--form 'language="CS"' \
--form 'file=@"Module.zip"'
```

> **Note:**
>
> **ノート**: ストレージ制限が適用されます。[Cloud Code 制限](../../reference/limits#cloud-code-c-modules) を確認してください。

モジュールをデプロイしたら、モジュールエンドポイントの呼び出しを開始できます。

### モジュールの更新##update-modules

以下のリクエストを送信することで、モジュールファイル、そのタグ、またはその両方を更新できます。

```bash
curl--request PATCH 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules/<MODULE_NAME>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \
--form 'tags="{}"' \
--form 'file=@"Module.zip"'
```

モジュールエンドポイントの呼び出しでは、更新されたモジュールファイルが使用されます。

### モジュールの取得##retrieve-modules

以下のリクエストを送信することで、デプロイしたモジュールを調べることができます。

```bash
curl --location 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules/<MODULE_NAME>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

レスポンスは以下のようになります:

```json
{
  "name": "string",
  "language": "CS",
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "signedDownloadURL": "string",
  "dateCreated": "2022-04-05T09:12:13Z",
  "dateModified": "2022-04-05T09:12:13Z",
  "endpoints": {
    "ModuleEndpoint": {
      "parameters": {
        "parameter1": "System.String",
        "parameter2": "System.String"
      },
      "returnType": "System.Void"
    }
  },
  "hasError": true,
  "errorMessage": "error message"
}
```

レスポンスには以下のフィールドが含まれます。

| フィールド               | 説明                                                                                                |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| `name`              | モジュールの名前。                                                                                         |
| `language`          | モジュールの言語。Cloud Code モジュールでサポートされるのは C# のみです。                                                      |
| `tags`              | キーと値のペアとして定義されたカスタムユーザータグ。                                                                        |
| `signedDownloadURL` | モジュール zip ファイルをダウンロードするための URL。                                                                   |
| `dateCreated`       | モジュールが作成された日付。                                                                                    |
| `dateModified`      | モジュールが最後に変更された日付。                                                                                 |
| `endpoints`         | モジュールに定義されたエンドポイントのリスト (キーと値のペアとして定義されています)。各エンドポイントには、パラメーター (キーと値のペア) のリストとエンドポイントの戻り値の型が含まれます。 |
| `hasError`          | これが表示されるのは、エンドポイント生成のエラーまたはモジュール内のエラーなど、モジュールにエラーがある場合です。                                         |
| `errorMessage`      | モジュールにエラーがある場合のエラーメッセージ。これが含まれるのは、モジュールにエラーがある場合のみです。                                             |

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

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

レスポンスは以下のようになります:

```json
{
    "results": [
        {
            "name": "Module",
            "language": "CS",
            "signedDownloadURL": "example.com",
            "dateCreated": "2023-04-24T14:06:02Z",
            "dateModified": "2023-04-24T14:06:02Z"
        },
        {
            "name": "AnotherModule",
            "language": "CS",
            "signedDownloadURL": "example.com",
            "dateCreated": "2023-06-20T10:54:55Z",
            "dateModified": "2023-06-20T13:55:22Z"
        },
        {
            "name": "OtherModule",
            "language": "CS",
            "signedDownloadURL": "example.com",
            "dateCreated": "2023-03-28T10:18:21Z",
            "dateModified": "2023-03-28T10:18:21Z"
        }
    ],
    "links": {
        "next": null
    },
    "nextPageToken": ""
}
```

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

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

レスポンスは以下のようになります。

```json
{
    "results": [
        {
            "name": "PostmanTest",
            "language": "CS",
            "signedDownloadURL": "example.com",
            "dateCreated": "2023-04-24T14:06:02Z",
            "dateModified": "2023-04-24T14:06:02Z"
        },
        {
            "name": "TestModule",
            "language": "CS",
            "signedDownloadURL": "example.com",
            "dateCreated": "2023-06-20T10:54:55Z",
            "dateModified": "2023-06-20T13:55:22Z"
        }
    ],
    "links": {
        "next": "/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules?after=<TOKEN>&limit=2"
    },
    "nextPageToken": "<TOKEN>"
}
```

次のリンクをたどると、次の 2 つのモジュールを取得できます。

### モジュールの削除##delete-modules

以下のリクエストを送信することで、モジュールを削除できます。

```bash
curl --request DELETE 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules/<MODULE_NAME>' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

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

### モジュールの API の仕様##modules-api-spec

所定のモジュールの Open API 仕様を取得するには、以下のリクエストを送信します。

```bash
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/modules/<MODULE_NAME>/spec' \
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
```

例については、[Admin API](https://services.docs.unity.com/cloud-code-admin/v1/index.html#tag/cloud-code-modules/operation/getapispec) の仕様を参照してください。

レスポンスの mime タイプは text/html 形式です。yaml 形式の openAPI 仕様をダウンロードするには、Unity Dashboard の Modules (モジュール) ページから仕様をダウンロードします。詳細については、[Unity Dashboard の使用](./unity-dashboard.md) を参照してください。
