---
lang: ja
path: api-reference/rtc-api-server/channel-api
labels: APIリファレンス/Room API ／ Channel API/Channel API (非推奨)
metaTitle: Channel API ｜ APIリファレンス ｜ SkyWay（スカイウェイ）
---

# SkyWay Channel API

SkyWay Channel API は、SkyWay の Channel の作成と取得を行うことができるサーバーサイド向けの API です。API は [JSON-RPC 2.0](https://www.jsonrpc.org/specification) に準拠しています。

> 類似するサーバーサイド向け API である [SkyWay Room API](/ja/docs/api-reference/rtc-api-server/room-api) のリリースに伴い、SkyWay Channel API は非推奨とさせていただきました。今後は SkyWay Room API をご利用ください。
>
> SkyWay Channel API から SkyWay Room API への移行については[移行ドキュメント](/ja/docs/cookbook/rtc-api-server/migrate-channel-api-to-room-api/)をご参照ください。

## API エンドポイント

```
https://channel.skyway.ntt.com/v1/json-rpc
```

HTTP `POST` メソッドでリクエストを行ってください。  

## 認証

リクエストの Authorization ヘッダーに SkyWay Admin Auth Token を入れる必要があります。`YOUR_SKYWAY_ADMIN_AUTH_TOKEN` は生成した SkyWay Admin Auth Token で置き換えてください。

```
Authorization: Bearer YOUR_SKYWAY_ADMIN_AUTH_TOKEN
```

SkyWay Admin Auth Token の詳細については [SkyWay Admin Auth Token のドキュメント](/ja/docs/user-guide/authentication/skyway-admin-auth-token/)を参照してください。

## エラーレスポンスについて

エラーレスポンスのレスポンスボディに含まれる `error.code` は [JSON-RPC 2.0](https://www.jsonrpc.org/specification) の Error object で定義されているエラーコードのほか、SkyWay Channel API として以下のコードを定義しています。

|code|説明|
|---|---|
|401|	SkyWay Admin Auth Token が不正な場合|
|404|	リソースが見つからなかった場合|
|409|	すでにリソースが存在する場合|
|429| Free プランをご利用のプロジェクトで <br> 月次の接続回数制限を超過している場合|


## findChannel

id または name から Channel を取得します。id と name の両方が指定された場合は id によって Channel を取得します。


### リクエストボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` を指定する|
|id|string \| integer |✔| 任意の値を指定する。レスポンスボディにはリクエストボディで指定した id の値が入る |
|method|string|✔|`findChannel` を指定する|
|params|object|✔|Channel の id または name を指定する（id あるいは name のいずれかは必須）|
|params.id|string (UUID v4) ||Channel の id を指定する|
|params.name|string||Channel の name を指定する|

例 1. id `7e19cb20-fc79-4d2f-bf29-d498ff76299a` の Channel を id から取得する場合のリクエストボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "findChannel",
  "params": {
    "id": "7e19cb20-fc79-4d2f-bf29-d498ff76299a"
  }
}
```

例 2. name `sample-channel` の Channel を name から取得する場合のリクエストボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "findChannel",
  "params": {
    "name": "sample-channel"
  }
}
```

### レスポンスボディ

#### 正常系

レスポンスボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` が入る|
|id|string \| integer |✔| リクエストボディで指定した id の値が入る |
|result|object|✔||
|result.channel|Channel|✔|Channel 情報を表すオブジェクト|

Channel オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Channel を一意に特定する値|
|name|string ||アプリケーション内で Channel を一意に特定する値|
|members|Member[]|✔|Member 情報を表すオブジェクトの配列|
|publications|Publication[]|✔|Publication 情報を表すオブジェクトの配列|
|subscriptions|Subscription[]|✔|Subscription 情報を表すオブジェクトの配列|
|metadata|string|||

Member オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Member を一意に特定する値|
|name|string ||Channel 内で Member を一意に特定する値|
|type|string|✔|`person` または `bot` が入る|
|subtype|string||`SFU` が入る|
|metadata|string|||

Publication オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Publication を一意に特定する値|
|publisherId|string (UUID v4)|️✔|publish している Member の id|
|contentType|string |✔|`AUDIO`、`VIDEO` または `DATA` が入る|
|isEnabled|boolean|✔|Publication が有効の場合 `true`、そうでなければ `false` が入る|
|originId|string||forwarding されている Publication の id|
|originPublisherId|string||forwarding されている Publication を publish している Member の id|
|metadata|string|||
|type|string||`P2P` または `SFU` が入る|

Subscription オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Subscription を一意に特定する値|
|publicationId|string (UUID v4)|️✔|subscribe している Publication の id|
|subscriberId|string |✔|subscribe している Member の id|

例

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "channel": {
      "id": "7e19cb20-fc79-4d2f-bf29-d498ff76299a",
      "name": "sample-channel",
      "members": [
        {
          "id": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "type": "person",
          "name": "publisher-user"
        },
        {
          "id": "82e31b82-b391-4f84-924a-ca1e89f1a037",
          "type": "person",
          "name": "subscriber-user"
        },
        {
          "id": "e5782c43-d1f6-4e27-b8f0-4e23269f48d2",
          "type": "bot",
          "subtype": "SFU"
        }
      ],
      "publications": [
        {
          "id": "f124ab4a-c3c6-40f1-800d-889c6c664924",
          "publisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "contentType": "AUDIO",
          "isEnabled": true,
          "type": "P2P",
        },
        {
          "id": "cbb6f98e-2e29-4b3c-a17c-c2cc76c54182",
          "publisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "contentType": "VIDEO",
          "isEnabled": true,
          "type": "SFU"
        },
        {
          "id": "81c0c1c0-7ec2-4b71-ba79-15033954de14",
          "publisherId": "e5782c43-d1f6-4e27-b8f0-4e23269f48d2",
          "contentType": "VIDEO",
          "originId": "cbb6f98e-2e29-4b3c-a17c-c2cc76c54182",
          "originPublisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "isEnabled": true,
          "type": "SFU",
        }
      ],
      "subscriptions": [
        {
          "id": "bbc6ac3c-6d13-44ad-9f66-251974bb2635",
          "publicationId": "81c0c1c0-7ec2-4b71-ba79-15033954de14",
          "subscriberId": "82e31b82-b391-4f84-924a-ca1e89f1a037"
        }
      ]
    }
  }
}

```

#### 異常系

例 1. 認証に失敗した場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 401,
    "message": "Verify admin token failed"
  }
}
```

例 2. 指定した id の Channel が存在しなかった場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 404,
    "message": "Channel '7e19cb20-fc79-4d2f-bf29-d498ff76299a' not found"
  }
}
```

例 3. 指定した name の Channel が存在しなかった場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 404,
    "message": "Channel with name 'sample-channel' not found"
  }
}
```

例 4. Free プランをご利用のプロジェクトで接続回数制限※を超過している場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 429,
    "message": "Project usage limit has been exceeded"
  }
}
```
※接続回数の上限は[プランの詳細](https://skyway.ntt.com/ja/pricing/#plan)の接続料をご確認ください。

## createChannel

Channel を新規作成します。作成時に name や metadata を指定することができます。

### リクエストボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` を指定する|
|id|string \| integer |✔| 任意の値を指定する。レスポンスボディにはリクエストボディで指定した id の値が入る |
|method|string|✔|`createChannel` を指定する|
|params|object|✔|Channel の name または metadata を指定できる|
|params.name|string  ||Channel の name を指定する。アプリケーション内で一意である必要がある|
|params.metadata|string||Channel の metadata を指定する|

例

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "createChannel",
  "params": {
    "name": "sample-channel"
  }
}
```

### レスポンスボディ

#### 正常系

レスポンスボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` が入る|
|id|string \| integer |✔| リクエストボディで指定した id の値が入る |
|result|object|✔||
|result.channel|Channel|✔|Channel 情報を表すオブジェクト|

Channel オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Channel を一意に特定する値|
|name|string ||アプリケーション内で Channel を一意に特定する値|
|metadata|string|||

例

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "channel": {
      "id": "7e19cb20-fc79-4d2f-bf29-d498ff76299a",
      "name": "sample-channel"
    }
  },
}
```

#### 異常系

例 1. 認証に失敗した場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 401,
    "message": "Verify admin token failed"
  }
}
```

例 2. 指定した name の Channel がすでに存在していた場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 409,
    "message": "Channel with name 'sample-channel' already exists"
  }
}
```

例 3. Free プランをご利用のプロジェクトで接続回数制限※を超過している場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 429,
    "message": "Project usage limit has been exceeded"
  }
}
```
※接続回数の上限は[プランの詳細](https://skyway.ntt.com/ja/pricing/#plan)の接続料をご確認ください。

## findOrCreateChannel

指定された name の Channel が存在すればその Channel 情報を取得し、そうでなければ新規作成します。

### リクエストボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` を指定する|
|id|string \| integer |✔| 任意の値を指定する。レスポンスボディにはリクエストボディで指定した id の値が入る |
|method|string|✔|`findOrCreateChannel` を指定する|
|params|object|✔|Channel の name および metadata を指定する（name は必須）|
|params.name|string  |✔|Channel の name を指定する|
|params.metadata|string||Channel の metadata を指定する|

例

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "findOrCreateChannel",
  "params": {
    "name": "sample-channel"
  }
}
```

### レスポンスボディ

#### 正常系

レスポンスボディ

|プロパティ|形式|必須|説明|
|---|---|---|---|
|jsonrpc|string|️✔|`2.0` が入る|
|id|string \| integer |✔| リクエストボディで指定した id の値が入る |
|result|object|✔||
|result.channel|Channel|✔|Channel 情報を表すオブジェクト|

Channel オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Channel を一意に特定する値|
|name|string ||アプリケーション内で Channel を一意に特定する値|
|members|Member[]|✔|Member 情報を表すオブジェクトの配列|
|publications|Publication[]|✔|Publication 情報を表すオブジェクトの配列|
|subscriptions|Subscription[]|✔|Subscription 情報を表すオブジェクトの配列|
|metadata|string|||

Member オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Member を一意に特定する値|
|name|string ||Channel 内で Member を一意に特定する値|
|type|string|✔|`person` または `bot` が入る|
|subtype|string||`SFU` が入る|
|metadata|string|||

Publication オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Publication を一意に特定する値|
|publisherId|string (UUID v4)|️✔|publish している Member の id|
|contentType|string |✔|`AUDIO`、`VIDEO` または `DATA` が入る|
|isEnabled|boolean|✔|Publication が有効の場合 `true`、そうでなければ `false` が入る|
|originId|string||forwarding されている Publication の id|
|originPublisherId|string||forwarding されている Publication を publish している Member の id|
|metadata|string|||
|type|string||`P2P` または `SFU` が入る|

Subscription オブジェクト

|プロパティ|形式|必須|説明|
|---|---|---|---|
|id|string (UUID v4)|️✔|Subscription を一意に特定する値|
|publicationId|string (UUID v4)|️✔|subscribe している Publication の id|
|subscriberId|string |✔|subscribe している Member の id|

例

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "channel": {
      "id": "7e19cb20-fc79-4d2f-bf29-d498ff76299a",
      "name": "sample-channel",
      "members": [
        {
          "id": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "type": "person",
          "name": "publisher-user"
        },
        {
          "id": "82e31b82-b391-4f84-924a-ca1e89f1a037",
          "type": "person",
          "name": "subscriber-user"
        },
        {
          "id": "e5782c43-d1f6-4e27-b8f0-4e23269f48d2",
          "type": "bot",
          "subtype": "SFU"
        }
      ],
      "publications": [
        {
          "id": "f124ab4a-c3c6-40f1-800d-889c6c664924",
          "publisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "contentType": "AUDIO",
          "isEnabled": true,
          "type": "P2P",
        },
        {
          "id": "cbb6f98e-2e29-4b3c-a17c-c2cc76c54182",
          "publisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "contentType": "VIDEO",
          "isEnabled": true,
          "type": "SFU"
        },
        {
          "id": "81c0c1c0-7ec2-4b71-ba79-15033954de14",
          "publisherId": "e5782c43-d1f6-4e27-b8f0-4e23269f48d2",
          "contentType": "VIDEO",
          "originId": "cbb6f98e-2e29-4b3c-a17c-c2cc76c54182",
          "originPublisherId": "16548baf-e4b8-4137-afc0-e8e329837a39",
          "isEnabled": true,
          "type": "SFU"
        }
      ],
      "subscriptions": [
        {
          "id": "bbc6ac3c-6d13-44ad-9f66-251974bb2635",
          "publicationId": "81c0c1c0-7ec2-4b71-ba79-15033954de14",
          "subscriberId": "82e31b82-b391-4f84-924a-ca1e89f1a037"
        }
      ]
    }
  }
}

```

#### 異常系

例 1. 認証に失敗した場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 401,
    "message": "Verify admin token failed"
  }
}
```

例 2. Free プランをご利用のプロジェクトで接続回数制限※を超過している場合のレスポンスボディ

```json
{
  "jsonrpc": "2.0",
  "id": 0,
  "error": {
    "code": 429,
    "message": "Project usage limit has been exceeded"
  }
}
```
※接続回数の上限は[プランの詳細](https://skyway.ntt.com/ja/pricing/#plan)の接続料をご確認ください。
