SHOWROOMのAPIについて（現在26個公開。引き続き調査中）

## 1. はじめに
SHOWROOMにはAPIが存在しており、URLをgetするとJSONで応答があります。しかしながら、これらのAPIは公開されて正式に公開されてはおりません。
一部では「配信中のルーム一覧」等、いろいろな方が非公式に公開しているものがあります。

もともと、応援しているある配信者さんのデータを取得して、分析したいと思ったことから始まりました。
応援中はもちろんデータなんて取れないし（SHOWROOMで星投げ、回収、カウントに忙しい）、しかも適用まで５分ほどかかるにも関わらず、データ取得を忘れると後からデータを取得する方法がないなど、分析するに当たってデータの欠落が発生する危険性があり、このデータの取得をなんとか自動化できないか、というところでAPIの調査をはじめました。

もともと、いろんな方が配信中のルーム一覧APIを公開していることから、他にもAPIが存在するはずだ、ということで、同じようにAPIを求める人はいるはずで、公開している人もいるのではと思い、そちらから探しました。しかしながら、誰も公開している人はいない。。。見つけてももう一つくらいでした。とはいうものの、色々な方がChrome拡張機能やスマートフォン用のAppを開発されていらっしゃるので、実際にはもっと色々なAPIが使われていると思い、今回の調査に至ったわけです。

調査方法はここでは念のため伏せさせていただきますが、そんな難しいことはしておりません。

それでは、今私が認識しているAPIを紹介いたします。

## 2. 目次
```
1. はじめに
2. 目次
3. APIのしくみ
  3.1. GETメソッドを用いる
  3.2. 引数が重要 
  3.3. ログイン状態か否かで値の変わる変数がある
4. 認識しているAPIについて
  4.1. 現在認識しているAPI一覧
  4.2. 各APIの説明
    4.2.1. カテゴリ "live"
      4.2.1.1. 配信中のルーム一覧取得（onlives）
      4.2.1.2. ライブ情報（live_info）
      4.2.1.3. ストリーミングURL（streaming_url）
      4.2.1.4. ポーリング(polling)
      4.2.1.5. 世代検証（age_verification）
      4.2.1.6. 現在のユーザ（current_user）
      4.2.1.7. テロップ（telop）
      4.2.1.8. アンケート結果（enquete_result）
      4.2.1.9. 累計ランキング（summary_ranking）
      4.2.1.10. コメントログ（comment_log）
      4.2.1.11. ギフトログ（gift_log）
      4.2.1.12. ギフトリスト（gift_list）
      4.2.1.13. ステージギフトリスト（stage_gift_list）
      4.2.1.14. ステージユーザリスト（stage_user_list）
      4.2.1.15. 配信中ルーム数取得（onlive_num）
    4.2.2. カテゴリ "room"
      4.2.2.1. 参加中イベント情報取得（event_and_support）
      4.2.2.2. プロフィール（ルーム情報）（profile）
      4.2.2.3. 次回配信情報（next_live）
      4.2.2.4. 設定情報取得（settings）
      4.2.2.5. ステータス（status）
    4.2.3. カテゴリ "user"
      4.2.3.1. プロフィール（ユーザ情報）（profile）
      4.2.3.2. ユーザ詳細（detail）
    4.2.4. カテゴリ "bad_report"
      4.2.4.1. 通報カテゴリリスト（live_bad_report_category_list）
    4.2.5. カテゴリ "service_settings"
      4.2.5.1. サービス設定情報取得（service_settings）
    4.2.6. カテゴリ "search"
      4.2.6.1. ルーム名補完（autocomplete_room）
    4.2.7. カテゴリ "event"
      4.2.7.1. イベント一覧(search)
5. さいごに
```

## 3. APIのしくみ

### 3.1. GETメソッドを用いる
HTTPにて、特定のURIにGETメソッドでアクセスすることで、JSON形式で応答されます。
例えば、多くの方が利用されている、「配信中のルーム一覧取得API」の場合、以下のURIをブラウザのアドレス入力欄に入れて実行すると、JSON形式でブラウザに表示されます。

```
https://www.showroom-live.com/api/live/onlives
```

ブラウザで実行したときのイメージは以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132084/dc28d595-b3cc-5763-6ea4-4b2fc90efc19.png)


この仕組みを使って、Rubyなどのスクリプト言語で実行して取得したJSON形式から、配列やハッシュの形式で様々なデータを取得することが可能になります。

### 3.2. 引数が重要
一部のAPIでは、引数を一緒に入力しないと応答がエラーで返答されることがあります。
例えば、参加中イベント情報取得APIでは、

```
https://www.showroom-live.com/api/room/event_and_support?room_id=xxxxxx
```

というように、room_idを引数に与える必要があります。この引数を正しく与えてあげないと、応答がエラーとなります。


### 3.3. ログイン状態か否かで値が変わる変数がある
APIの中には、ブラウザ自体がログイン状態か否かで値の変わる変数があることを確認しております。
例えば、フォローしてるかどうかを`bool`で表している変数があったりしており、このフォローしているかどうかの主語はログインしているユーザになるようです。（つまりユーザを指定してフォローしているかどうかを確認する手段はないようになっています。）


## 4. 認識しているAPIについて
それでは、実際に見ていきましょう。

### 4.1. 現在認識しているAPI一覧
私が現在認識しているAPI一覧は以下の通りです。（2019/09/15 現在）

|カテゴリ|API名|APIの概要|
|:----:|--------|---------------------|
|live|onlives|配信中のルーム一覧取得|
|live|live_info|ライブ情報|
|live|streaming_url|ストリーミングURL|
|live|polling|ポーリング|
|live|age_verification|世代検証|
|live|current_user|現在のユーザ|
|live|telop|テロップ|
|live|enquete_result|アンケート結果|
|live|summary_ranking|累計ランキング|
|live|comment_log|コメントログ|
|live|gift_log|ギフトログ|
|live|gift_list|ギフトリスト|
|live|stage_gift_list|ステージギフトリスト|
|live|stage_user_list|ステージユーザリスト|
|live|onlive_num|配信中ルーム数取得|
|room|event_and_support|参加中イベント情報取得|
|room|profile|プロフィール<br>（ルーム情報）|
|room|next_live|次回配信情報|
|room|settings|設定|
|room|status|ステータス|
|user|profile|プロフィール<br>（ユーザ情報）|
|user|detail|ユーザ詳細|
|bad_report|live_bad_report_category_list|通報カテゴリリスト|
|service_settings|service_settings|サービス設定|
|search|autocomplete_room|ルーム名補完|
|event|search|イベント一覧|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132084/6e54ae0c-19b7-18ff-ab05-041364f79e7b.png)



### 4.2. 各APIの説明
それでは、各APIの説明をします。
カテゴリは、大きく分けて`live`、`room`、`user`、`bad_report`、`service_settings`、`search`の６つです。（2019/9/15 現在判明しているもの）

#### 4.2.1. カテゴリ "live"
主に配信ライブに関する情報になリます。現在判明しているAPIは15個で最も多いです。これらのAPIは、配信中でないと表示されないものも多く、実行するタイミングが重要になります。もちろん、それを調べるためのAPIも存在するようです。

##### 4.2.1.1. 配信中のルーム一覧取得API
このAPIはよく公開されている、実行時に配信中のルーム一覧を取得するAPIです。
URIは以下の通り。

```
https://www.showroom-live.com/api/live/onlives
```

取得したJSONの各変数は以下の通り。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|---|---|---|
|genre_id||||配信ルームカテゴリID|num|||
|banners||||バナー関係|array|○||
||url|||バナーのリンクURL|url|||
||image|||バナーの画像URL|url|||
|has_upcoming||||もうすぐ放送開始か否か|bool|||
|genre_name||||配信ルームカテゴリ名|string|||
|lives||||配信ルームリスト|array|○||
||room_url_key|||配信者ルームURL KEY|string|||
||official_lv|||公式かアマチュアか|num|||
||telop|||テロップ|string|||
||follower_num|||フォロワ数|num|||
||started_at|||配信開始日時|unixtime|||
||live_id|||ライブiD|num|||
||is_follow|||フォローしてるか否か|bool||○|
||streaming_url_list|||配信URLリスト|array|○||
|||is_default||デフォルトか否か|bool|||
|||url||配信URL|url|||
|||label||画質レベル|string|||
|||id||配信ID|num|||
|||type||配信タイプ|hls|||
|||stream_name||配信名|string|||
||live_type|||配信ライブタイプ|num|||
||tags|||タグ|string|||
||image|||配信ルーム画像|url|||
||view_num|||入出者数|num|||
||genre_id|||配信ルームカテゴリID|num|||
||main_name|||配信ルーム名|string|||
||cell_type|||セルタイプ|num|||
||bscvr_key|||bscvr_key|string|||
||room_id|||ルームID|num|||
|bcsvr_port||||配信サーバポート番号|num|||
|bcsvr_host||||配信サーバドメイン名|string|||


##### 4.2.1.2. ライブ情報（live_info）
ライブ情報を取得するAPIです。room_idを引数に与えることで特定ルームのライブ情報を取得します。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/live_info?room_id=xxxxxx
```

取得したJSONの各変数は以下の通り。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|---|---|---|
|age_verification_status||||世代検証状況|num|||
|video_type||||ビデオタイプ|num|||
|enquete_gift_num||||アンケートギフト数|num|||
|is_enquete||||アンケート中?|bool|||
|bcsvr_port||||配信サーバポート番号|num|||
|live_type||||ライブタイプ|num|||
|is_free_gift_only||||無料ギフトのみ？|bool|||
|bcsvr_host||||配信サーバホスト名|string|||
|live_id||||ライブID|num|||
|is_enquete_result||||アンケート結果？|bool|||
|live_stgatus||||配信ステータス|num|||
|room_name||||ルーム名|string|||
|room_id||||ルームiD|num|||
|bscvr_key||||配信サーバキー|string|||
|background_image_url||||背景画像URL|url|||


##### 4.2.1.3. ストリーミングURL（streaming_url）
ストリーミングURLを取得するAPIです。
これについては、中身でもよくわからないものもありました。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/streaming_url?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|streaming_url_list||||ストリーミングURLリスト|array|○||
|is_default||||デフォルト？|bool|||
|url||||ストリーミングURL|url|||
|type||||ストリーミングタイプ|rtmp|||
|id||||ストリーミングID|num|||
|label||||ストリーミングラベル|string|||
|quality||||ストリーミング品質|num|||


##### 4.2.1.4. ポーリング(polling)
ポーリングしてライブの状況を把握するAPIです。
素早くライブが開催中かを確認する際に便利です。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/polling?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|is_login||||ログイン中？|bool|||
|show_login_dialog||||ログインダイヤログ表示中？|num|||
|online_user_num||||入室者数|num|||
|live_watch_incentive||||配信視聴インセンティブ|[]|○||


#####  4.2.1.5. 世代検証（age_verification）
世代検証のAPIです。
これについては推測ですが、情報確認してから時間が経つと、鮮度が悪くなることを確認しているのではないかと思われます。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/age_verification?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|is_passed||||検証OK?|bool|||


##### 4.2.1.6. 現在のユーザ（current_user）
ログイン時、そのログイン中のユーザの情報を取得します。
これは少し特殊です。ログイン状態で実行しないと、全ての変数の値が正しく反映されません。
ルームIDを引数で与えており、そのルーム内でのユーザの情報、という位置付けのようです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/current_user?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|live_rank||||配信ランク|num||○|
|avater_id||||アバターID|num||○|
|gift_use_flg1||||ギフト仕様フラグ|num||○|
|next_level_point||||次レベルpt|num||○|
|locale||||地域|string||○|
|gift_list||||ギフトリスト|hash|○|○|
||enquete|||アンケート|[]|○|○|
||normal|||ノーマル|array|○|○|
|||gift_id||ギフトID|num||○|
|||free_num||無料数|num||○|
|next_fan_level||||次ファンレベル|num||○|
|is_confirm_gifting_use_gold||||ギフト仕様GOLD確認？|bool||○|
|add_free_gift||||追加無料ギフト|num||○|
|badge_type||||バッジタイプ|num||○|
|gold||||GOLD|num||○|
|is_login||||ログイン中？|bool||○|
|badge||||バッジ|num||○|
|fan_level||||ファンレベル|num||○|
|twitter_auth||||Twitterの同期|bool||○|
|is_tutorial||||チュートリアル？|bool||○|
|name||||ユーザ名|string||○|
|avatar_url||||アバターURL|url||○|
|current_level_point||||現在のレベルpt|num||○|
|account_id||||アカウントiD|string||○|
|image||||イメージ画像URL|url||○|
|contribution_point||||貢献pt|num||○|
|user_id||||ユーザID|num||○|


##### 4.2.1.7. テロップ（telop）
配信者さんが現在配信している枠で表示しているテロップを取得します。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/telop?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|telops||||テロップ情報|array|○||
||color|||色|hash|○||
|||r||赤|num(char)|||
|||g||緑|num(char)|||
|||b||青|num(char)|||
||text|||テキスト|string|||
||type|||タイプ|string|||
|telop||||テロップ|string|||
|interval||||間隔|num|||

##### 4.2.1.8. アンケート結果（enquete_result）
配信中にアンケートを実施したその結果を取得します。
しかしながら、これについては実態を全く把握できておりません。
今度、実際に配信でアンケートを実施してみて確認したいと思います。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/enquete_result?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|l||||?|[]|○||
|v||||?|string|||
|i||||?|url|||


##### 4.2.1.9. 累計ランキング（summary_ranking）
指定したルームの累計ランキングを取得します。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/summary_ranking?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|ranking||||ランキング|araray|○||
||avatar_id|||アバターID|num|||
||avatar_url|||アバターURL|url|||
||name|||名前|string|||
||point|||累積pt|num|||
||order|||順位|num|||
||visit_count|||訪問回数|num|||
||user_id|||ユーザID|num|||
||rank|||ランキング|num|||


##### 4.2.1.10. コメントログ（comment_log）
配信中のコメントログを取得します。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/comment_log?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|comment_log||||コメントログリスト|array|○||
||avatar_id|||アバターID|num|||
||create_at|||投稿日時|unixtime|||
||comment|||コメント|string|||
||avatar_url|||アバターURL|url|||
||name|||投稿者名|string|||
||user_id|||ユーザID|num|||


##### 4.2.1.11. ギフトログ（gift_log）
配信中に投げられたギフトのログです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/gift_log?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|gift_log||||ギフトログリスト|array|○||
||avatar_id|||アバターID|num|||
||num|||数|num|||
||avatar_url|||アバターURL|url|||
||name|||投稿者名|string|||
||image|||投稿者画像URL|url|||
||gift_id|||ギフトID|num|||
||created_at|||投稿日|unixtime|||
||image2|||？|url|||
||user_id|||ユーザID|num|||


##### 4.2.1.12. ギフトリスト（gift_list）
指定した配信ルームで投げられるギフトの一覧を取得するAPIです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/gift_list?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|bravo_time||||ブラボータイム|array|○||
||is_hidden|||非表示属性|bool|||
||order_no|||注文番号|num|||
||gift_type|||ギフトタイプ|num|||
||image|||ギフトイメージURL|url|||
||gift_id|||ギフトID|num|||
||mage2|||ギフトイメージURL2?|url|||
||free|||無料ギフト？|bool|||
||point|||投稿pt|num|||
||is_delete_from_stage|||ステージから削除した？|bool|||
||gift_name|||ギフト名|string|||
||scale|||スケール|num|||


##### 4.2.1.13. ステージギフトリスト（stage_gift_list）
その（配信枠？）ステージ上で投げられたギフトのリストを取得します。
と言いながら、実は応答だけ確認していますが、実態は全く把握できておりません。
こちらも今後の調査対象とします。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/stage_gift_list?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|stage_gift_list||||ステージギフトリスト|[]|○||


##### 4.2.1.14. ステージユーザリスト（stage_user_list）
その（配信枠？）ステージ上のユーザリストを取得します。
配信中のライブランキングと同意のようです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/stage_user_list?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|stage_user_list||||ステージユーザリスト|array|○||
||order_no|||順位|num|||
||user|||ユーザ情報|hash|○||
|||avatar_id||アバターID|num|||
|||badge_type||バッジタイプ|num|||
|||avatar_url||アバターURL|url|||
|||name||ユーザ名|string|||
|||user_id||ユーザID|num|||
|||image||ユーザ画像URL|url|||
||rank|||ランキング|num|||


##### 4.2.1.15. 配信中ルーム数取得（onlive_num）
配信中のルーム数を取得します。
onlivesでは配信中の全てのルーム情報を取得しましたが、JSONも膨大な量になっていました。
onlive_numでは数だけを取得できます。

URIは以下の通りです。

```
https://www.showroom-live.com/api/live/onlive_num
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|num||||オンライブ数|num|||


#### 4.2.2. カテゴリ "room"
主にルームに関連する情報を取得します。
プロフィールなどもこちらから取得することが可能です。
また、イベントに参加している場合、その参加中イベントでの獲得ポイント数などを確認するAPIなども用意されています。

##### 4.2.2.1. 参加中イベント情報取得（event_and_support）
指定したルームが参加中のイベントに関する情報を取得するAPIです。
この**参加中**というキーワードが大きな意味を持ち、イベントが終了してしまうとこの情報は取得できなくなってしまうので、過去の遡って情報を取得できないようになっているようです。

自分がフォローしているルームが現在イベントに参加しているか、どういうイベントに参加しているのかを知りたくなりますよね？

* どのイベントに参加しているのか？ 
* イベントの詳細は？ 
* そのイベントは今どういう状況なのか？ 
* イベントでの対象ルームのポイント獲得状況は？ 

この辺りが取得できるようです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/room/event_and_support?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|support||||サポート|hash|○||
||is_achieved|||bool|||
||goal_point|||num|||
||tutorial_url|||url|||
||title|||strings|||
||support_id|||num|||
||next_level|||num|||
||current_point|||num|||
|regular_event||||レギュラーイベント|hash|○||
|event||||イベント|hash|○||
||ranking|||hash|○||
|||gap||num|||
|||point||num|||
|||text||strings|||
|||next_rank||num|||
|||rank||num|||
||event_name|||イベント名|string|||
||event_id|||イベントID|num|||
||quest|||クエスト|hash|○||
|||contributor_list_url||貢献者リストURL|url|||
|||support||サポート|hash|○||
||||is_achieved|達成したかどうか|bool|||
||||goal_point|目標ポイント|num|||
||||tutorial_url|チュートリアルURL|url|||
||||title|現レベルのタイトル|string|||
||||support_id|サポートID|num|||
||||next_level|次のレベル|num|||
||||current_point|現在の獲得pt|num|||
|||quest_list||クエストリスト|array|○||
||||number_of_items|アイテム中の数|num|||
||||color|色|string|||
||||goal_point|目標ポイント|num|||
||||rest_items|？|num|||
||||title|レベルタイトル|string|||
||||quest_level|クエストレベル|num|||
||||is_acquired|取得した？|bool|||
|||text||テキスト|string|||
|||quest_level||現在のクエストレベル|num|||
||event_description|||イベント内容|string|||
||event_type|||イベントタイプ|string|||
||image|||イベント画像url|url|||
||ended_at|||イベント終了日時|unixtime|||
||started_at|||イベント開始日時|unixtime|||
||tutorial_url|||チュートリアルURL|url|||
||event_url|||イベントURL|url|||



##### 4.2.2.2. プロフィール（ユーザ情報）（profile）
ルームのプロフィール情報を取得することができるAPIです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/room/profile?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|image_list||||画像リスト|array|○||
||m_original|||オリジナル画像URL|url|||
||ts|||タイムスタンプ|unixtime|||
||id|||画像ID|num|||
||m|||画像URL|url|||
|banner_list||||バナーリスト|array|○||
||url|||バナーURL|url|||
||image|||バナー画像|url|||
|is_talk_online||||ファンルームオンライン？|bool|||
|award_list||||表彰リスト|array?|○||
|push_send_status||||送信状態|{}|○||
|performer_name||||演技者名|string|||
|follower_num||||フォロー数|num|||
|live_id||||ライブID|num|||
|is_official||||公式？|bool|||
|is_follow||||フォローしてる？|bool||○|
|voice_list||||ボイスメモリスト|[]|○||
|event||||イベント|hash|○||
||ended_at|||イベント終了日時|unixtime|||
||started_at|||イベント開始日時|unixtime|||
||url|||イベントページURL|url|||
||name|||イベント名|string|||
||image|||イベント画像URL|url|||
||is_birthday|||誕生日？|bool|||
||description|||イベント内容|string|||
|genre_id||||枠ID|num|||
|youtube_id||||youtubeID|string|||
|visit_count||||訪問回数|num||○|
|recommend_comment_list||||推奨コメント|array|○||
||created_at|||作成日|unixtime|||
||comment|||コメント|string|||
||user|||ユーザ情報|hash|○||
|||name||ユーザ名|string|||
|||image||ユーザ画像URL|url|||
|current_live_stared_at||||配信開始日時|unixtime|||
|share_text_live||||配信シェアテキスト|string|||
|sns_list||||SNSリスト|array|○||
||icon|||SNSアイコンURL|url|||
||url|||SNSURL|url|||
|recommend_comments_url||||推奨コメントURL|url|||
|share_url||||シェアURL|url|||
|room_url_key||||ルームURLキー|string|||
|avatar||||配信者アバター情報|hash|||
||description|||アバター内容|string|||
||list|||urlリスト|array|○||
|||-||url|url|||
|share_url_live||||シェア配信URL|url|||
|is_talk_opened||||ファンルーム入室状況|bool|||
|recommend_comment_post_url||||推奨コメント送信URL|url|||
|genre_name||||枠名|string|||
|room_name||||ルーム名|string|||
|birthday||||誕生日（月日のみ）|unixtime|||
|room_level||||ルームレベル|num|||
|image||||ルーム画像|url|||
|recommend_comment_open_status||||推奨コメント開示状況|bool|||
|main_name||||配信者名|string|||
|view_num||||入室者数|num|||
|is_onlive||||配信中？|bool|||
|room_id||||ルームID|num|||


#####  4.2.2.3. 次回配信情報（next_live）
次回の配信情報について取得するAPIです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/room/next_live?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|epoch||||次回配信予定日時|unixtime|||
|text||||テキスト|未定|||


##### 4.2.2.4. 設定情報取得（settings）
ルームの設定情報を取得するAPIのようです。
こちらについても実態はあまり把握できておりません。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/room/settings?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|available_performance_type||||利用可能パフォーマンスタイプ|[]|○||



##### 4.2.2.5. ステータス（status）
ルームのステータスを取得するAPIです。
引数は`room_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/room/status?room_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|upload_url||||アップロードURL|url|||
|did_send_live_bad_report||||ライブで通報したか？|bool|||
|streaming_url_hls||||ストリーミングURL HLS|url|||
|is_enquete||||アンケート中？|bool|||
|room_url_key||||ルームURL KEY|string|||
|anterrom_id||||?|num|||
|is_enabled_full_screen||||フルスクリーン有効？|bool|||
|is_owner||||オーナー？|bool|||
|share||||シェア情報|hash|○||
||twitter|||Twitterシェア情報|hash|○||
|||text||シェアテキスト|string|||
|||url||シェアURL|url|||
|can_comment||||コメント可？|bool|||
|started_at||||配信開始日時|unixtime|||
|is_live||||配信中？|bool|||
|streaming_name_rtmp||||ストリーム名RTMP|string|||
|live_id||||ライブID|num|||
|room_name||||ルーム名|strimg|||
|background_image_url||||背景画像URL|url|||
|broadcast_key||||放送キー|string|||
|is_official||||公式？|bool|||
|video_type||||ビデオタイプ|num|||
|broadcast_port||||配信ポート番号|num|||
|image_s||||画像小URL|url|||
|live_type||||ライブタイプ|num|||
|broadcast_host||||配信サーバホスト名|string|||
|live_user_key||||ライブユーザキー|string|||
|genre_id||||配信枠ID|num|||
|is_fav||||?|bool|||
|streaming_url_rtmp||||ストリームURLRTMP|url|||
|youtube_id||||youtubeID|num|||
|live_status||||ライブ状況|num|||
|nsta_owner||||NSTAオーナ|bool|||



#### 4.2.3. カテゴリ "user"
こちらは配信者だけでなく、リスナの方の情報を取得するAPIです。

##### 4.2.3.1. プロフィール（ユーザ情報）（profile）
ユーザ（リスナ）のプロフィールを取得するAPIです。
引数は`user_id`が必要です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/user/profile?user_id=xxxxxx
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|sns_list||||SNSリスト|array|○||
||icon|||SNSアイコンURL|url|||
||url|||SNSURL|url|||
|avatar_id||||アバターID|num|||
|is_ng_nick_name||||NGニックネーム状況|bool|||
|avatar_url||||アバターURL|url|||
|name||||ユーザ名|string|||
|description||||ユーザ内容|string|||
|account_id||||アカウントID|strintg||○|
|image||||ユーザ画像URL|url|||
|room_profile||||ルームプロフィール|hash|○|○|
||banner_list|||バナーリスト|array|○||
|||url||バナーURL|url|||
|||image||バナー画像|url|||
||award_list|||表彰リスト|array|○||
||performer_name|||パフォーマ名|string|||
||follower_num|||フォロワ数|num|||
||live_id|||配信中ライブID|num|||
||is_official|||公式枠か否か|bool|||
||is_follow|||フォロー中？|bool||○|
||is_birthday|||誕生日？|bool|||
||description|||ルーム内容|string|||
||genre_id|||配信枠ID|num|||
||youtube_id|||youtubeID|num|||
||visit_count|||訪問数|num||○|
||recommend_comment_list|||推奨コメント|array|○||
|||created_at||作成日|unixtime|||
|||comment||コメント|string|||
|||user||ユーザ情報|hash|○||
||||name|ユーザ名|string|||
||||image|ユーザ画像URL|url|||
||current_live_started_at|||配信中ライブ開始日時|unixtime|||
||share_text_live|||配信シェアコメント|string|||
||sns_list|||SNSリスト|array|○||
|||icon||SNSアイコンURL|url|||
|||url||SNSURL|url|||
||recommend_comments_url|||推奨コメントURL|url|||
||share_url|||シェアURL|url|||
||room_url_key|||ルームURLキー|string|||
||avatar|||配信者アバター情報|hash|||
|||description||アバター内容|string|||
|||list||urlリスト|array|○||
||||-|url|url|||
||share_url_live|||シェア配信URL|url|||
||recommend_comment_post_url|||推奨コメント送信URL|url|||
||genre_name|||枠名|string|||
||room_name|||ルーム名|string|||
||birthday|||誕生日（月日のみ）|unixtime|||
||room_level|||ルームレベル|num|||
||image|||ルーム画像|url|||
||recommend_comment_open_status|||推奨コメント開示状況|bool|||
||main_name|||配信者名|string|||
||view_num|||入室者数|num|||
||has_more_recommend_comment|||他に推奨コメントがあるか？|bool|||
||is_onlive|||配信中？|bool|||
||room_id|||ルームID|num|||
|can_report||||報告できるか？|bool|||
|has_reported||||報告済みか？|bool|||
|is_blocked_post||||ブロック送信？|bool|||
|fan_level||||ファンレベル|num|||


##### 4.2.3.2. ユーザ詳細（detail）
現在ログインしているユーザの詳細情報を取得します。
~~引数は`user_id`が必要です。~~
引数は必要ありませんでした。申し訳ありません。
しかし、**ログインは必須**です。（エラーになります。）

URIは以下の通りです。

```
https://www.showroom-live.com/api/user/detail
```

応答JSONの各変数は以下の通りです。

|t変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|is_ng_nick_name||||NGニックネーム？|bool||○|
|name||||ユーザ名|string||○|
|age||||年齢|num||○|
|residence||||在住期間？|num||○|
|description||||ユーザ内容|string||○|
|image||||ユーザ画像URL|url||○|
|user_id||||ユーザID|num||○|
|birthday||||誕生日（月日のみ）|unixtime||○|
|gender||||性別|num||○|


#### 4.2.4. カテゴリ "bad_report"
通報関係のAPIです。

##### 4.2.4.1. 通報カテゴリリスト（live_bad_report_category_list）
通報する際、カテゴリを選択できると思います。そのリストを取得するAPIです。

URIは以下の通りです。

```
https://www.showroom-live.com/api/bad_report/live_bad_report_category_list
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|list||||リスト|array|○||
||category_id|||カテゴリID|num|||
||category_name|||カテゴリ名|string|||


#### 4.2.5. カテゴリ "service_settings"
サービス設定の情報を取得します。

##### 4.2.5.1. サービス設定情報取得（service_settings）
サービス設定の情報を取得するAPIです。

URIは以下の通りです。

```
https://www.showroom-live.com/api/service_settings
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|user_report_categories||||ユーザレポートカテゴリ|array|○||
||category_id|||カテゴリID|num|||
||category_name|||カテゴリ名|string|||
|live_cheating_notification||||ライブ不正通知|bool|||
|live_cheating_recommend||||ライブ不正勧告|bool|||
|beauty_skin_filter||||ビューティスキンフィルタ|bool|||
|avatar_url||||アバターURL|hash|○||
||version|||バージョン|num|||
||path|||アバター画像URL|url|||
||f_ext|||画像拡張子|url|||
|max_enquete_option_num||||最大アンケートオプション数|num|||
|user_report_places||||ユーザ報告場所|array|○||
||place_id|||場所ID|num|||
||place_name|||場所名|string|||
|assets_base_url||||アセットベースURL|url|||
|telop||||テロップ有無|bool|||
|heatmap_api_base_url||||ヒートマップAPIベースURL|url|||
|log_server||||ログサーバURL|url|||
|ranking_update_interval||||ランキング更新間隔|num|||



####  4.2.6. カテゴリ "search"
検索関係のAPI群です。

##### 4.2.6.1. ルーム名補完（autocomplete_room）
フリーワードを引数に入れると、完全補完ルーム名を取得することができます。
引数はword（任意の検索キーワード）です。

URIは以下の通りです。

```
https://www.showroom-live.com/api/service_settings
```

応答JSONの各変数は以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|autocomplete||||完全補完|string|||

####  4.2.7. カテゴリ "event"
イベント関係のapi群です。

##### 4.2.7.1 イベント検索（search）
イベント一覧を取得するAPIです。
引数はpageです。

URIは以下の通りです。

```
https://www.showroom-live.com/api/event/search?page=x
```
xはページ名

応答のJSONは以下の通りです。

|変数名1|変数名2|変数名3|変数名4|変数の内容|データ型|配列|ログインによる影響|
|---|---|---|---|---|:-:|:-:|:-:|
|next_page||||次頁番号|num|||
|previous_page||||前頁番号|num|||
|event_list||||イベントリスト|Array|○||
||order_no|||順番|num|||
||event_id|||イベントID|num|||
||event_description|||イベント内容|String|||
||start_soon|||近日開始？|bool|||
||league_ids|||リーグID|Array|○||
||end_soon|||まもなく終了？|bool|||
||type_name|||レベル|String|||
||is_official|||公式フラグ|bool|||
||event_name|||イベント名|String|||
||image_l|||イメージL|url|||
||event_type|||イベントタイプ|String|||
||image_s|||イメージS|url|||
||genre_id|||genreID|num|||
||default_locale|||デフォルト地域|String|||
||ended_at|||終了日時|timestamp|||
||updated_at|||更新日時|timestamp|||
||start_coming|||まもなく開始|bool|||
||event_image_file_type|||イベント画像ファイルタイプ|String|||||require_level_max|||必要レベル最大値|num|||
||require_level_max|||必要レベル最大値|num|||
||require_level|||必要レベル|num|||
||image_m|||イメージm|url|||
||offer_started_at|||参加開始日時|timestamp|||
||no_amateur|||アマチュアじゃない？|bool|||
||end_remain|||終了確認|num|||
||just_offer_started|||参加開始？|bool|||
||created_at|||作成日時|timestamp|||
||started_at|||開始日時|timestamp|||
||event_url_key|||イベントURLキー|String|||
||is_box_event|||ボックスイベント？|bool|||
||parent_event_id|||親イベントID|num|||
||show_ranking|||ランキング表示|bool|||
||is_public|||公開済み？|bool|||
||public_status|||公開状態|num|||
||is_closed|||終了済み？|bool|||
||is_pickup|||ピックアップ？|bool|||
||reward_rank|||リワードランク|num|||
||offer_ended_at|||参加終了日時|timestamp|||
|last_page||||最終頁番号|num|||
|first_page||||最初の頁番号|num|||
|current_page||||現在の頁番号|num|||
|total_count||||イベント総数|num|||







## 5. さいごに
今回は細かい説明は割愛しました。
取り急ぎ、これらのAPIが存在する、ということをお伝えしたかったのです。

しかしながら、これらのAPIを使うことで、クロールすることなくAPIから情報を取得することが可能になりました。

ただ、これで私がしたいことの全てができるわけではありません。
参加中イベントの貢献ランキングを取得するAPIはまだ見つかっておりません。
こちらをクロールする場合、user_idがわからず、ユーザ名だけで判断する必要があります。
ユーザ名は任意で好きな時に変更が可能であるため、ユニークな情報ともなりにくく、また一定した値にならないので、ユーザを特定することは困難を深めます。

ただし、今回取得した情報でユーザIDがわかるので、それをうまく活用して対応することはできるかな、と思っております。

また、APIにはGETメソッドだけでなく、POSTメソッドも存在することを確認しております。これは情報取得ではなく、設定適用や、何かの実行（配信など）を担うものであり、多分ですがブラウザのログインが必要であると思います。

APIの調査は、引き続き行っていこうと思います。

## 6. 参考サイト
* [SHOROOM](https://www.showoroom-live.com/)