API録画ストレージ設定 APIpostAWS S3 録画ストレージ設定登録getAWS S3 録画ストレージ設定取得delAWS S3 録画ストレージ設定リセットスキーマAwsS3RecordingStorageConfigメタデータスキーマConnectionRecordingMetadataCompositionRecordingMetadataIDStringAPI docs by RedoclyRICOH Live Streaming REST API: 録画 API (v1)Download OpenAPI specification:DownloadRICOH Live Streaming REST API は Live Streaming サービスの公開 REST API です。本ページは録画 API の仕様について記載します。録画機能についてクラウド録画機能 は、現在 β 版として提供しております。そのため、商用サービスでの利用をご検討される際には、必ず事前にお問い合わせください。β 版のクラウド録画機能の利用料金は無料です。正式版は有償での提供を検討しておりますので、あらかじめご了承ください。正式版を公開せずに β 版の公開を終了する、もしくは、正式版では β 版から機能や仕様が変更される可能性がありますので、あらかじめご了承ください。クラウド録画機能に関連して現在発生している問題はRICOH Live Streaming クラウド既知の問題を確認してください。録画の設定についてRoomInstance に対する録画を行うには、AccessToken の設定を利用した録画の制御を利用します。また、録画データの保存先として、事前に本ページの 録画ストレージ設定 API を利用してお客様の管理するクラウドストレージを設定しておく必要があります。お客様ストレージに保存する録画ファイル仕様お客様のストレージに録画データを保存することを指定した場合、保存先に指定されたURLから以下の保存パス仕様に示すパスに単一拠点録画ファイルと単一拠点メタデータファイルがセットで保存されます。また、録画データの合成を指定した場合、対象となる単一拠点録画ファイルを合成して 1 つにした合成録画ファイルと合成録画メタデータファイルも併せて保存します。保存ファイル仕様単一拠点録画ファイル保存パス: /{room_id}/{RoomInstanceの開始時刻}/{Sequence}/{connection_id}-{ConnectionInstance の存在開始時刻}-{ConnectionInstance の存在終了時刻}.mp4拠点の Connection が以下のいずれかの条件を満たす場合、単一拠点録画ファイルは保存されませんAccessToken の JWTClaims で connection_spec.recording.store の値を false にした録画期間中、常に映像/音声ともに HardMute だった単一拠点録画メタデータファイル保存パス: /{room_id}/{RoomInstanceの開始時刻}/{Sequence}/{connection_id}-{ConnectionInstance の存在開始時刻}-{ConnectionInstance の存在終了時刻}.json本ページの ConnectionRecordingMetadata のスキーマを持つ JSON であり、以下のどちらかの形式を持ちますConnectionRecordingMetadataWithMediaFile: 単一拠点録画ファイルが保存される拠点のメタデータ形式ConnectionRecordingMetadataWithoutMediaFile: 単一拠点録画ファイルが保存されない拠点のメタデータ形式単一拠点録画ファイルが保存されない拠点の Connection でも、録画期間中に RoomInstance に参加していれば、単一拠点録画メタデータファイルは保存されます合成録画ファイル保存パス: /{room_id}/{RoomInstanceの開始時刻}/{Sequence}/compositions/{RoomInstance の録画開始時刻}-{RoomInstance の録画終了時刻}.mp4録画期間中、すべての参加拠点の単一拠点録画ファイルが常に映像/音声ともに HardMute だった場合は合成録画ファイルも保存されません合成録画メタデータファイル保存パス: /{room_id}/{RoomInstanceの開始時刻}/{Sequence}/compositions/{RoomInstance の録画開始時刻}-{RoomInstance の録画終了時刻}.json本ページの CompositionRecordingMetadata のスキーマを持つ JSON 形式録画期間中、常に映像/音声ともに HardMute だった Connection については CompositionRecordingMetadata の connection 属性の配列に含まれません保存ファイル仕様の詳細説明保存パスに含まれる時刻は UTC で yyyyMMddhhmmss の形式になりますSequence は、1 つの RoomInstance の生存期間中に行った録画の通し番号です1 から始まり、録画を開始する度にインクリメントされます現状は AccessToken の recording_on_start 設定による RoomInstance 全体の録画のみ可能ですが、今後 REST API による任意のタイミングでの録画の開始/停止に対応予定ですConnectionInstance の存在開始時刻/存在終了時刻 とは、ConnectionInstance が RoomInstanceに入室/退出した期間と RoomInstance の録画期間の重なる期間です共通仕様API の認証/認可に失敗した場合、ステータスコード 401 のレスポンスが返却されます録画ストレージ設定 APIAWS S3 録画ストレージ設定登録 レスポンスボディからsecret_access_keyフィールドは取り除かれますすでに録画ストレージ設定が登録済みだった場合、既存の設定は上書きされますAuthorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDRequest Body schema: application/jsonAWS S3 の録画ストレージ設定を更新するための AwsS3RecordingStorageConfig オブジェクトs3_urlrequiredstring <= 255 characters 録画ファイルを保存するための S3 バケットの仮想ホスティング URLバケットの仮想ホスティングについては以下のドキュメントを参照のことバケットの仮想ホスティングについて を参照URL のスタイルとして、仮想ホスティング形式を利用することhttps://
.s3..amazonaws.com/access_key_idrequiredstring S3 バケットにアクセスするための IAM ユーザのアクセスキーIAM ユーザとアクセスキーの作成に関しては以下のドキュメントを参照のことIAMユーザの作成カスタムポリシーの設定アクセスキーの作成カスタムポリシーの設定は、以下のように録画ファイルの保存に最低限のものにすること{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAll", "Effect": "Deny", "NotAction": "*", "Resource": "*" }, { "Sid": "AllowS3Upload", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::/*" ] } ]}secret_access_keyrequiredstring S3 バケットにアクセスするための IAM ユーザのシークレットアクセスキーアクセスキーと共に生成されたシークレットResponses200 作成された AwsS3RecordingStorageConfig オブジェクト400 リクエストボディ不正error_id の値invalid_parameter: リクエストボディのパラメータの不正、options のキーに不正だったプロパティ名が入るpost/clients/{client_id}/recording_storages/aws_s3/registerv1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/recording_storages/aws_s3/register Request samples PayloadContent typeapplication/jsonCopy{"s3_url": "string","access_key_id": "string","secret_access_key": "string"} Response samples 200400Content typeapplication/jsonCopy{"s3_url": "string","access_key_id": "string","secret_access_key": "string"}AWS S3 録画ストレージ設定取得 レスポンスボディからsecret_access_keyフィールドは取り除かれますAuthorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDResponses200 AwsS3RecordingStorageConfig オブジェクト404 録画ストレージ設定が未登録get/clients/{client_id}/recording_storages/aws_s3v1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/recording_storages/aws_s3 Response samples 200Content typeapplication/jsonCopy{"s3_url": "string","access_key_id": "string","secret_access_key": "string"}AWS S3 録画ストレージ設定リセット Authorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDResponses204 リセット成功404 録画ストレージ設定が未登録delete/clients/{client_id}/recording_storages/aws_s3v1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/recording_storages/aws_s3AwsS3RecordingStorageConfigs3_urlrequiredstring <= 255 characters 録画ファイルを保存するための S3 バケットの仮想ホスティング URLバケットの仮想ホスティングについては以下のドキュメントを参照のことバケットの仮想ホスティングについて を参照URL のスタイルとして、仮想ホスティング形式を利用することhttps://.s3..amazonaws.com/access_key_idrequiredstring S3 バケットにアクセスするための IAM ユーザのアクセスキーIAM ユーザとアクセスキーの作成に関しては以下のドキュメントを参照のことIAMユーザの作成カスタムポリシーの設定アクセスキーの作成カスタムポリシーの設定は、以下のように録画ファイルの保存に最低限のものにすること{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAll", "Effect": "Deny", "NotAction": "*", "Resource": "*" }, { "Sid": "AllowS3Upload", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::/*" ] } ]}secret_access_keyrequiredstring S3 バケットにアクセスするための IAM ユーザのシークレットアクセスキーアクセスキーと共に生成されたシークレットCopy{"s3_url": "string","access_key_id": "string","secret_access_key": "string"}ConnectionRecordingMetadata One of ConnectionRecordingMetadataWithMediaFileConnectionRecordingMetadataWithoutMediaFileroom_idrequiredstring Room の IDrecording_idrequiredstring Recording の IDconnection_idrequiredstring Connection の IDexists_sincerequiredstring ConnectionInstance の存在開始時刻。ConnectionInstance が RoomInstance に入室した時刻と RoomInstance の録画開始時刻の内遅い時刻 (ISO8601)exists_untilrequiredstring ConnectionInstance の存在終了時刻。ConnectionInstance が RoomInstance から退出した時刻と RoomInstance の録画終了時刻の内早い時刻 (ISO8601)started_atrequiredstring ConnectionInstance の録画開始時刻。ただし、録画開始時に ConnectionInstance の映像音声の双方が hardmute であった場合、最初にどちらかが unmute になった時刻 (ISO8601)ended_atrequiredstring ConnectionInstance の録画終了時刻。ただし、録画終了時に ConnectionInstance の映像音声の双方が hardmute であった場合、最後に双方が hardmute になった時刻 (ISO8601)formatrequiredstring Value: "mp4" メディアファイルのフォーマットvideoobject (ConnectionRecordingVideoMetadata) 録画の映像データに関するメタデータaudioobject (RecordingAudioMetadata) 録画の音声データに関するメタデータExampleConnectionRecordingMetadataWithMediaFileConnectionRecordingMetadataWithoutMediaFileConnectionRecordingMetadataWithMediaFileCopy Expand all Collapse all {"room_id": "string","recording_id": "string","connection_id": "string","exists_since": "2019-08-24T14:15:22Z","exists_until": "2019-08-24T14:15:22Z","started_at": "2019-08-24T14:15:22Z","ended_at": "2019-08-24T14:15:22Z","format": "mp4","video": {"codec": "h264","width": 0,"height": 0},"audio": {"codec": "aac"}}CompositionRecordingMetadataroom_idrequiredstring Room の IDrecording_idrequiredstring Recording の IDconnectionsrequiredArray of objects (ConnectionMetadata) 合成録画に含まれる ConnectionMetadata の配列started_atrequiredstring RoomInstance の録画開始時刻。ただし、録画開始時に全 ConnectionInstance の映像音声の双方が hardmute であった場合、最初にある ConnectionInstance のどちらかが unmute になった時刻 (ISO8601)ended_atrequiredstring RoomInstance の録画終了時刻。ただし、録画終了時に全 ConnectionInstance の映像音声の双方が hardmute であった場合、最後にある ConnectionInstance の双方が hardmute になった時刻 (ISO8601)formatrequiredstring Value: "mp4" メディアファイルのフォーマットvideoobject (CompositionRecordingVideoMetadata) 録画の映像データに関するメタデータaudioobject (RecordingAudioMetadata) 録画の音声データに関するメタデータCopy Expand all Collapse all {"room_id": "string","recording_id": "string","connections": [{"connection_id": "string","started_at": "2019-08-24T14:15:22Z","ended_at": "2019-08-24T14:15:22Z"}],"started_at": "2019-08-24T14:15:22Z","ended_at": "2019-08-24T14:15:22Z","format": "mp4","video": {"codec": "vp9","max_bitrate_kbps": 100,"width": 0,"height": 0},"audio": {"codec": "aac"}}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 REST API: 録画 API","version":"v1","description":"RICOH Live Streaming REST API は Live Streaming サービスの公開 REST API です。\n\n本ページは録画 API の仕様について記載します。\n\n### 録画機能について\n\n**クラウド録画機能 は、現在 β 版として提供しております。**
\n**そのため、商用サービスでの利用をご検討される際には、必ず事前にお問い合わせください。**
\n**β 版のクラウド録画機能の利用料金は無料です。正式版は有償での提供を検討しておりますので、あらかじめご了承ください。**
\n**正式版を公開せずに β 版の公開を終了する、もしくは、正式版では β 版から機能や仕様が変更される可能性がありますので、あらかじめご了承ください。**
\n**クラウド録画機能に関連して現在発生している問題はRICOH Live Streaming クラウド既知の問題を確認してください。**\n\n### 録画の設定について\n\nRoomInstance に対する録画を行うには、AccessToken の設定を利用した録画の制御を利用します。\n\nまた、録画データの保存先として、事前に本ページの [録画ストレージ設定 API](#tag/api_recording_storage_config) を利用してお客様の管理するクラウドストレージを設定しておく必要があります。\n\n### お客様ストレージに保存する録画ファイル仕様\n\nお客様のストレージに録画データを保存することを指定した場合、保存先に指定されたURLから以下の**保存パス仕様**に示すパスに単一拠点録画ファイルと単一拠点メタデータファイルがセットで保存されます。\nまた、録画データの合成を指定した場合、対象となる単一拠点録画ファイルを合成して 1 つにした合成録画ファイルと合成録画メタデータファイルも併せて保存します。\n\n**保存ファイル仕様**\n- 単一拠点録画ファイル\n - 保存パス: `/{room_id}/{RoomInstanceの開始時刻}/{Sequence}/{connection_id}-{ConnectionInstance の存在開始時刻}-{ConnectionInstance の存在終了時刻}.mp4`\n - 拠点の Connection が以下のいずれかの条件を満たす場合、単一拠点録画ファイルは保存されません\n - AccessToken の JWTClaims で `connection_spec.recording.store` の値を `false` にした\n - 録画期間中、常に映像/音声ともに HardMute だった\n- 単一拠点録画メタデータファイル\n - 保存パス: `/{room_id}/{RoomInstanceの開始時刻}/{Sequence}/{connection_id}-{ConnectionInstance の存在開始時刻}-{ConnectionInstance の存在終了時刻}.json`\n - 本ページの `ConnectionRecordingMetadata` のスキーマを持つ JSON であり、以下のどちらかの形式を持ちます\n - `ConnectionRecordingMetadataWithMediaFile`: 単一拠点録画ファイルが保存される拠点のメタデータ形式\n - `ConnectionRecordingMetadataWithoutMediaFile`: 単一拠点録画ファイルが保存されない拠点のメタデータ形式\n - 単一拠点録画ファイルが保存されない拠点の Connection でも、録画期間中に RoomInstance に参加していれば、単一拠点録画メタデータファイルは保存されます\n- 合成録画ファイル\n - 保存パス: `/{room_id}/{RoomInstanceの開始時刻}/{Sequence}/compositions/{RoomInstance の録画開始時刻}-{RoomInstance の録画終了時刻}.mp4`\n - 録画期間中、すべての参加拠点の単一拠点録画ファイルが常に映像/音声ともに HardMute だった場合は合成録画ファイルも保存されません\n- 合成録画メタデータファイル\n - 保存パス: `/{room_id}/{RoomInstanceの開始時刻}/{Sequence}/compositions/{RoomInstance の録画開始時刻}-{RoomInstance の録画終了時刻}.json`\n - 本ページの `CompositionRecordingMetadata` のスキーマを持つ JSON 形式\n - 録画期間中、常に映像/音声ともに HardMute だった Connection については `CompositionRecordingMetadata` の `connection` 属性の配列に含まれません\n\n**保存ファイル仕様の詳細説明**\n- 保存パスに含まれる時刻は UTC で `yyyyMMddhhmmss` の形式になります\n- `Sequence` は、1 つの RoomInstance の生存期間中に行った録画の通し番号です\n - 1 から始まり、録画を開始する度にインクリメントされます\n - 現状は AccessToken の `recording_on_start` 設定による RoomInstance 全体の録画のみ可能ですが、今後 REST API による任意のタイミングでの録画の開始/停止に対応予定です\n- `ConnectionInstance の存在開始時刻/存在終了時刻` とは、ConnectionInstance が RoomInstanceに入室/退出した期間と RoomInstance の録画期間の重なる期間です\n\n \n\n### 共通仕様\n- API の認証/認可に失敗した場合、ステータスコード 401 のレスポンスが返却されます\n"},"servers":[{"url":"https://api.livestreaming.mw.smart-integration.ricoh.com/v1","description":"v1 Endpoint"}],"x-tagGroups":[{"name":"API","tags":["api_recording_storage_config"]},{"name":"スキーマ","tags":["aws_s3_recording_storage_config"]},{"name":"メタデータスキーマ","tags":["connection_recording_metadata","composition_recording_metadata","id_string"]}],"tags":[{"name":"api_recording_storage_config","x-displayName":"録画ストレージ設定 API"},{"name":"aws_s3_recording_storage_config","x-displayName":"AwsS3RecordingStorageConfig","description":""},{"name":"connection_recording_metadata","x-displayName":"ConnectionRecordingMetadata","description":""},{"name":"composition_recording_metadata","x-displayName":"CompositionRecordingMetadata","description":""},{"name":"connection_metadata","x-displayName":"ConnectionMetadata","description":""},{"name":"id_string","x-displayName":"IDString","description":""}],"paths":{"/clients/{client_id}/recording_storages/aws_s3/register":{"post":{"summary":"AWS S3 録画ストレージ設定登録","description":"- レスポンスボディから`secret_access_key`フィールドは取り除かれます\n- すでに録画ストレージ設定が登録済みだった場合、既存の設定は上書きされます\n","tags":["api_recording_storage_config"],"security":[{"ClientBasic":[]}],"parameters":[{"$ref":"#/components/parameters/client_id"}],"requestBody":{"$ref":"#/components/requestBodies/requestBody"},"responses":{"200":{"$ref":"#/components/responses/200"},"400":{"$ref":"#/components/responses/400"}}}},"/clients/{client_id}/recording_storages/aws_s3":{"get":{"summary":"AWS S3 録画ストレージ設定取得","description":"レスポンスボディから`secret_access_key`フィールドは取り除かれます","tags":["api_recording_storage_config"],"security":[{"ClientBasic":[]}],"parameters":[{"$ref":"#/components/parameters/client_id"}],"responses":{"200":{"$ref":"#/components/responses/responses-200"},"404":{"description":"録画ストレージ設定が未登録"}}},"delete":{"summary":"AWS S3 録画ストレージ設定リセット","tags":["api_recording_storage_config"],"security":[{"ClientBasic":[]}],"parameters":[{"$ref":"#/components/parameters/client_id"}],"responses":{"204":{"$ref":"#/components/responses/204"},"404":{"description":"録画ストレージ設定が未登録"}}}}},"components":{"schemas":{"AwsS3RecordingStorageConfig":{"type":"object","description":"- 録画ファイルを保存するための S3 バケットとクレデンシャルの設定\n","required":["s3_url","access_key_id","secret_access_key"],"properties":{"s3_url":{"type":"string","maxLength":255,"description":"- 録画ファイルを保存するための S3 バケットの仮想ホスティング URL\n- バケットの仮想ホスティングについては以下のドキュメントを参照のこと\n - バケットの仮想ホスティングについて を参照\n- URL のスタイルとして、仮想ホスティング形式を利用すること\n - `https://.s3..amazonaws.com/`\n"},"access_key_id":{"type":"string","description":"- S3 バケットにアクセスするための IAM ユーザのアクセスキー\n- IAM ユーザとアクセスキーの作成に関しては以下のドキュメントを参照のこと\n - IAMユーザの作成\n - カスタムポリシーの設定\n - アクセスキーの作成\n- カスタムポリシーの設定は、以下のように録画ファイルの保存に最低限のものにすること\n\n```\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DenyAll\",\n \"Effect\": \"Deny\",\n \"NotAction\": \"*\",\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"AllowS3Upload\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:PutObject\",\n \"s3:AbortMultipartUpload\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::/*\"\n ]\n }\n ]\n}\n```\n"},"secret_access_key":{"type":"string","description":"- S3 バケットにアクセスするための IAM ユーザのシークレットアクセスキー\n- アクセスキーと共に生成されたシークレット\n"}}},"ConnectionRecordingMetadata":{"oneOf":[{"$ref":"#/components/schemas/ConnectionRecordingMetadataWithMediaFile"},{"$ref":"#/components/schemas/ConnectionRecordingMetadataWithoutMediaFile"}]},"ConnectionRecordingMetadataWithMediaFile":{"type":"object","description":"単一拠点録画に関するメタデータ (単一拠点録画ファイルが保存される場合)","required":["room_id","recording_id","connection_id","exists_since","exists_until","started_at","ended_at","format"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"recording_id":{"type":"string","description":"Recording の ID"},"connection_id":{"type":"string","format":"IDString","description":"Connection の ID"},"exists_since":{"type":"string","format":"date-time","description":"ConnectionInstance の存在開始時刻。ConnectionInstance が RoomInstance に入室した時刻と RoomInstance の録画開始時刻の内遅い時刻 (ISO8601)"},"exists_until":{"type":"string","format":"date-time","description":"ConnectionInstance の存在終了時刻。ConnectionInstance が RoomInstance から退出した時刻と RoomInstance の録画終了時刻の内早い時刻 (ISO8601)"},"started_at":{"type":"string","format":"date-time","description":"ConnectionInstance の録画開始時刻。ただし、録画開始時に ConnectionInstance の映像音声の双方が hardmute であった場合、最初にどちらかが unmute になった時刻 (ISO8601)"},"ended_at":{"type":"string","format":"date-time","description":"ConnectionInstance の録画終了時刻。ただし、録画終了時に ConnectionInstance の映像音声の双方が hardmute であった場合、最後に双方が hardmute になった時刻 (ISO8601)"},"format":{"type":"string","enum":["mp4"],"description":"メディアファイルのフォーマット"},"video":{"$ref":"#/components/schemas/ConnectionRecordingVideoMetadata"},"audio":{"$ref":"#/components/schemas/RecordingAudioMetadata"}}},"ConnectionRecordingMetadataWithoutMediaFile":{"type":"object","description":"単一拠点録画に関するメタデータ (単一拠点録画ファイルが保存されない場合)","required":["room_id","recording_id","connection_id","exists_since","exists_until"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"recording_id":{"type":"string","description":"Recording の ID"},"connection_id":{"type":"string","format":"IDString","description":"Connection の ID"},"exists_since":{"type":"string","format":"date-time","description":"ConnectionInstance の存在開始時刻。ConnectionInstance が RoomInstance に入室した時刻と RoomInstance の録画開始時刻の内遅い時刻 (ISO8601)"},"exists_until":{"type":"string","format":"date-time","description":"ConnectionInstance の存在終了時刻。ConnectionInstance が RoomInstance から退出した時刻と RoomInstance の録画終了時刻の内早い時刻 (ISO8601)"}}},"CompositionRecordingMetadata":{"type":"object","description":"合成録画に関するメタデータ","required":["room_id","recording_id","connections","started_at","ended_at","format"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"recording_id":{"type":"string","description":"Recording の ID"},"connections":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionMetadata"},"description":"合成録画に含まれる ConnectionMetadata の配列"},"started_at":{"type":"string","format":"date-time","description":"RoomInstance の録画開始時刻。ただし、録画開始時に全 ConnectionInstance の映像音声の双方が hardmute であった場合、最初にある ConnectionInstance のどちらかが unmute になった時刻 (ISO8601)"},"ended_at":{"type":"string","format":"date-time","description":"RoomInstance の録画終了時刻。ただし、録画終了時に全 ConnectionInstance の映像音声の双方が hardmute であった場合、最後にある ConnectionInstance の双方が hardmute になった時刻 (ISO8601)"},"format":{"type":"string","enum":["mp4"],"description":"メディアファイルのフォーマット"},"video":{"$ref":"#/components/schemas/CompositionRecordingVideoMetadata"},"audio":{"$ref":"#/components/schemas/RecordingAudioMetadata"}}},"ConnectionMetadata":{"type":"object","description":"合成録画に含まれる Connection の情報","required":["connection_id","started_at","ended_at"],"properties":{"connection_id":{"type":"string","format":"IDString","description":"Connection の ID"},"started_at":{"type":"string","format":"date-time","description":"ConnectionInstance の録画開始時刻。ただし、録画開始時に ConnectionInstance の映像音声の双方が hardmute であった場合、最初にどちらかが unmute になった時刻 (ISO8601)"},"ended_at":{"type":"string","format":"date-time","description":"ConnectionInstance の録画終了時刻。ただし、録画終了時に ConnectionInstance の映像音声の双方が hardmute であった場合、最後に双方が hardmute になった時刻 (ISO8601)"}}},"ConnectionRecordingVideoMetadata":{"type":"object","description":"録画の映像データに関するメタデータ","required":["codec","max_bitrate_kbps","width","height"],"properties":{"codec":{"type":"string","enum":["h264","vp9"],"description":"映像データのコーデック"},"width":{"type":"integer","description":"- 映像データの幅\n"},"height":{"type":"integer","description":"- 映像データの高さ\n"}}},"CompositionRecordingVideoMetadata":{"type":"object","description":"録画の映像データに関するメタデータ","required":["codec","max_bitrate_kbps","width","height"],"properties":{"codec":{"type":"string","enum":["vp9"],"description":"映像データのコーデック"},"max_bitrate_kbps":{"type":"integer","minimum":100,"maximum":2000,"description":"映像の最大ビットレート(Kbps)"},"width":{"type":"integer","description":"- 映像データの幅\n"},"height":{"type":"integer","description":"- 映像データの高さ\n"}}},"RecordingAudioMetadata":{"type":"object","description":"録画の音声データに関するメタデータ","required":["codec"],"properties":{"codec":{"type":"string","enum":["aac","opus"],"description":"音声データのコーデック"}}},"IDString":{"type":"string","pattern":"^[a-zA-Z0-9.%+^_\"`{|}~<>\\\\\\\\-]{1,255}$","description":"- 1 文字以上 255 文字以下\n- ASCII\n- 以下の文字のみ許可\n - 英数字\n - 次の記号: ``.%+^_\"`{|}~<>\\-``\n"},"Error":{"type":"object","required":["error_id"],"properties":{"error_id":{"type":"string","description":"- エラーの種類を識別する ID\n"},"message":{"type":"string","description":"- エラーの内容を記述した開発者向けのメッセージ\n- バージョンアップによってテキストの内容が変更される可能性があるため、これに依存した処理を実装してはいけません\n"},"options":{"type":"object","description":"- エラーの補助情報\n- 内容は API および error_id によって異なります\n"}}},"schemas-AwsS3RecordingStorageConfig":{"type":"object","description":"- 録画ファイルを保存するための S3 バケットとクレデンシャルの設定\n","required":["s3_url","access_key_id","secret_access_key"],"properties":{"s3_url":{"type":"string","maxLength":255,"description":"- 録画ファイルを保存するための S3 バケットの仮想ホスティング URL\n- バケットの仮想ホスティングについては以下のドキュメントを参照のこと\n - バケットの仮想ホスティングについて を参照\n- URL のスタイルとして、仮想ホスティング形式を利用すること\n - `https://.s3..amazonaws.com/`\n"},"access_key_id":{"type":"string","description":"- S3 バケットにアクセスするための IAM ユーザのアクセスキー\n- IAM ユーザとアクセスキーの作成に関しては以下のドキュメントを参照のこと\n - IAMユーザの作成\n - カスタムポリシーの設定\n - アクセスキーの作成\n- カスタムポリシーの設定は、以下のように録画ファイルの保存に最低限のものにすること\n\n```\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"DenyAll\",\n \"Effect\": \"Deny\",\n \"NotAction\": \"*\",\n \"Resource\": \"*\"\n },\n {\n \"Sid\": \"AllowS3Upload\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:PutObject\",\n \"s3:AbortMultipartUpload\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::/*\"\n ]\n }\n ]\n}\n```\n"},"secret_access_key":{"type":"string","description":"- S3 バケットにアクセスするための IAM ユーザのシークレットアクセスキー\n- アクセスキーと共に生成されたシークレット\n"}}},"schemas-Error":{"type":"object","required":["error_id"],"properties":{"error_id":{"type":"string","description":"- エラーの種類を識別する ID\n"},"message":{"type":"string","description":"- エラーの内容を記述した開発者向けのメッセージ\n- バージョンアップによってテキストの内容が変更される可能性があるため、これに依存した処理を実装してはいけません\n"},"options":{"type":"object","description":"- エラーの補助情報\n- 内容は API および error_id によって異なります\n"}}}},"parameters":{"client_id":{"in":"path","name":"client_id","schema":{"type":"string"},"required":true,"description":"- Client ID\n"}},"securitySchemes":{"ClientBasic":{"type":"http","scheme":"basic","description":"Client ID を username、Client Secretを password にした Basic 認証"}},"requestBodies":{"requestBody":{"required":true,"description":"AWS S3 の録画ストレージ設定を更新するための AwsS3RecordingStorageConfig オブジェクト\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-AwsS3RecordingStorageConfig"}}}}},"responses":{"200":{"description":"作成された AwsS3RecordingStorageConfig オブジェクト","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-AwsS3RecordingStorageConfig"}}}},"204":{"description":"リセット成功"},"400":{"description":"リクエストボディ不正\n- error_id の値\n - invalid_parameter: リクエストボディのパラメータの不正、options のキーに不正だったプロパティ名が入る\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-Error"}}}},"responses-200":{"description":"AwsS3RecordingStorageConfig オブジェクト","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-AwsS3RecordingStorageConfig"}}}}}}}},"searchIndex":{"store":["tag/api_recording_storage_config","tag/api_recording_storage_config/paths/~1clients~1{client_id}~1recording_storages~1aws_s3~1register/post","tag/api_recording_storage_config/paths/~1clients~1{client_id}~1recording_storages~1aws_s3/get","tag/api_recording_storage_config/paths/~1clients~1{client_id}~1recording_storages~1aws_s3/delete","tag/aws_s3_recording_storage_config","tag/connection_recording_metadata","tag/composition_recording_metadata","tag/id_string"],"index":{"version":"2.3.9","fields":["title","description"],"fieldVectors":[["title/0",[0,0.05,1,1.744]],["description/0",[]],["title/1",[0,0.041,2,0.758,3,0.758]],["description/1",[0,0.066,4,0.909,5,1.272]],["title/2",[0,0.041,2,0.758,3,0.758]],["description/2",[4,1.395,6,1.395]],["title/3",[0,0.041,2,0.758,3,0.758]],["description/3",[6,1.698]],["title/4",[7,2.215]],["description/4",[0,0.047,8,0.641,9,1.656]],["title/5",[10,2.215]],["description/5",[0,0.047,8,0.641,11,1.656]],["title/6",[12,2.215]],["description/6",[0,0.047,8,0.641,13,1.656]],["title/7",[14,2.215]],["description/7",[0,0.047,8,0.641,15,1.656]]],"invertedIndex":[["",{"_index":0,"title":{"0":{},"1":{},"2":{},"3":{}},"description":{"1":{},"4":{},"5":{},"6":{},"7":{}}}],["api",{"_index":1,"title":{"0":{}},"description":{}}],["aw",{"_index":2,"title":{"1":{},"2":{},"3":{}},"description":{}}],["awss3recordingstorageconfig",{"_index":7,"title":{"4":{}},"description":{}}],["clients/{client_id}/recording_storages/aws_s3",{"_index":6,"title":{},"description":{"2":{},"3":{}}}],["clients/{client_id}/recording_storages/aws_s3/regist",{"_index":5,"title":{},"description":{"1":{}}}],["compositionrecordingmetadata",{"_index":12,"title":{"6":{}},"description":{}}],["connectionrecordingmetadata",{"_index":10,"title":{"5":{}},"description":{}}],["idstr",{"_index":14,"title":{"7":{}},"description":{}}],["s3",{"_index":3,"title":{"1":{},"2":{},"3":{}},"description":{}}],["schemadefinit",{"_index":8,"title":{},"description":{"4":{},"5":{},"6":{},"7":{}}}],["schemaref=\"#/components/schemas/awss3recordingstorageconfig",{"_index":9,"title":{},"description":{"4":{}}}],["schemaref=\"#/components/schemas/compositionrecordingmetadata",{"_index":13,"title":{},"description":{"6":{}}}],["schemaref=\"#/components/schemas/connectionrecordingmetadata",{"_index":11,"title":{},"description":{"5":{}}}],["schemaref=\"#/components/schemas/idstr",{"_index":15,"title":{},"description":{"7":{}}}],["secret_access_key",{"_index":4,"title":{},"description":{"1":{},"2":{}}}]],"pipeline":[]}},"options":{}}; var container = document.getElementById('redoc'); Redoc.hydrate(__redoc_state, container);