# デプロイメント管理API

このページでは、デプロイメント一覧の取得、デプロイメントのステータス照会、デプロイメントの開始・停止、新規デプロイメントの作成に関するAPIの使い方を説明します。

## デプロイメント一覧の取得

### URI

`GET /deployments`

::: tip
このメソッドは60分間に60回までしかリクエストできません。
:::

### リクエストメッセージ

なし

### レスポンスメッセージ

- **200:**

| 名前           | 型     | 説明                                                         |
| -------------- | ------ | ------------------------------------------------------------ |
| connections    | Number | デプロイメントの接続数                                       |
| createAt       | String | デプロイメントの作成日時                                     |
| deploymentID   | String | 一意のデプロイメントID                                       |
| deploymentName | String | デプロイメント名                                             |
| deploymentType | String | デプロイメントの種類："serverless"はサーバーレス版、"dedicated"は専用版を示します。 |
| platform       | String | デプロイメントのクラウドサービスプロバイダー                 |
| projectName    | String | デプロイメントに紐づくプロジェクト名                         |
| region         | String | デプロイメントが配置されているリージョン                     |
| status         | String | デプロイメントの現在の状態："running"、"starting"、"stopped"のいずれか |
| version        | String | デプロイメントのバージョン                                   |

- **401:** APIキー認証に失敗しました。
- **403:** APIキーにリクエストされたリソースへのアクセス権限がありません。
- **429:** リクエスト制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X GET {api}/deployments
```

### レスポンス例

```json
[
    {
        "connections": 1000,
        "createAt": "2024-11-21 02:51",
        "deploymentID": "mdfba81f",
        "deploymentName": "deployment-mdfba81f",
        "deploymentType": "serverless",
        "platform": "AWS",
        "projectName": "default",
        "region": "N. Virginia (us-east-1)",
        "status": "stopped",
        "version": "v5"
    },
    {
        "connections": 1000,
        "createAt": "2025-04-17 08:36",
        "deploymentID": "b1f77113",
        "deploymentName": "deployment-b1f77113",
        "deploymentType": "dedicated",
        "platform": "AWS",
        "projectName": "test",
        "region": "N. Virginia (us-east-1)",
        "status": "running",
        "version": "v5"
    }
]
```

## 特定デプロイメントのステータス確認

### URI

`GET /deployments/{deployment_id}`

::: tip

このメソッドは60分間に60回までしかリクエストできません。`{deployment_id}`はデプロイメント名ではなく、デプロイメントIDを指します。

:::

### リクエストメッセージ

なし

### レスポンスメッセージ

- **200:**

| 名前           | 型     | 説明                                                         |
| -------------- | ------ | ------------------------------------------------------------ |
| connections    | Number | デプロイメントの接続数                                       |
| createAt       | String | デプロイメントの作成日時                                     |
| deploymentID   | String | 一意のデプロイメントID                                       |
| deploymentName | String | デプロイメント名                                             |
| deploymentType | String | デプロイメントの種類（専用版の場合は"dedicated"）            |
| platform       | String | デプロイメントのクラウドサービスプロバイダー                 |
| region         | String | デプロイメントが配置されているリージョン                     |
| status         | String | デプロイメントの現在の状態："running"、"starting"、"stopped"のいずれか |

- **401:** APIキー認証に失敗しました。
- **403:** APIキーにリクエストされたリソースへのアクセス権限がありません。
- **404:** デプロイメントが見つかりません。
- **429:** リクエスト制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X GET {api}/deployments/w41b11c0
```

### レスポンス例

```json
{
    "connections": 1000,
    "createAt": "2024-07-22 05:32",
    "deploymentID": "w41b11c0",
    "deploymentName": "deployment-w41b11c0",
    "deploymentType": "dedicated",
    "platform": "AWS",
    "region": "N. Virginia (us-east-1)",
    "status": "running"
}
```

## デプロイメント停止

### URI

`POST /deployments/{deployment_id}/stop`

::: tip

このメソッドは60分間に5回までしかリクエストできません。`{deployment_id}`はデプロイメント名ではなく、デプロイメントIDを指します。この操作は専用版デプロイメントのみ利用可能です。

:::

### リクエストメッセージ

なし

### レスポンスメッセージ

- **201:**

| 名前           | 型     | 説明                                                         |
| -------------- | ------ | ------------------------------------------------------------ |
| deploymentID   | String | 一意のデプロイメントID                                       |
| deploymentName | String | デプロイメント名                                             |
| operation      | String | 操作の種類："stopping"は停止操作を示します                  |

- **401:** APIキー認証に失敗しました。
- **403:** APIキーにリクエストされたリソースへのアクセス権限がありません。
- **404:** デプロイメントが見つかりません。
- **422:** リクエストパラメータが不正です。
- **429:** リクエスト制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X POST {api}/deployments/w41b11c0/stop
```

### レスポンス例

```json
{
    "deploymentID": "w41b11c0",
    "deploymentName": "deployment-w41b11c0",
    "operation": "stopping"
}
```

## デプロイメント開始

### URI

`POST /deployments/{deployment_id}/start`

::: tip

このメソッドは60分間に5回までしかリクエストできません。`{deployment_id}`はデプロイメント名ではなく、デプロイメントIDを指します。この操作は専用版デプロイメントのみ利用可能です。

:::

### リクエストメッセージ

なし

### レスポンスメッセージ

- **201:**

| 名前           | 型     | 説明                                                         |
| -------------- | ------ | ------------------------------------------------------------ |
| deploymentID   | String | 一意のデプロイメントID                                       |
| deploymentName | String | デプロイメント名                                             |
| operation      | String | 操作の種類："starting"は開始操作を示します                  |

- **401:** APIキー認証に失敗しました。
- **403:** APIキーにリクエストされたリソースへのアクセス権限がありません。
- **404:** デプロイメントが見つかりません。
- **422:** リクエストパラメータが不正です。
- **429:** リクエスト制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X POST {api}/deployments/w41b11c0/start
```

### レスポンス例

```json
{
    "deploymentID": "w41b11c0",
    "deploymentName": "deployment-w41b11c0",
    "operation": "starting"
}
```

## デプロイメント作成

### URI

`POST /deployments`

::: tip

このメソッドは60分間に1回までしかリクエストできません。デプロイメントはデフォルトプロジェクトに作成されます。現時点ではEMQXのv5バージョンのみサポートしています。

:::

### リクエストメッセージ

| 名前           | 型     | 必須   | 説明                                                         |
| -------------- | ------ | ------ | ------------------------------------------------------------ |
| platform       | String | 必須   | デプロイメントをホストするクラウドプラットフォーム           |
| region         | String | 必須   | デプロイメントを作成するリージョン                           |
| connections    | Number | 必須   | デプロイメントの接続数。サーバーレス版は1,000接続、専用版は1,000〜10,000接続をサポート。 |
| deploymentType | String | 必須   | デプロイメントプラン。"serverless"または"dedicated"のいずれか。 |

::: warning サーバーレスデプロイメントのサポート状況

サーバーレスデプロイメントは現在、以下のプラットフォームとリージョンのみサポートしています：

- AWS：北米（us-east-1）、ヨーロッパ（eu-central-1）
- Google Cloud：アジア太平洋（asia-southeast1）

:::

::: tip サポートされているプラットフォームとリージョン

以下はサポートされているプラットフォーム、リージョン、および対応するデプロイメントタイプの一覧です：

| クラウドプラットフォーム | プラットフォームコード | リージョン名       | リージョンコード | サーバーレス対応 | 専用版対応 |
|---------------------------|------------------------|--------------------|------------------|------------------|------------|
| AWS                       | aws                    | N. Virginia        | us-east-1        | ✅               | ✅         |
|                           |                        | Ohio               | us-east-2        |                  | ✅         |
|                           |                        | N. California      | us-west-1        |                  | ✅         |
|                           |                        | Oregon             | us-west-2        |                  | ✅         |
|                           |                        | Ireland            | eu-west-1        |                  | ✅         |
|                           |                        | London             | eu-west-2        |                  | ✅         |
|                           |                        | Frankfurt          | eu-central-1     | ✅               | ✅         |
|                           |                        | Singapore          | ap-southeast-1   |                  | ✅         |
|                           |                        | Mumbai             | ap-south-1       |                  | ✅         |
|                           |                        | Hong Kong          | ap-east-1        |                  | ✅         |
|                           |                        | Tokyo              | ap-northeast-1   |                  | ✅         |
|                           |                        | Sydney             | ap-southeast-2   |                  | ✅         |
| Azure                     | azure                  | East US            | eastus           |                  | ✅         |
|                           |                        | West US 2          | westus2          |                  | ✅         |
|                           |                        | West US 3          | westus3          |                  | ✅         |
|                           |                        | West Europe        | westeurope       |                  | ✅         |
|                           |                        | Germany West Central | germanywestcentral |                | ✅         |
|                           |                        | North Europe       | northeurope      |                  | ✅         |
|                           |                        | Southeast Asia     | southeastasia    |                  | ✅         |
|                           |                        | Japan East         | japaneast        |                  | ✅         |
| Google Cloud              | gcp                    | South Carolina     | us-east1         |                  | ✅         |
|                           |                        | Oregon             | us-west1         |                  | ✅         |
|                           |                        | Iowa               | us-central1      |                  | ✅         |
|                           |                        | Frankfurt          | europe-west3     |                  | ✅         |
|                           |                        | Finland            | europe-north1    |                  | ✅         |
|                           |                        | Mumbai             | asia-south1      |                  | ✅         |
|                           |                        | Singapore          | asia-southeast1  | ✅               | ✅         |
|                           |                        | Taiwan             | asia-east1       |                  | ✅         |
|                           |                        | Tokyo              | asia-northeast1  |                  | ✅         |

:::

デプロイメントのエディションによって、対応する接続数やTPSの仕様が異なります。
:::: tabs
::: tab サーバーレスエディション

| 接続数       | TPS      |
|--------------|----------|
| 1,000        | 1,000    |

:::
::: tab 専用エディション

| 接続数       | TPS        |
|--------------|------------|
| 1,000        | 1,000      |
| 2,000        | 2,000      |
| 5,000        | 10,000     |
| 10,000       | 20,000     |

:::
::::

### レスポンスメッセージ

- **201:**

| 名前           | 型      | 説明                                                         |
| -------------- | ------- | ------------------------------------------------------------ |
| createAt       | String  | デプロイメントの作成日時                                     |
| deploymentID   | String  | 一意のデプロイメントID                                       |
| deploymentName | String  | デプロイメント名                                             |
| deploymentType | String  | デプロイメントの種類（"dedicated"または"serverless"）       |
| freeTrial      | Boolean | 無料トライアルかどうか                                       |
| platform       | String  | クラウドプラットフォームの識別子                             |
| ports          | Object  | 各プロトコル（MQTT、WebSocketなど）のポート設定             |
| projectID      | String  | このデプロイメントが属するプロジェクトのID（デフォルトプロジェクトの場合はnull） |
| region         | String  | クラウドリージョンの識別子                                   |
| regionLabel    | String  | リージョンの人間が読みやすい名称                             |
| spec           | Object  | デプロイメントの仕様（接続数、バージョンなど）               |
| status         | String  | デプロイメントの現在の状態（running、stopped、pending）      |
| subscription   | Boolean | サブスクリプションベースかどうか                             |
| userID         | String  | このデプロイメントの所有ユーザーID                           |

- **400:** 不正なリクエスト
- **401:** APIキー認証に失敗しました。
- **403:** APIキーにリクエストされたリソースへのアクセス権限がありません。
- **422:** リクエストパラメータが不正です。

### リクエスト例

```bash
curl -u key:secret -X POST {api}/deployments \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "aws",
    "region": "us-east-1",
    "connections": 1000,
    "deploymentType": "dedicated"
  }'
```

### レスポンス例

```json
{
    "createAt": "2025-04-17 15:30",
    "deploymentID": "i9d0961f",
    "deploymentName": "deployment-i9d0961f",
    "deploymentType": "dedicated",
    "freeTrial": false,
    "platform": "aws",
    "ports": {
        "1883": {
            "status": "running",
            "protocol": "mqtt"
        },
        "8083": {
            "status": "running",
            "protocol": "ws"
        },
        "8084": {
            "status": "running",
            "protocol": "wss"
        },
        "8883": {
            "status": "running",
            "protocol": "mqtts"
        }
    },
    "projectID": null,
    "region": "us-east-1",
    "regionLabel": "N. Virginia (us-east-1)",
    "spec": {
        "connections": 1000,
        "deploymentVersion": "v5",
        "freeTraffic": 100,
        "node": 2,
        "protection": false,
        "tps": 1000,
        "version": 5.2
    },
    "status": "pending",
    "subscription": false,
    "tls": null,
    "userID": "00000001"
}
```
