# プッシュ API

シグナリングで使用している WebSocket や DataChannel を活用できる API です。
この機能を使うことでアプリケーション側でプッシュの仕組みを用意する必要がなくなります。


## PushChannel

*バージョン 2.6.0 で追加。*

**x-sora-target**: Sora_20160711.PushChannel

指定したチャネル全員にプッシュ通知を送ります。

* - キー
  - 型
* - channel_id
  - string
* - data
  - object

data には全員に通知する値 (JSON object) を指定してください。
クライアントには data に指定した値 (JSON object) が送られます。

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20160711.PushChannel" \
    --json '{"channel_id":"sora","data":{"spam":"egg"}}' \
    | jq .
{
    "data": {
        "spam": "egg"
    },
    "type": "push"
}
```


## PushClient

*バージョン 2.6.0 で追加。*

**x-sora-target**: Sora_20160711.PushClient

指定したチャネルのクライアントにプッシュ通知を送ります。

* - キー
  - 型
* - channel_id
  - string
* - client_id
  - string
* - data
  - object

複数の接続に同一の `client_id` が指定されていた場合、複数の接続にプッシュ通知が送られます。

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20160711.PushClient" \
    --json '{"channel_id":"sora","client_id":"C0YTCRZM715BKATBXWFPKTYGRM","data":{"spam":"egg"}}' \
    | jq .
{
    "data": {
        "spam": "egg"
    },
    "type": "push"
}
```


## PushConnection

*バージョン 2.6.0 で追加。*

**x-sora-target**: Sora_20160711.PushConnection

指定したチャネルの接続にプッシュ通知を送ります。

* - キー
  - 型
* - channel_id
  - string
* - connection_id
  - string
* - data
  - object

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20160711.PushConnection" \
    --json '{"channel_id":"sora","connection_id":"C0YTCRZM715BKATBXWFPKTYGRM","data":{"spam":"egg"}}' \
    | jq .
{
    "data": {
        "spam": "egg"
    },
    "type": "push"
}
```


## PushChannelByRole

*バージョン 2020.3 で追加。*

**x-sora-target**: Sora_20201120.PushChannelByRole

指定したチャネルの指定したロールにプッシュ通知を送ります。

* - キー
  - 型
* - channel_id
  - string
* - role
  - string (sendrecv | sendonly | recvonly)
* - data
  - object

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20201120.PushChannelByRole" \
    --json '{"channel_id":"sora","role":"sendrecv","data":{"spam":"egg"}}' \
    | jq .
    {
        "data": {
            "spam": "egg"
        },
        "type": "push"
    }
```
