{"openapi":"3.1.0","info":{"title":"MilliPedia public API","version":"1.0.0","description":"ミリオンライブ！ シアターデイズのアーカイブが公開している読み取り専用 API。認証は不要で、公開投影に含まれる項目だけを返します。"},"servers":[{"url":"/"}],"paths":{"/api/idols":{"get":{"summary":"アイドル一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"前回の next_cursor"},{"name":"type","in":"query","schema":{"type":"string","enum":["Princess","Fairy","Angel","EX"]}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"アイドルのページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Idol"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/Facets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/idols/{id}":{"get":{"summary":"アイドル詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"アイドルと保有カード","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdolDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/cards":{"get":{"summary":"カード一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"idol_id","in":"query","schema":{"type":"integer"}},{"name":"rarity","in":"query","schema":{"type":"string"}},{"name":"series","in":"query","schema":{"type":"string"}},{"name":"idol_type","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"カードのページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Card"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/Facets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/cards/{id}":{"get":{"summary":"カード詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"カード、覚醒前後、スキル、関連衣装","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events":{"get":{"summary":"イベント一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"classification","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string","enum":["current","upcoming","ended"]},"description":"開催状態。current は旧 /events/current の代替です。"},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"イベントのページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/Facets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/events/{id}":{"get":{"summary":"イベント詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"期間・ランキング種別・関連カード・関連楽曲","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events/{id}/periods":{"get":{"summary":"イベント期間","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"開催期間と出典","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPeriods"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events/{id}/idol-rankings":{"get":{"summary":"周年アイドル別最終ボーダー","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"アイドルごとの順位別スコア","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdolRankings"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events/{id}/points":{"get":{"summary":"イベント全体ポイントと日次推移","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"全体ポイントと日次推移","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPoints"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events/{id}/rankings":{"get":{"summary":"イベントのボーダー推移","parameters":[{"$ref":"#/components/parameters/Id"},{"name":"ranking_kind","in":"query","schema":{"type":"string","enum":["event_point","high_score","total_high_score","lounge","idol_point"]}},{"name":"rank","in":"query","schema":{"type":"integer","minimum":1}},{"name":"final_only","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"順位ごとの時系列ボーダー","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRankingSeries"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/events/{id}/ranking-series":{"get":{"summary":"イベントのボーダー収集範囲","parameters":[{"$ref":"#/components/parameters/Id"},{"name":"ranking_kind","in":"query","schema":{"type":"string","enum":["event_point","high_score","total_high_score","lounge","idol_point"]}}],"responses":{"200":{"description":"順位ごとの採取件数とスコア範囲","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRankingSeriesSummary"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/events/{id}/ranking-accounts":{"get":{"summary":"イベントの参加者ランキング","parameters":[{"$ref":"#/components/parameters/Id"},{"name":"ranking_kind","in":"query","schema":{"type":"string","enum":["event_point","high_score","total_high_score","lounge"]}},{"name":"compare_type","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"前回の応答の next_cursor（順位）"}],"responses":{"200":{"description":"参加者の表示名・順位・スコア・ゲーム内検索ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRankingAccounts"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/events/{id}/rewards":{"get":{"summary":"イベント報酬","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"順位報酬・累計報酬のカード","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRewards"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/events/{id}/lounges":{"get":{"summary":"イベントのラウンジランキング","parameters":[{"$ref":"#/components/parameters/Id"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"前回の応答の next_cursor（順位）"}],"responses":{"200":{"description":"ラウンジ名・順位・スコア・ゲーム内検索ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRankingAccounts"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/songs":{"get":{"summary":"楽曲一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"楽曲のページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Song"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/Facets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/songs/{id}":{"get":{"summary":"楽曲詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"楽曲、譜面コース、関連イベント","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SongDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/songs/{id}/rankings":{"get":{"summary":"楽曲別ハイスコアランキング","parameters":[{"$ref":"#/components/parameters/Id"},{"name":"course","in":"query","schema":{"type":"string"},"description":"省略時は最初の収録コース"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"前回の応答の next_cursor（順位）"}],"responses":{"200":{"description":"コース内の順位・スコア・表示名・ゲーム内検索ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SongRankings"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/songs/{id}/rankings/courses":{"get":{"summary":"ランキングのあるコース","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"コース別の件数とスコア範囲","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SongRankingCourses"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/costumes":{"get":{"summary":"衣装一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"idol_id","in":"query","schema":{"type":"integer"}},{"name":"kind","in":"query","schema":{"type":"string"}},{"name":"slot","in":"query","schema":{"type":"string"}},{"name":"release_year","in":"query","schema":{"type":"integer"}},{"name":"shs","in":"query","schema":{"type":"string","enum":["0","1"]}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"衣装のページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Costume"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/CostumeFacets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/costumes/{id}":{"get":{"summary":"衣装詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"着用アイドル、画像、関連カード・イベント・ガシャ・同系列","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostumeDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/gashas":{"get":{"summary":"ガシャ一覧","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"period","in":"query","schema":{"type":"string","enum":["upcoming","ongoing","ended"]}},{"name":"year","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"ガシャのページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Gasha"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/GashaFacets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/gashas/{id}":{"get":{"summary":"ガシャ詳細","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"開催期間、提供カード、関連イベント","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GashaDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/cards/facets/series":{"get":{"summary":"カードシリーズと件数","parameters":[{"name":"min_count","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"この件数以上のシリーズだけを返します。"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"件数の多い順のシリーズ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeriesFacetPage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/cards/facets/series-suggestions":{"get":{"summary":"カードシリーズの候補","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":96}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"一致したシリーズ候補","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeriesFacetPage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/events/facets":{"get":{"summary":"イベント分類","responses":{"200":{"description":"公開イベントに存在する分類値と件数","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventFacetPage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/meta/site-audio":{"get":{"summary":"サイト・劇場 BGM のメタデータ","responses":{"200":{"description":"公式 BGM 表と劇場 BGM の構成（音源 URL は含まない）","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteAudio"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/meta/app-versions":{"get":{"summary":"観測したアプリ版","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"アプリ版のページ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppVersionPage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/meta/app-versions/{version}":{"get":{"summary":"アプリ版の詳細","parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string"},"description":"9.0.200 のような `major.minor.patch`。"}],"responses":{"200":{"description":"版と観測時刻","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppVersion"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/meta/asset-versions":{"get":{"summary":"観測したアセット版","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"アセット版のページ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetVersionPage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/meta/asset-versions/{version}":{"get":{"summary":"アセット版の詳細","parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"公式 `AssetService.GetAssetVersion` の数値版。"}],"responses":{"200":{"description":"版、観測時刻、manifest の項目数","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetVersion"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/meta/versions/latest":{"get":{"summary":"最新のアプリ版・アセット版","responses":{"200":{"description":"最後に観測した版","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestVersions"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/rankings/coverage":{"get":{"summary":"ランキング収録状況","responses":{"200":{"description":"イベント・楽曲ランキングの収録件数","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingCoverage"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/commus":{"get":{"summary":"コミュ一覧","description":"公開投影のコミュを返します。高度ストーリー（advanced）は /advanced 側の経路だけが扱います。","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"source","in":"query","schema":{"type":"string"},"description":"旧 archive の source 値、または現在の commu_kind。"},{"name":"idol_id","in":"query","schema":{"type":"integer"}},{"name":"speaker","in":"query","schema":{"type":"integer"},"description":"発話したスピーカーの entity_id。"},{"name":"event_id","in":"query","schema":{"type":"integer"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}},{"name":"voiced","in":"query","schema":{"type":"boolean"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["id","release","title","archive"],"default":"id"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"コミュのページ","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Commu"}},"next_cursor":{"type":["integer","null"]},"facets":{"$ref":"#/components/schemas/CommuFacets"}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/push-notifications":{"get":{"summary":"プッシュ通知文言一覧","description":"公開投影に含まれる tti_jp の通知文言を返します。ゲーム側の {$P$} と書式文字列は原文のままです。","responses":{"200":{"description":"プッシュ通知文言 60 件","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","category","text","offer_index","idol_id","idol_name"],"properties":{"id":{"type":"integer"},"category":{"type":"string","enum":["generic","event","offer","common"]},"text":{"type":"string"},"offer_index":{"type":["integer","null"]},"idol_id":{"type":["integer","null"]},"idol_name":{"type":["string","null"]}}}}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/commus/{id}":{"get":{"summary":"コミュ詳細（公開 transcript）","description":"公開台帳で公開とされた parts / lines / choices / participants を返します。音声の bank・cue・配信 URL は含みません。","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"公開 transcript の投影","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommuDetail"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/commus/{id}/timeline":{"get":{"summary":"コミュの BGM/SE/環境音タイムライン","description":"transcript とは別の contract です。再生可能な media はここでは返さず、/media/private/commu/{id}/{role}/{variant} が media.listen の確認後に解決します。","parameters":[{"$ref":"#/components/parameters/Id"}],"responses":{"200":{"description":"チャンネル別のキュー。未収録のときは available=false","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommuTimeline"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/commus/scenes/{project}/{scene}/timeline":{"get":{"summary":"Commu2 シーンの再生タイムライン IR","description":"構造と authored timing のみを返します。台詞本文、音声 URL、未解決の bank/cue は含みません。scene は .commu2scenario を省略できます。","parameters":[{"name":"project","in":"path","required":true,"schema":{"type":"string","enum":["igp","ssn","tva","mjo","ops"]}},{"name":"scene","in":"path","required":true,"schema":{"type":"string"}},{"name":"asset_version","in":"query","schema":{"type":"string","pattern":"^[0-9]{1,20}$"}}],"responses":{"200":{"description":"クリップの authored timing と解決状態","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/commu-facets/events":{"get":{"summary":"コミュのあるイベント","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"min_count","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"イベントとコミュ件数","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommuEventFacet"}},"next_cursor":{"type":["integer","null"]}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/commu-facets/idols":{"get":{"summary":"コミュのあるアイドル","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"min_count","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"アイドルとコミュ件数","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommuIdolFacet"}},"next_cursor":{"type":["integer","null"]}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/commu-facets/speakers":{"get":{"summary":"公開セリフのあるスピーカー","description":"公開セリフの行数と紐づくボイス数、合計検索結果数を返します。話者名の候補にはセリフのないボイス話者も含みます。内部のスピーカーコードは返しません。","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"min_lines","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"公開セリフのあるスピーカーとセリフ・ボイスの件数","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommuSpeakerFacet"}},"next_cursor":{"type":["integer","null"]}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/commu-facets/speaker-suggestions":{"get":{"summary":"スピーカーの候補","description":"公開セリフ・ボイスがあるスピーカーを q で絞り込んだ候補です。","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":60}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":96}},{"name":"min_lines","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"スピーカーの候補","content":{"application/json":{"schema":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommuSpeakerFacet"}},"next_cursor":{"type":["integer","null"]}}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"422":{"$ref":"#/components/responses/InvalidQuery"}}}},"/api/meta/facets":{"get":{"summary":"ファセット値","responses":{"200":{"description":"公開投影に存在する分類値","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Facets"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/meta/status":{"get":{"summary":"収録状況","responses":{"200":{"description":"投影の版、種別ごとの件数、取得元ごとの観測数","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}}},"components":{"parameters":{"Id":{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"カタログの entity_id。名前が変わっても安定する内部キーです。"}},"responses":{"InvalidQuery":{"description":"クエリの値が不正","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"対象が公開投影に存在しない","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"MethodNotAllowed":{"description":"この API は GET のみ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_query","not_found","method_not_allowed"]},"message":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"string"}}}}}},"SeriesFacet":{"type":"object","required":["series","card_count"],"properties":{"series":{"type":"string"},"card_count":{"type":"integer"}}},"SeriesFacetPage":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SeriesFacet"}},"next_cursor":{"type":["integer","null"]}}},"EventFacet":{"type":"object","required":["code","label","count"],"properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}},"EventFacetPage":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventFacet"}},"next_cursor":{"type":["integer","null"]}}},"Facets":{"type":"object","properties":{"idol_types":{"type":"array","items":{"type":"string"}},"rarities":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"type":"string"}},"card_series":{"type":"array","items":{"$ref":"#/components/schemas/SeriesFacet"}},"event_classifications":{"type":"array","items":{"$ref":"#/components/schemas/EventFacet"}},"song_types":{"type":"array","items":{"type":"string"}},"song_kinds":{"type":"array","items":{"type":"string"}}}},"SiteAudio":{"type":"object","properties":{"source":{"type":"string"},"client_version":{"type":["string","null"]},"default":{"type":"object","properties":{"bank":{"type":"string"},"cue":{"type":"string"}}},"time_of_day":{"type":"object","additionalProperties":true},"current":{"type":"object","additionalProperties":true},"valid_until":{"type":"string","format":"date-time"},"schedule":{"type":"array","items":{"type":"object","properties":{"begins_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"bank":{"type":"string"},"cue":{"type":"string"}}}},"theater":{"type":"object","additionalProperties":true}}},"AppVersion":{"type":"object","required":["version","first_observed_at","last_observed_at"],"properties":{"version":{"type":"string"},"first_observed_at":{"type":"string","format":"date-time"},"last_observed_at":{"type":"string","format":"date-time"}}},"AppVersionPage":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AppVersion"}},"next_cursor":{"type":["integer","null"]}}},"AssetVersion":{"type":"object","required":["version","observed_at","entry_count"],"properties":{"version":{"type":"string"},"observed_at":{"type":"string","format":"date-time"},"entry_count":{"type":"integer"}}},"AssetVersionPage":{"type":"object","required":["items","next_cursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AssetVersion"}},"next_cursor":{"type":["string","null"]}}},"LatestVersions":{"type":"object","properties":{"app":{"oneOf":[{"$ref":"#/components/schemas/AppVersion"},{"type":"null"}]},"asset":{"oneOf":[{"$ref":"#/components/schemas/AssetVersion"},{"type":"null"}]}}},"Idol":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_reading":{"type":["string","null"]},"cv":{"type":["string","null"]},"type":{"type":["string","null"]},"birthday":{"type":["object","null"],"properties":{"month":{"type":"integer"},"day":{"type":"integer"}}},"age":{"type":["integer","null"]},"height_cm":{"type":["number","null"]},"weight_kg":{"type":["number","null"]},"blood_type":{"type":["string","null"]},"hometown":{"type":["string","null"]},"hobbies":{"type":["string","null"]},"special_skills":{"type":["string","null"]}}},"IdolDetail":{"allOf":[{"$ref":"#/components/schemas/Idol"},{"type":"object","properties":{"card_count":{"type":"integer"},"cards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"title":{"type":["string","null"]},"rarity":{"type":"string"}}}}}}]},"Card":{"type":"object","properties":{"id":{"type":"integer"},"idol_id":{"type":"integer"},"idol_name":{"type":"string"},"idol_type":{"type":["string","null"]},"name":{"type":"string"},"title":{"type":["string","null"]},"series":{"type":["string","null"]},"rarity":{"type":"string"},"added_at":{"type":["string","null"],"format":"date-time"},"live_skill":{"type":["string","null"]},"center_effect":{"type":["string","null"]},"appeal":{"type":"object","properties":{"before":{"type":["integer","null"]},"after":{"type":["integer","null"]}}}}},"CardDetail":{"allOf":[{"$ref":"#/components/schemas/Card"},{"type":"object","properties":{"states":{"type":"array","items":{"type":"object"}},"skills":{"type":"array","items":{"type":"object"}},"costumes":{"type":"array","items":{"type":"object"}}}}]},"Event":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"classification":{"type":["string","null"]},"type":{"type":["string","null"]},"is_anniversary":{"type":"boolean"},"starts_at":{"type":["string","null"],"format":"date-time"},"ends_at":{"type":["string","null"],"format":"date-time"},"ranking_kinds":{"type":"array","items":{"type":"string"}}}},"EventDetail":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"play_style":{"type":["string","null"]},"ranking_note":{"type":["string","null"]},"item_name":{"type":["string","null"]},"periods":{"type":"array","items":{"type":"object"}},"cards":{"type":"array","items":{"type":"object"}},"songs":{"type":"array","items":{"type":"object"}},"idol_subjects":{"type":"array","items":{"type":"object"}}}}]},"Song":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"phonetic":{"type":["string","null"]},"type":{"type":["string","null"]},"kind":{"type":["string","null"]},"bpm":{"type":["number","null"]},"implemented_at":{"type":["string","null"],"format":"date-time"},"regular_release_at":{"type":["string","null"],"format":"date-time"},"playable":{"type":["boolean","null"]}}},"SongDetail":{"allOf":[{"$ref":"#/components/schemas/Song"},{"type":"object","properties":{"courses":{"type":"array","items":{"type":"object"}},"events":{"type":"array","items":{"type":"object"}}}}]},"Costume":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":["string","null"]},"series":{"type":["string","null"]},"group_name":{"type":["string","null"]},"kind":{"type":"string"},"kind_label":{"type":"string"},"slot":{"type":["string","null"]},"slot_label":{"type":["string","null"]},"release_date":{"type":["string","null"],"format":"date"},"release_year":{"type":["integer","null"]},"is_shs":{"type":"boolean"},"wearers":{"type":"array","items":{"$ref":"#/components/schemas/CostumeWearer"}},"image":{"$ref":"#/components/schemas/CostumeImage"}}},"CostumeImage":{"type":["object","null"],"properties":{"role":{"type":"string","enum":["front","full"]},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"avif":{"$ref":"#/components/schemas/CostumeImageVariant"},"webp":{"$ref":"#/components/schemas/CostumeImageVariant"}}},"CostumeImageVariant":{"type":["object","null"],"properties":{"href":{"type":"string"},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]}}},"CostumeDetail":{"allOf":[{"$ref":"#/components/schemas/Costume"},{"type":"object","properties":{"media":{"type":"array","items":{"$ref":"#/components/schemas/CostumeImage"}},"cards":{"type":"array","items":{"$ref":"#/components/schemas/CostumeCard"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/CostumeEvent"}},"gashas":{"type":"array","items":{"$ref":"#/components/schemas/CostumeGasha"}},"siblings":{"type":"array","items":{"$ref":"#/components/schemas/CostumeSibling"}}}}]},"CostumeCard":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"title":{"type":["string","null"]},"idol_name":{"type":"string"},"rarity":{"type":"string"},"relation":{"type":"string"}}},"CostumeEvent":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"type":{"type":["string","null"]},"starts_at":{"type":["string","null"],"format":"date-time"},"ends_at":{"type":["string","null"],"format":"date-time"},"relation":{"type":"string"}}},"CostumeGasha":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"kind_label":{"type":"string"},"starts_at":{"type":["string","null"],"format":"date-time"},"ends_at":{"type":["string","null"],"format":"date-time"},"relation":{"type":"string"}}},"CostumeSibling":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"group_name":{"type":["string","null"]},"series":{"type":["string","null"]},"wearers":{"type":"array","items":{"$ref":"#/components/schemas/CostumeWearer"}}}},"CostumeWearer":{"type":"object","properties":{"idol_id":{"type":"integer"},"name":{"type":"string"},"idol_type":{"type":["string","null"]}}},"CostumeFacets":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"slots":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"release_years":{"type":"array","items":{"type":"integer"}}}},"Gasha":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string"},"kind_label":{"type":"string"},"starts_at":{"type":["string","null"],"format":"date-time"},"ends_at":{"type":["string","null"],"format":"date-time"},"display_ends_at":{"type":["string","null"],"format":"date-time"},"pickup_card_count":{"type":"integer"},"offered_card_count":{"type":"integer"},"exchange_card_count":{"type":"integer"},"has_limited":{"type":["boolean","null"]},"has_new_idol":{"type":["boolean","null"]},"has_sr_passport":{"type":["boolean","null"]},"has_ssr_passport":{"type":["boolean","null"]},"is_limit":{"type":["boolean","null"]}}},"GashaDetail":{"allOf":[{"$ref":"#/components/schemas/Gasha"},{"type":"object","properties":{"play_style":{"type":["string","null"]},"paid_only":{"type":["boolean","null"]},"free_jewel_only":{"type":["boolean","null"]},"daily_limit":{"type":["integer","null"]},"total_limit":{"type":["integer","null"]},"draw_point_max":{"type":["integer","null"]},"draw1_currency_amount":{"type":["integer","null"]},"draw10_currency_amount":{"type":["integer","null"]},"ceiling_count":{"type":["integer","null"]},"cards":{"type":"array","items":{"$ref":"#/components/schemas/GashaCard"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/GashaEvent"}}}}]},"GashaCard":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"title":{"type":["string","null"]},"idol_name":{"type":"string"},"rarity":{"type":"string"},"rarity_code":{"type":["integer","null"]},"relation":{"type":"string","enum":["pickup_card","offered_card","exchange_card"]},"is_pickup":{"type":"boolean"},"is_fes":{"type":"boolean"},"is_new":{"type":"boolean"},"is_double":{"type":"boolean"},"probability_percent":{"type":["number","null"]},"acquisition_kind":{"type":["string","null"]}}},"GashaEvent":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"classification":{"type":["string","null"]},"type":{"type":["string","null"]},"relation":{"type":"string"}}},"GashaFacets":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}},"years":{"type":"array","items":{"type":"integer"}}}},"Commu":{"type":"object","properties":{"id":{"type":"integer"},"kind":{"type":"string"},"kind_label":{"type":"string"},"title":{"type":"string"},"title_is_official":{"type":"boolean"},"title_source":{"type":"string"},"released_at":{"type":["string","null"],"format":"date-time"},"voiced":{"type":"boolean"},"part_count":{"type":"integer"},"line_count":{"type":"integer"},"choice_count":{"type":"integer"},"has_audio":{"type":"boolean"},"idol_names":{"type":"array","items":{"type":"string"}},"event_name":{"type":["string","null"]},"card_name":{"type":["string","null"]}}},"CommuLine":{"type":"object","properties":{"line_no":{"type":"integer"},"speaker_id":{"type":["integer","null"]},"speaker_name":{"type":["string","null"]},"speaker_short_name":{"type":["string","null"]},"text":{"type":"string"},"cut":{"type":["string","null"]},"flow_order":{"type":["integer","null"]},"branch_seq":{"type":["integer","null"]},"branch_option":{"type":["integer","null"]}}},"CommuChoice":{"type":"object","properties":{"group":{"type":"integer"},"no":{"type":"integer"},"text":{"type":"string"},"result_key":{"type":["string","null"]},"kind":{"type":["string","null"]},"effect":{"type":["string","null"]},"flow_order":{"type":["integer","null"]}}},"CommuPart":{"type":"object","properties":{"part_no":{"type":"integer"},"part_kind":{"type":"string"},"part_label":{"type":["string","null"]},"part_order":{"type":"integer"},"title":{"type":["string","null"]},"synopsis":{"type":["string","null"]},"lines":{"type":"array","items":{"$ref":"#/components/schemas/CommuLine"}},"choices":{"type":"array","items":{"$ref":"#/components/schemas/CommuChoice"}}}},"CommuParticipant":{"type":"object","properties":{"position":{"type":"integer"},"idol_id":{"type":["integer","null"],"description":"公開済みアイドルの entity id。idol 以外の話者は null。"},"name":{"type":["string","null"]},"role":{"type":"string"},"line_count":{"type":["integer","null"]},"first_line_no":{"type":["integer","null"]},"is_center":{"type":"boolean"}}},"CommuDetail":{"allOf":[{"$ref":"#/components/schemas/Commu"},{"type":"object","properties":{"parts":{"type":"array","items":{"$ref":"#/components/schemas/CommuPart"}},"participants":{"type":"array","items":{"$ref":"#/components/schemas/CommuParticipant"}},"idols":{"type":"array","items":{"type":"object"}},"cards":{"type":"array","items":{"type":"object"}},"events":{"type":"array","items":{"type":"object"}}}}]},"CommuTimeline":{"type":"object","properties":{"commu_id":{"type":"integer"},"available":{"type":"boolean"},"channels":{"type":"object","properties":{"bgm":{"type":"integer"},"se":{"type":"integer"},"ambience":{"type":"integer"}}},"cues":{"type":"array","items":{"type":"object"}},"note":{"type":"string"}}},"CommuFacets":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer"}}}}}},"CommuEventFacet":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"display_name":{"type":"string"},"count":{"type":"integer"}}},"CommuIdolFacet":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"color_code":{"type":["string","null"]},"count":{"type":"integer"}}},"CommuSpeakerFacet":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":["string","null"]},"short_name":{"type":["string","null"]},"line_count":{"type":"integer"},"voice_count":{"type":"integer"},"result_count":{"type":"integer"}}},"Status":{"type":"object","properties":{"status":{"type":"string"},"projection":{"type":["object","null"],"properties":{"revision":{"type":"integer"},"built_at":{"type":"string","format":"date-time"},"builder":{"type":"string"},"catalog_heads":{"type":"integer"}}},"datasets":{"type":"array","items":{"type":"object"}},"sources":{"type":"array","items":{"type":"object"}}}}}}}