# テスト API

> **注意**
>
> テスト API はテスト目的のためだけに利用してください

## 概要

テスト API は意図的に発生させるのが難しい状況を API 経由で発生させるための API です。

## 設定

テスト API を利用するには `sora.conf` の [test_api](SORA_CONF.html#a2f020) を `true` に設定する必要があります。

デフォルトは `false` です。

## 注意

- テスト API は利便性を最優先にするため破壊的変更を積極的に行います


## GenerateCrashLog

**x-sora-target**: Sora_20380119.GenerateCrashLog

意図的に Sora のクラッシュログを発生させます。クラッシュログの監視のテストなどに利用してください。

この API はかならずステータスコード `500` を返します。

* - キー
  - 型
* - info
  - object

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20380119.GenerateCrashLog" \
    --json '{"info":{"spam":"egg"}}' \
    | jq .
```


## FailArchive

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

*バージョン 2024.2.0 で変更。*
クラスターに対応しました

**x-sora-target**: Sora_20380119.FailArchive

意図的に Sora の録画を失敗させます。 `archive.failed` ウェブフックを意図的に出力させたい場合に利用してください。

テストの利便性を考えランダムな値である `connection_id` ではなく、固定値として設定できる `client_id` を指定できるようにしています。

`client_id` は指定しなければ `connection_id` が設定されるので、
`client_id` を指定しない場合、 `client_id` に `connection_id` を指定しても動作します。

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

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20380119.FailArchive" \
    --json '{"channel_id":"sora","client_id":"test"}' \
    | jq .
```


## SendSignalingNotify

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

**x-sora-target**: Sora_20380119.SendSignalingNotify

指定した内容のシグナリング通知として送信します。シグナリング通知のテストなどに利用してください。

- 指定したチャネルの参加者全員に json に指定した値がそのまま通知されます
- クラスター機能を利用していた場合、API を実行したノードでのみ通知されます

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

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20380119.SendSignalingNotify" \
    --json '{"channel_id":"sora","json":{"type":"notify","event_type":"audio-streaming-failed"}}' \
    | jq .
```


## LockIceConnectionState

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

**x-sora-target**: Sora_20380119.LockIceConnectionState

ICE コネクションステートの状態を指定した状態に変更しロックします。ICE コネクションステートのテストなどに利用してください。

一度でもこの API で状態を変更した場合は、ICE コネクションステート機能は機能しなくなりますので注意してください。
ただし状態を変更した際のシグナリング通知は通知されます。

* - キー
  - 型
* - channel_id
  - string
* - connection_id
  - string
* - state_name
  - string (connected | checking | disconnected)

```console
$ curl -sS \
    -X POST \
    http://127.0.0.1:3000/ \
    -H "x-sora-target: Sora_20380119.LockIceConnectionState" \
    --json '{"channel_id":"sora","connection_id":"6V9VANDZZH71HCQGVKBWKJ8GS0","state_name":"checking"}' \
    | jq .
```
