SchemasJWTClaimsRoomSpecMediaControlConnectionSpecIDStringAPI docs by RedoclyRICOH Live Streaming Access Token Specification (v1)Download OpenAPI specification:Download本文書は RICOH Live Streaming がアプリケーションに要求する Access Token の仕様について記述します。Access Token は発行された ClientID に対応する ClientSecret によって HS256 で署名された JWT です。セキュリティ上 ClientSecret はアプリケーションのユーザに漏れてはならないため、アプリケーションが保有するサーバで生成されることを想定します。シーケンスJWT 仕様ヘッダの "alg" 属性および署名アルゴリズムは "HS256" のみ可クレームセット ( 署名される JSON オブジェクト ) は以下に示す JWTClaims オブジェクト記載されていない属性が含まれていた場合は無視されます無視された要素は、同一 RoomInstance 中の Connection 同士で実施される RoomSpec の比較からも無視されますエラーAccess Tokenに入力不足や不備があった場合、RICOH Live Streaming Client SDK エラー仕様の ParameterError に記載されている対応エラーが発生します。録画機能についてJWTClaims の room_spec.recording と connection_spec.recording の設定によって録画機能を利用することができます。クラウド録画機能 は、現在 β 版として提供しております。そのため、商用サービスでの利用をご検討される際には、必ず事前にお問い合わせください。β 版のクラウド録画機能の利用料金は無料です。正式版は有償での提供を検討しておりますので、あらかじめご了承ください。正式版を公開せずに β 版の公開を終了する、もしくは、正式版では β 版から機能や仕様が変更される可能性がありますので、あらかじめご了承ください。JWTClaimsnbfrequiredinteger このトークンの有効期限の開始時刻UnixtimeRFC7519 で定義されていますexp - nbf <= 3600 (exp と nbf の差は 1 時間以内) である必要がありますexprequiredinteger このトークンの有効期限の終了時刻UnixtimeRFC7519 で定義されていますroom_idrequiredstring 入室する Room の IDroom_specrequiredobject (RoomSpec) 入室する Room の仕様同時に同じ Room に入室する Connection は同じ RoomSpec が指定されていなければなりませんconnection_idrequiredstring 自 Connection の ID同じ room_id の Room 内に同じ connection_id の Connection が既に存在していた場合、既に存在していた方のConnectionが退室処理されますconnection_specobject (ConnectionSpec) Default: {"recording":{"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"composition":{"use_audio":true,"use_video":true}}} 自 Connection の仕様Copy Expand all Collapse all {"nbf": 0,"exp": 0,"room_id": "string","room_spec": {"type": "sfu","max_connections": 1,"media_control": {"bitrate_reservation_mbps": 10},"recording": {"recording_on_start": false,"composition_recording": {"enabled": false,"format": "mp4","video": {"resolution": "auto","max_bitrate_kbps": "auto"},"audio": {"codec": "aac"}}},"classification_label": "default"},"connection_id": "string","connection_spec": {"recording": {"store": true,"format": "mp4","video": {"codec": "h264"},"audio": {"codec": "aac"},"composition": {"use_audio": true,"use_video": true}}}}RoomSpectyperequiredstring (RoomType) Enum: "sfu" "sfu_large" "p2p" "p2p_turn" Room の種類sfuSFURoom 型接続ある程度の人数での双方向会議向けですsfu_large大規模イベント向けの SFURoom 型接続送信可能な Client 数に制限がありますが、1Room あたりの接続可能 Client 数が増えますp2pP2PRoom 型接続1 対 1 など少人数でのコミュニケーション向けですp2p_turnTURN サーバーを利用する P2PRoom 型接続Room 型 p2p と比べて TURN サーバが利用可能できるため、Client が接続できる可能性が向上しますmax_connections最大接続数 (sfu_large以外) (integer) or 最大接続数 (sfu_large) (integer) media_controlobject (MediaControl) Room 全体に対するメディア制御設定type が "sfu" または "sfu_large" の時のみ有効指定を省略した場合 {"bitrate_reservation_mbps": 10} を指定したのと同じ扱いになりますtype が "p2p" または "p2p_turn" の時は、Room の最大帯域はブラウザ間の帯域制御に依存し、指定値は無視されますrecordingobject (RoomSpecRecording) Default: {"recording_on_start":false,"composition_recording":{"enabled":false,"format":"mp4","video":{"resolution":"auto","max_bitrate_kbps":"auto"},"audio":{"codec":"aac"}}} β 機能Room 全体に対する録画設定type が "sfu" または "sfu_large" の時のみ有効RoomSpecRecording 全体を省略することも可能です。その場合、録画は行われませんtype が "p2p" または "p2p_turn" の時は録画をサポートしないため、指定値が無視されます現状の制約録画を実行する場合、 storage を aws_s3 で設定することが必須になりますclassification_labelstring Default: "default" 課金分類ラベルCopy Expand all Collapse all {"type": "sfu","max_connections": 1,"media_control": {"bitrate_reservation_mbps": 10},"recording": {"recording_on_start": false,"composition_recording": {"enabled": false,"format": "mp4","video": {"resolution": "auto","max_bitrate_kbps": "auto"},"audio": {"codec": "aac"}}},"classification_label": "default"}MediaControlbitrate_reservation_mbpsinteger [ 1 .. 250 ] Default: 10 Room ごとに利用可能な帯域幅の最大値を Mbps 単位で指定Room の利用帯域幅は、すべての接続の送信と受信の合計値であり、各接続が利用する帯域は、合計が bitrate_reservation_mbps の設定内に収まるように調整されますCopy{"bitrate_reservation_mbps": 10}ConnectionSpecrecordingobject (ConnectionSpecRecording) Default: {"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"composition":{"use_audio":true,"use_video":true}} β 機能Connection に対する録画設定type が sfu または sfu_large の時のみ有効指定を省略した場合、 { "store": true, "video": { "codec": "h264" }, "audio": { "codec": "aac" }, "composition": { "use_audio": true, "use_video": true } } を指定したものとして扱われますtype が p2p または p2p_turn の時は録画をサポートしないため、指定値が無視されますCopy Expand all Collapse all {"recording": {"store": true,"format": "mp4","video": {"codec": "h264"},"audio": {"codec": "aac"},"composition": {"use_audio": true,"use_video": true}}}IDStringstring (IDString) ^[a-zA-Z0-9.%+^_"`{|}~<>\\\\-]{1,255}$ 1 文字以上 255 文字以下ASCII以下の文字のみ許可英数字次の記号: .%+^_"`{|}~<>\-Copy"string" const __redoc_state = {"menu":{"activeItemIdx":-1},"spec":{"data":{"openapi":"3.0.2","info":{"title":"RICOH Live Streaming Access Token Specification","version":"v1","description":"本文書は RICOH Live Streaming がアプリケーションに要求する Access Token の仕様について記述します。\n\nAccess Token は発行された ClientID に対応する ClientSecret によって HS256 で署名された JWT です。\n\nセキュリティ上 ClientSecret はアプリケーションのユーザに漏れてはならないため、アプリケーションが保有するサーバで生成されることを想定します。\n\n### シーケンス\n\n\n### JWT 仕様 \n- ヘッダの `\"alg\"` 属性および署名アルゴリズムは `\"HS256\"` のみ可\n- クレームセット ( 署名される JSON オブジェクト ) は以下に示す [JWTClaims](#tag/jwt_claims) オブジェクト\n- 記載されていない属性が含まれていた場合は無視されます\n- 無視された要素は、同一 RoomInstance 中の Connection 同士で実施される RoomSpec の比較からも無視されます\n\n### エラー\nAccess Tokenに入力不足や不備があった場合、[RICOH Live Streaming Client SDK エラー仕様の ParameterError](/docs/clientsdk-error-specification/#parametererror) に記載されている対応エラーが発生します。\n\n### 録画機能について\n[JWTClaims](#tag/jwt_claims) の `room_spec.recording` と `connection_spec.recording` の設定によって録画機能を利用することができます。\n\n**クラウド録画機能 は、現在 β 版として提供しております。**
\n**そのため、商用サービスでの利用をご検討される際には、必ず事前に[お問い合わせ](https://livestreamingricohhelp.zendesk.com/hc/ja/requests/new)ください。**
\n**β 版のクラウド録画機能の利用料金は無料です。正式版は有償での提供を検討しておりますので、あらかじめご了承ください。**
\n**正式版を公開せずに β 版の公開を終了する、もしくは、正式版では β 版から機能や仕様が変更される可能性がありますので、あらかじめご了承ください。**\n"},"x-tagGroups":[{"name":"Schemas","tags":["jwt_claims","room_spec","media_control","connection_spec","id_string"]}],"tags":[{"name":"jwt_claims","x-displayName":"JWTClaims","description":""},{"name":"room_spec","x-displayName":"RoomSpec","description":""},{"name":"media_control","x-displayName":"MediaControl","description":""},{"name":"connection_spec","x-displayName":"ConnectionSpec","description":""},{"name":"id_string","x-displayName":"IDString","description":""}],"paths":{},"components":{"schemas":{"JWTClaims":{"type":"object","required":["nbf","exp","room_id","room_spec","connection_id"],"properties":{"nbf":{"type":"integer","description":"- このトークンの有効期限の開始時刻\n- Unixtime\n- [RFC7519](https://tools.ietf.org/html/rfc7519) で定義されています\n- `exp - nbf <= 3600` (`exp` と `nbf` の差は 1 時間以内) である必要があります\n"},"exp":{"type":"integer","description":"- このトークンの有効期限の終了時刻\n- Unixtime\n- [RFC7519](https://tools.ietf.org/html/rfc7519) で定義されています\n"},"room_id":{"type":"string","format":"IDString","description":"- 入室する Room の ID\n"},"room_spec":{"$ref":"#/components/schemas/RoomSpec"},"connection_id":{"type":"string","format":"IDString","description":"- 自 Connection の ID\n- 同じ room_id の Room 内に同じ connection_id の Connection が既に存在していた場合、既に存在していた方のConnectionが退室処理されます\n"},"connection_spec":{"$ref":"#/components/schemas/ConnectionSpec"}}},"RoomSpec":{"type":"object","required":["type"],"description":"- 入室する Room の仕様\n- 同時に同じ Room に入室する Connection は同じ RoomSpec が指定されていなければなりません\n","properties":{"type":{"$ref":"#/components/schemas/RoomType"},"max_connections":{"oneOf":[{"$ref":"#/components/schemas/MaxConnections"},{"$ref":"#/components/schemas/MaxConnectionsLarge"}]},"media_control":{"$ref":"#/components/schemas/MediaControl"},"recording":{"$ref":"#/components/schemas/RoomSpecRecording"},"classification_label":{"type":"string","format":"IDString","default":"default","description":"- 課金分類ラベル\n"}}},"MaxConnections":{"title":"最大接続数 (sfu_large以外)","type":"integer","minimum":1,"maximum":50,"description":"- RoomSpec.type に sfu_large 以外を設定した場合の Room に入室できる最大 Connection 数\n- 互換性維持のため 1~10000 の範囲で指定可能ですが、サービス内部では上限 50 接続に丸められます\n"},"MaxConnectionsLarge":{"title":"最大接続数 (sfu_large)","type":"integer","minimum":1,"maximum":300,"description":"- RoomSpec.type に sfu_large を設定した場合の Room に入室できる最大 Connection 数\n"},"MediaControl":{"type":"object","description":"- Room 全体に対するメディア制御設定\n- type が \"sfu\" または \"sfu_large\" の時のみ有効\n - 指定を省略した場合 `{\"bitrate_reservation_mbps\": 10}` を指定したのと同じ扱いになります\n- type が \"p2p\" または \"p2p_turn\" の時は、Room の最大帯域はブラウザ間の帯域制御に依存し、指定値は無視されます\n","properties":{"bitrate_reservation_mbps":{"type":"integer","minimum":1,"maximum":250,"default":10,"description":"- Room ごとに利用可能な帯域幅の最大値を Mbps 単位で指定\n- Room の利用帯域幅は、すべての接続の送信と受信の合計値であり、各接続が利用する帯域は、合計が bitrate_reservation_mbps の設定内に収まるように調整されます\n"}}},"RoomSpecRecording":{"title":"RoomSpecRecording","type":"object","default":{"recording_on_start":false,"composition_recording":{"enabled":false,"format":"mp4","video":{"resolution":"auto","max_bitrate_kbps":"auto"},"audio":{"codec":"aac"}}},"description":"- β 機能\n- Room 全体に対する録画設定\n- type が \"sfu\" または \"sfu_large\" の時のみ有効\n - RoomSpecRecording 全体を省略することも可能です。その場合、録画は行われません\n- type が \"p2p\" または \"p2p_turn\" の時は録画をサポートしないため、指定値が無視されます\n- 現状の制約\n - 録画を実行する場合、 storage を aws_s3 で設定することが必須になります\n","required":["storage"],"properties":{"recording_on_start":{"type":"boolean","default":false,"description":"- Room 開始時に録画を有効にするかどうかの設定\n"},"storage":{"type":"string","enum":["aws_s3"],"description":"- 録画データを保存するストレージの設定\n- 事前にクライアントアプリ設定 API で保存先のストレージやクレデンシャルの設定を行っている必要があります\n- 値\n - aws_s3: お客様の AWS の S3 バケットに保存します\n"},"composition_recording":{"type":"object","default":{"enabled":false,"format":"mp4","video":{"resolution":"auto","max_bitrate_kbps":"auto"},"audio":{"codec":"aac"}},"required":["enabled"],"description":"- 合成録画ファイルに対する設定\n- 省略した場合、 合成ファイルは作成されません\n- type が \"sfu\" または \"sfu_large\" の時のみ有効\n- type が \"p2p\" または \"p2p_turn\" の時は録画をサポートしないため、設定は無視されます\n- 合成対象のファイルにビデオが含まれるものがない場合は、音声のみの合成であっても、合成に失敗します\n- 合成録画ファイルの映像コーデックは VP9 形式で固定です\n","properties":{"enabled":{"type":"boolean","description":"合成処理するのであれば `true` を指定"},"format":{"type":"string","enum":["mp4"],"default":"mp4","description":"- メディアファイルのフォーマット\n- 値\n - mp4: MP4 形式\n"},"video":{"type":"object","description":"映像設定","properties":{"resolution":{"type":"string","enum":["4k","2k","fhd","hd","equi_3840","equi_1920","equi_1024","equi_640","auto","`${number}x${number}`"],"default":"auto","description":"- プリセットの名称、または数値を指定して設定可能\n- プリセットの名称を指定\n - 4k: 4K 解像度 (3840x2160)\n - 2k: 2K 解像度 (2560x1440)\n - fhd: FullHD 解像度 (1920x1080)\n - hd: HD解像度 (1280x720)\n - equi_3840: 360 映像の解像度 (3840x1920)\n - equi_1920: 360 映像の解像度 (1920x960)\n - equi_1024: 360 映像の解像度 (1024x512)\n - equi_640: 360 映像の解像度 (640x320)\n - auto: 自動設定\n- 数値を指定\n - `{width}x{height}` の形式で指定\n - width/height の値は 16 以上 3840 以下の 4 の倍数\n - 例: 1920x1080\n- auto 設定について\n - 合成対象の video が 1 つの場合: video の解像度の値\n - 合成対象の video が複数の場合: 2560x1440\n"},"max_bitrate_kbps":{"oneOf":[{"type":"string","enum":["auto"]},{"type":"integer"}],"minimum":100,"maximum":2000,"default":"auto","description":"- 合成録画ファイルの video の最大ビットレート\n- プリセットの名称、または数値を指定して設定可能\n- プリセットの名称を指定\n - auto: 自動設定\n- 数値を指定\n - 100 以上 2000 以下\n- auto 設定について\n - 合成対象の video が1つの場合: video のビットレートの値\n - 合成対象の video が複数の場合: 2000\n"}}},"audio":{"type":"object","description":"音声設定","properties":{"codec":{"type":"string","enum":["aac","opus"],"default":"aac","description":"- 音声コーデック設定\n- 値\n - aac: AAC 形式\n - opus: OPUS 形式\n"}}}}}}},"ConnectionSpec":{"title":"ConnectionSpec","type":"object","default":{"recording":{"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"composition":{"use_audio":true,"use_video":true}}},"description":"自 Connection の仕様","properties":{"recording":{"$ref":"#/components/schemas/ConnectionSpecRecording"}}},"ConnectionSpecRecording":{"title":"ConnectionSpecRecording","type":"object","default":{"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"composition":{"use_audio":true,"use_video":true}},"description":"- β 機能\n- Connection に対する録画設定\n- type が `sfu` または `sfu_large` の時のみ有効\n - 指定を省略した場合、 `{ \"store\": true, \"video\": { \"codec\": \"h264\" }, \"audio\": { \"codec\": \"aac\" }, \"composition\": { \"use_audio\": true, \"use_video\": true } }` を指定したものとして扱われます\n- type が `p2p` または `p2p_turn` の時は録画をサポートしないため、指定値が無視されます\n","properties":{"store":{"type":"boolean","default":true,"description":"- 自 Connection の映像の単一拠点録画ファイルを保存対象とするかどうか\n"},"format":{"type":"string","enum":["mp4"],"default":"mp4","description":"- メディアファイルのフォーマット\n- 値\n - mp4: MP4 形式\n"},"video":{"type":"object","description":"`store`を`true`にした際に保存される単一拠点録画ファイルの映像設定\n","properties":{"codec":{"type":"string","enum":["h264","vp9"],"default":"h264","description":"- 映像コーデック設定\n- 値\n - h264: H.264 形式\n - vp9: VP9 形式\n"}}},"audio":{"type":"object","description":"`store`を`true`にした際に保存される単一拠点録画ファイルの音声設定\n","properties":{"codec":{"type":"string","enum":["aac","opus"],"default":"aac","description":"- 音声コーデック設定\n- 値\n - aac: AAC 形式\n - opus: OPUS 形式\n"}}},"composition":{"type":"object","default":{"use_audio":true,"use_video":true},"description":"- 自 Connection の audio または video を合成対象とするかどうか\n","properties":{"use_video":{"type":"boolean","default":true,"description":"- video を合成対象とするかどうか\n"},"use_audio":{"type":"boolean","default":true,"description":"- audio を合成対象とするかどうか\n"}}}}},"IDString":{"type":"string","pattern":"^[a-zA-Z0-9.%+^_\"`{|}~<>\\\\\\\\-]{1,255}$","description":"- 1 文字以上 255 文字以下\n- ASCII\n- 以下の文字のみ許可\n - 英数字\n - 次の記号: ``.%+^_\"`{|}~<>\\-``\n"},"RoomType":{"type":"string","enum":["sfu","sfu_large","p2p","p2p_turn"],"description":"- Room の種類\n - sfu\n - SFURoom 型接続\n - ある程度の人数での双方向会議向けです\n - sfu_large\n - 大規模イベント向けの SFURoom 型接続\n - 送信可能な Client 数に制限がありますが、1Room あたりの接続可能 Client 数が増えます\n - p2p\n - P2PRoom 型接続\n - 1 対 1 など少人数でのコミュニケーション向けです\n - p2p_turn\n - TURN サーバーを利用する P2PRoom 型接続\n - Room 型 p2p と比べて TURN サーバが利用可能できるため、Client が接続できる可能性が向上します\n"}}}}},"searchIndex":{"store":["tag/jwt_claims","tag/room_spec","tag/media_control","tag/connection_spec","tag/id_string"],"index":{"version":"2.3.9","fields":["title","description"],"fieldVectors":[["title/0",[0,1.386]],["description/0",[1,0.087,2,1.386,3,0.087]],["title/1",[4,1.386]],["description/1",[1,0.087,3,0.087,5,1.386]],["title/2",[6,1.386]],["description/2",[1,0.087,3,0.087,7,1.386]],["title/3",[8,1.386]],["description/3",[1,0.087,3,0.087,9,1.386]],["title/4",[10,1.386]],["description/4",[1,0.087,3,0.087,11,1.386]]],"invertedIndex":[["",{"_index":3,"title":{},"description":{"0":{},"1":{},"2":{},"3":{},"4":{}}}],["connectionspec",{"_index":8,"title":{"3":{}},"description":{}}],["idstr",{"_index":10,"title":{"4":{}},"description":{}}],["jwtclaim",{"_index":0,"title":{"0":{}},"description":{}}],["mediacontrol",{"_index":6,"title":{"2":{}},"description":{}}],["roomspec",{"_index":4,"title":{"1":{}},"description":{}}],["schemadefinit",{"_index":1,"title":{},"description":{"0":{},"1":{},"2":{},"3":{},"4":{}}}],["schemaref=\"#/components/schemas/connectionspec",{"_index":9,"title":{},"description":{"3":{}}}],["schemaref=\"#/components/schemas/idstr",{"_index":11,"title":{},"description":{"4":{}}}],["schemaref=\"#/components/schemas/jwtclaim",{"_index":2,"title":{},"description":{"0":{}}}],["schemaref=\"#/components/schemas/mediacontrol",{"_index":7,"title":{},"description":{"2":{}}}],["schemaref=\"#/components/schemas/roomspec",{"_index":5,"title":{},"description":{"1":{}}}]],"pipeline":[]}},"options":{}}; var container = document.getElementById('redoc'); Redoc.hydrate(__redoc_state, container);