APIアクティビティ Webhook 設定 APIpostアクティビティ Webhook 設定登録getアクティビティ Webhook 設定取得delアクティビティ Webhook 設定リセットスキーマActivityWebhookVerificationRequestWebhookVerificationResponseIDStringAPI 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 で発生したイベントのクライアントアプリに対する表現形式であり、本 API を利用することでクライアントアプリは Webhook によるアクティビティの通知を受けることができます。共通仕様REST API の認証/認可に失敗した場合、ステータスコード 401 のレスポンスが返却されますWebhook 設定登録時にクライアントアプリにより設定された Webhook URL の検証Webhook 設定の登録時には指定された Webhook の URL が正当なクライアントアプリのものであることを検証するため以下のようなフローを実行します。RICOH Live Streaming は Webhook 登録リクエストを受け取ると webhook_url の URL に対して Webhook URL の検証リクエストを送信します。クライアントアプリはこれに対して所定のレスポンスを返却することで、 webhook_url が正当なクライアントアプリの Webhook URL だと証明する必要がありますアクティビティ Webhook 設定登録 > Callbacks > Webhook URL の検証 に記載された仕様に従ってこの処理の実装が必要ですWebhook 通知時に RICOH Live Streaming から送られた Webhook メッセージの検証Webhook の URL に対して通知されたメッセージが RICOH Live Streaming からのものであることをクライアントアプリが検証することが可能です。RICOH Live Streaming Webhook 通知時に所定の方法で作成された署名を X-RICOH-LS-Signature ヘッダに付与して送信しますクライアントアプリはこの署名を検証し、RICOH Live Streaming から送られた通知であることを検証できますアクティビティ Webhook 設定登録 > Callbacks > Activity Webhook の通知 に記載された仕様にしたがってこの処理を実装する事が可能ですWebhook 通知のリトライLive Streaming からクライアントアプリへの Webhook リクエストで ネットワークエラー、リクエストタイムアウト (30 秒)、または 500 系のエラーが発生した場合、以下の戦略に基づいてリトライを行います。前回のエラーからそれぞれ、5 秒後, 10 秒後, 20 秒後, 40 秒後にリトライし、成功した時点で終了します上記の 4 回リトライしても成功しない場合はその Webhook 通知を諦めますアクティビティ Webhook 設定 APIアクティビティ Webhook 設定登録 アクティビティ発生時にクライアントアプリ通知される Webhook の URL を設定しますRICOH Live Streaming はこのリクエストを受け付けると、webhook_url の URL に対して、[Callbacks] の [Webhook URL の検証] に記載する POST リクエストを送出しますクライアントアプリケーションはこのリクエストを受けたら [Webhook URL の検証] に記載された所定のレスポンスを返す必要がありますRICOH Live Streaming はこのレスポンスを受けて検証に成功すれば Webhook 設定の登録を受け付けますすでに Webhook 設定が登録済みだった場合、既存の設定は上書きされますAuthorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDRequest Body schema: application/jsonアクティビティ Webhook 設定を更新するための WebhookConfig オブジェクトwebhook_urlrequiredstring <= 255 characters RICOH Live Streaming からの Webhook 通知を受けるクライアントアプリの WebAPI の URLhttps:// から開始している必要があり、すなわちクライアントアプリの Web API は HTTPS に対応おり、信頼された認証局によって発行された証明書が利用されていることResponses200 作成された WebhookConfig オブジェクト400 リクエストボディ不正、または、クライアントアプリに対する Webhook Verification Request に失敗したerror_id の値invalid_parameter: リクエストボディのパラメータの不正、options のキーに不正だったプロパティ名が入るverification_failed: クライアントアプリに対する Webhook Verification Request に失敗、options に Webhook Verification Request のエラー情報が入る Callbacks postWebhook URL の検証postWebhook メッセージの通知post/clients/{client_id}/activity/webhook/registerv1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/activity/webhook/register Request samples PayloadContent typeapplication/jsonCopy{"webhook_url": "string"} Response samples 200400Content typeapplication/jsonCopy{"webhook_url": "string"} Callback payload samples CallbackPOST: Webhook URL の検証POST: Webhook メッセージの通知POST: Webhook URL の検証Content typeapplication/jsonCopy{"type": "webhook.verification","challenge": "string"}アクティビティ Webhook 設定取得 Authorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDResponses200 WebhookConfig オブジェクト404 Webhook 設定が未登録get/clients/{client_id}/activity/webhookv1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/activity/webhook Response samples 200Content typeapplication/jsonCopy{"webhook_url": "string"}アクティビティ Webhook 設定リセット Authorizations:ClientBasicpath Parametersclient_idrequiredstring Client IDResponses204 リセット成功404 Webhook 設定が未登録delete/clients/{client_id}/activity/webhookv1 Endpointhttps://api.livestreaming.mw.smart-integration.ricoh.com/v1/clients/{client_id}/activity/webhookActivity One of ActivityRoomStartedActivityRoomEndedActivityConnectionJoinedActivityConnectionLeftActivityRecordingCompletedActivityRecordingFailedactivity_idrequiredstring アクティビティを一意に識別する IDenvrequiredstring Enum: "prod" "dev" アクティビティの発生した環境created_atrequiredstring
アクティビティが生成された時刻ISO8601 形式typerequiredstring Value: "room.started" RoomInstance の生成を示すアクティビティ種別 room.starteddatarequiredobject (ActivityRoom) ある Room の生成時の情報をまとめた構造体。room_spec の接続時に省略されていたパラメータについては、デフォルト値で埋めて返却しますp2p 接続時は recording_status は省略されますExampleActivityRoomStartedActivityRoomEndedActivityConnectionJoinedActivityConnectionLeftActivityRecordingCompletedActivityRecordingFailedActivityRoomStartedCopy Expand all Collapse all {"activity_id": "string","env": "prod","created_at": "2019-08-24T14:15:22Z","type": "room.started","data": {"room_id": "string","room_instance_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"},"recording_status": {"in_recording": true},"started_at": "2019-08-24T14:15:22Z","ended_at": "2019-08-24T14:15:22Z"}}WebhookVerificationRequesttyperequiredstring Value: "webhook.verification" webhook.verification 固定challengerequiredstring RICOH Live Streaming がランダムに生成した文字列Copy{"type": "webhook.verification","challenge": "string"}WebhookVerificationResponsechallenge_signaturerequiredstring Webhook URL の検証リクエストで受け取った challenge の値に対してクライアントアプリケーションが内部で保持している Client Secret をキーとして HMAC hex digest (sha256) を計算した結果に sha256= のプレフィックスをつけた文字列Copy{"challenge_signature": "string"}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アクティビティとは、RICOH Live Streaming で発生したイベントのクライアントアプリに対する表現形式であり、本 API を利用することでクライアントアプリは Webhook によるアクティビティの通知を受けることができます。\n\n### 共通仕様\n- REST API の認証/認可に失敗した場合、ステータスコード 401 のレスポンスが返却されます\n\n### Webhook 設定登録時にクライアントアプリにより設定された Webhook URL の検証\nWebhook 設定の登録時には指定された Webhook の URL が正当なクライアントアプリのものであることを検証するため以下のようなフローを実行します。\n\n\n\nRICOH Live Streaming は Webhook 登録リクエストを受け取ると `webhook_url` の URL に対して Webhook URL の検証リクエストを送信します。\n- クライアントアプリはこれに対して所定のレスポンスを返却することで、 `webhook_url` が正当なクライアントアプリの Webhook URL だと証明する必要があります\n- **[アクティビティ Webhook 設定登録](#tag/api_activity_webhook_config/paths/~1clients~1%7Bclient_id%7D~1activity~1webhook~1register/post)** > **Callbacks** > **Webhook URL の検証** に記載された仕様に従ってこの処理の実装が必要です\n\n### Webhook 通知時に RICOH Live Streaming から送られた Webhook メッセージの検証\nWebhook の URL に対して通知されたメッセージが RICOH Live Streaming からのものであることをクライアントアプリが検証することが可能です。\n- RICOH Live Streaming Webhook 通知時に所定の方法で作成された署名を `X-RICOH-LS-Signature` ヘッダに付与して送信します\n- クライアントアプリはこの署名を検証し、RICOH Live Streaming から送られた通知であることを検証できます\n- **[アクティビティ Webhook 設定登録](#tag/api_activity_webhook_config/paths/~1clients~1%7Bclient_id%7D~1activity~1webhook~1register/post)** > **Callbacks** > **Activity Webhook の通知** に記載された仕様にしたがってこの処理を実装する事が可能です\n\n### Webhook 通知のリトライ\nLive Streaming からクライアントアプリへの Webhook リクエストで ネットワークエラー、リクエストタイムアウト (30 秒)、または 500 系のエラーが発生した場合、以下の戦略に基づいてリトライを行います。\n- 前回のエラーからそれぞれ、5 秒後, 10 秒後, 20 秒後, 40 秒後にリトライし、成功した時点で終了します\n- 上記の 4 回リトライしても成功しない場合はその Webhook 通知を諦めます\n"},"servers":[{"url":"https://api.livestreaming.mw.smart-integration.ricoh.com/v1","description":"v1 Endpoint"}],"x-tagGroups":[{"name":"API","tags":["api_activity_webhook_config"]},{"name":"スキーマ","tags":["activity","webhook_verification_request","webhook_verification_response","id_string"]}],"tags":[{"name":"api_activities","x-displayName":"アクティビティ API"},{"name":"api_activity_webhook_config","x-displayName":"アクティビティ Webhook 設定 API"},{"name":"webhook_verification_request","x-displayName":"WebhookVerificationRequest","description":""},{"name":"webhook_verification_response","x-displayName":"WebhookVerificationResponse","description":""},{"name":"activity","x-displayName":"Activity","description":""},{"name":"id_string","x-displayName":"IDString","description":""}],"paths":{"/clients/{client_id}/activity/webhook/register":{"post":{"summary":"アクティビティ Webhook 設定登録","description":"- アクティビティ発生時にクライアントアプリ通知される Webhook の URL を設定します\n- RICOH Live Streaming はこのリクエストを受け付けると、`webhook_url` の URL に対して、[Callbacks] の [Webhook URL の検証] に記載する POST リクエストを送出します\n - クライアントアプリケーションはこのリクエストを受けたら [Webhook URL の検証] に記載された所定のレスポンスを返す必要があります\n - RICOH Live Streaming はこのレスポンスを受けて検証に成功すれば Webhook 設定の登録を受け付けます\n- すでに Webhook 設定が登録済みだった場合、既存の設定は上書きされます\n","tags":["api_activity_webhook_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"}},"callbacks":{"Webhook Verification":{"Webhook 設定登録リクエストボディの webhook_url の URL":{"post":{"summary":"Webhook URL の検証","tags":["アクティビティ Webhook"],"description":"Webhook 登録リクエストの設定の正当性を検証するために RICOH Live Streaming からクライアントアプリの `webhook_url` の URL に対して検証のためのリクエストを行います\n- クライアントアプリケーションは `type` が `webhook.verification` であるリクエストを受け取ったら、`challenge` の値を取り出し、クライアントアプリケーションが内部で保持している Client Secret をキーとして HMAC hex digest (sha256) を計算した結果に `sha256=` のプレフィックスをつけた文字列を `challenge_signature` の値としてレスポンスを返却します\n- RICOH Live Streaming は返却された `challenge_signature` を検証し、正当であれば設定の登録を受け付けます\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookVerificationRequest"}}}},"responses":{"200":{"description":"上述した `challenge_signature` を含む WebhookVerificationResponse オブジェクト\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookVerificationResponse"}}}}}}}},"Webhook Notification":{"Webhook 設定登録リクエストボディの webhook_url の URL":{"post":{"summary":"Webhook メッセージの通知","tags":["アクティビティ Webhook"],"description":"RICOH Live Streaming でクライアントアプリに通知すべきアクティビティが発生した際にその都度 `webhook_url` で設定された URL に対して通知のリクエストを行います\n- 制約事項\n - Webhook の通知の順序が `created_at` の順序になることを必ずしも保証しません\n","parameters":[{"$ref":"#/components/parameters/X-RICOH-LS-Signature"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"responses":{"200":{"description":"クライアントアプリは Webhook 通知を受け取ったらステータスコード 200 を返します"}}}}}}}},"/clients/{client_id}/activity/webhook":{"get":{"summary":"アクティビティ Webhook 設定取得","tags":["api_activity_webhook_config"],"security":[{"ClientBasic":[]}],"parameters":[{"$ref":"#/components/parameters/client_id"}],"responses":{"200":{"$ref":"#/components/responses/responses-200"},"404":{"description":"Webhook 設定が未登録"}}},"delete":{"summary":"アクティビティ Webhook 設定リセット","tags":["api_activity_webhook_config"],"security":[{"ClientBasic":[]}],"parameters":[{"$ref":"#/components/parameters/client_id"}],"responses":{"204":{"$ref":"#/components/responses/204"},"404":{"description":"Webhook 設定が未登録"}}}}},"components":{"schemas":{"Activity":{"oneOf":[{"$ref":"#/components/schemas/ActivityRoomStarted"},{"$ref":"#/components/schemas/ActivityRoomEnded"},{"$ref":"#/components/schemas/ActivityConnectionJoined"},{"$ref":"#/components/schemas/ActivityConnectionLeft"},{"$ref":"#/components/schemas/ActivityRecordingCompleted"},{"$ref":"#/components/schemas/ActivityRecordingFailed"}]},"ActivityRecordingCompleted":{"description":"録画処理が完了した際に発生するアクティビティ\n- AccessToken で設定したフォーマット変換や合成処理、ストレージへの転送など、全ての処理が完了した時点で発生します\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["recording.completed"],"description":"録画の完了を示すアクティビティ種別 `recording.completed`"},"data":{"type":"object","description":"- `outputs`: 録画ファイル/合成ファイルの出力情報\n","properties":{"recording_id":{"type":"string","description":"録画 ID"},"outputs":{"$ref":"#/components/schemas/ActivityRecordingOutputs"}}}}}]},"ActivityRecordingFailed":{"description":"録画処理が失敗した際に発生するアクティビティ\n- 一部の録画ファイルの処理が成功していても、エラーが発生した時点で失敗扱いとなります\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["recording.failed"],"description":"録画の失敗を示すアクティビティ種別 `recording.failed`"},"data":{"type":"object","description":"- `errors`: 発生したエラー情報のリスト\n - `error_id` の値\n - `recording_storage_no_config`: AccessToken の設定で外部ストレージを設定しているが、録画ストレージ設定 API でストレージ設定が登録されていません\n - `recording_storage_invalid_credential`: 録画ストレージ設定 API で設定されたストレージのクレデンシャルが不正\n - `recording_storage_permission_denied`: 録画ストレージ設定 API で設定されたストレージのクレデンシャルに権限が不足しています\n - `recording_storage_error`: 録画ストレージ設定 API で設定されたストレージへの保存時に上記以外のエラーが発生\n - `recording_transcode_error`: 単一拠点録画の変換処理で何らかのエラーが発生\n - `recording_composition_error`: 録画の合成処理で何らかのエラーが発生\n - `recording_composition_error_no_video`: 録画の合成処理で必要となるvideoトラックがないため合成できない\n - `internal_error`: RICOH Live Streaming の内部エラーが発生\n- `partial_outputs`: エラー発生までに成功していた録画ファイル/合成ファイルの出力情報\n","required":["error"],"properties":{"recording_id":{"type":"string","description":"録画 ID"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}},"partial_outputs":{"$ref":"#/components/schemas/ActivityRecordingOutputs"}}}}}]},"ActivityRoomStarted":{"description":"RoomInstance が新規に作成された時に送信される Activity\n- ある RoomId を指定して最初の Connection が Join した時点で発生します\n- 同じ RoomId を指定した場合でも、接続している Connection が 0 個から 1 個になった時点で新しい RoomInstance が割り当てられて Activity が発生し、接続している Connection が 0 個になった時点でその RoomInstance が破棄されます\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["room.started"],"description":"RoomInstance の生成を示すアクティビティ種別 `room.started`"},"data":{"$ref":"#/components/schemas/ActivityRoom"}}}]},"ActivityRoomEnded":{"description":"RoomInstance が破棄された時に送信される Activity\n- RoomInstance から最後の Connection が切断した時点で発生します\n- 同じ RoomId を指定した場合でも、接続している Connection が 0 個から 1 個になった時点で新しい RoomInstance が割り当てられて Activity が発生し、接続している Connection が 0 個になった時点でその RoomInstance が破棄されます\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["room.ended"],"description":"RoomInstance の生成を示すアクティビティ種別 `room.ended`"},"data":{"$ref":"#/components/schemas/ActivityRoom"}}}]},"ActivityConnectionJoined":{"description":"Connection が Room に接続した時に送信されるActivity\n- 最初の Connection が接続した場合、 ActivityRoomStarted も同時に送信されます\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["connection.joined"],"description":"RoomInstance の生成を示すアクティビティ種別 `connection.joined`"},"data":{"$ref":"#/components/schemas/ActivityConnection"}}}]},"ActivityConnectionLeft":{"description":"Connection が Roomから切断された時に送信される Activity\n- 最後の Connection が切断した場合、 ActivityRoomEnded も同時に送信されます\n","allOf":[{"$ref":"#/components/schemas/ActivityBase"},{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["connection.left"],"description":"RoomInstance の生成を示すアクティビティ種別 `connection.left`"},"data":{"$ref":"#/components/schemas/ActivityConnection"}}}]},"ActivityRecordingOutputs":{"type":"object","properties":{"connection_recordings":{"description":"各 Connection の単一拠点録画ファイルの出力情報","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ConnectionRecordingMetadataWithMediaFile"},{"$ref":"#/components/schemas/ConnectionRecordingMetadataWithoutMediaFile"}]}},"composition_recordings":{"description":"録画合成ファイルの出力情報","type":"array","items":{"allOf":[{"$ref":"#/components/schemas/CompositionRecordingMetadata"},{"$ref":"#/components/schemas/ActivityRecordingLocations"}]}}}},"ConnectionRecordingMetadataWithMediaFile":{"allOf":[{"$ref":"#/components/schemas/schemas-ConnectionRecordingMetadataWithMediaFile"},{"$ref":"#/components/schemas/ActivityRecordingLocations"}]},"ConnectionRecordingMetadataWithoutMediaFile":{"type":"object","description":"単一拠点録画に関するメタデータ (単一拠点録画ファイルが保存されない場合)","required":["room_id","room_instance_id","recording_id","connection_id","connection_instance_id","exists_since","exists_until"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"room_instance_id":{"type":"string","format":"UUIDv4","description":"ある Room の生死単位で割り振られる ID"},"recording_id":{"type":"string","description":"Recording の ID"},"connection_id":{"type":"string","format":"IDString","description":"Connection の ID"},"connection_instance_id":{"type":"string","format":"UUIDv4","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)"}}},"ActivityRecordingLocations":{"type":"object","properties":{"aws_s3_url":{"description":"AccessToken で録画ファイルのストレージに `aws_s3` を指定した場合は、保存先の S3 URL が入り、そうでない場合は空","type":"string"}}},"ActivityRoom":{"description":"ある Room の生成時の情報をまとめた構造体。\n- room_spec の接続時に省略されていたパラメータについては、デフォルト値で埋めて返却します\n- p2p 接続時は recording_status は省略されます\n","type":"object","required":["room_id","room_instance_id","room_spec","started_at"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"room_instance_id":{"type":"string","format":"UUIDv4","description":"Room の生死単位で割り振られる ID"},"room_spec":{"$ref":"#/components/schemas/RoomSpec"},"recording_status":{"$ref":"#/components/schemas/RecordingStatus"},"started_at":{"type":"string","format":"date-time","description":"RoomInstance が生成された時刻\n- ISO8601 形式\n"},"ended_at":{"type":"string","format":"date-time","description":"RoomInstance が破棄された時刻\n- Room の生存中に発行される Activity では省略されます\n- ISO8601 形式\n"}}},"ActivityConnection":{"description":"ある Connection の接続時の情報をまとめた構造体\n- connection_spec および connect_options の Connection の接続時に省略されていたパラメータについては、デフォルト値で埋めて返却します\n","type":"object","required":["room_id","room_instance_id","connection_id","connection_instance_id","connection_spec","connect_options","joined_at"],"properties":{"room_id":{"type":"string","format":"IDString","description":"接続先 Room の room_id"},"room_instance_id":{"type":"string","format":"UUIDv4","description":"接続先 Room の room_instance_id"},"connection_id":{"type":"string","format":"IDString","description":"この Connection の接続時に指定された connection_id"},"connection_instance_id":{"type":"string","format":"UUIDv4","description":"- Connection の生死単位で割り振られる ID\n- 同じ connection_id でも接続時間が異なれば違う connection_instance_id が割り振られます\n"},"connection_spec":{"$ref":"#/components/schemas/ConnectionSpec"},"joined_at":{"type":"string","format":"date-time","description":"Connection が接続した時刻\n- ISO8601 形式\n"},"left_at":{"type":"string","format":"date-time","description":"Connection が切断した時刻\n- 接続中に発行される Activity では省略されます\n- ISO8601 形式\n"}}},"ActivityBase":{"type":"object","required":["activity_id","env","created_at"],"properties":{"activity_id":{"type":"string","description":"アクティビティを一意に識別する ID"},"env":{"type":"string","enum":["prod","dev"],"description":"アクティビティの発生した環境"},"created_at":{"type":"string","format":"date-time","description":"アクティビティが生成された時刻\n- ISO8601 形式\n"}}},"WebhookConfig":{"type":"object","description":"- アプリケーションが RICOH Live Streaming からの Webhook 通知を受けるための設定\n","required":["webhook_url"],"properties":{"webhook_url":{"type":"string","maxLength":255,"description":"- RICOH Live Streaming からの Webhook 通知を受けるクライアントアプリの WebAPI の URL\n- `https://` から開始している必要があり、すなわちクライアントアプリの Web API は HTTPS に対応おり、信頼された認証局によって発行された証明書が利用されていること\n"}}},"WebhookVerificationRequest":{"type":"object","description":"RICOH Live Streaming がクライアントアプリケーションに対して Webhook URL の検証をする際のリクエエストボディ","required":["type","challenge"],"properties":{"type":{"type":"string","enum":["webhook.verification"],"description":"`webhook.verification` 固定\n"},"challenge":{"type":"string","description":"RICOH Live Streaming がランダムに生成した文字列"}}},"WebhookVerificationResponse":{"type":"object","description":"クライアントアプリケーションが Webhook URL の検証リクエストを受けて返却するレスポンスのボディ","required":["challenge_signature"],"properties":{"challenge_signature":{"type":"string","description":"Webhook URL の検証リクエストで受け取った `challenge` の値に対してクライアントアプリケーションが内部で保持している Client Secret をキーとして HMAC hex digest (sha256) を計算した結果に `sha256=` のプレフィックスをつけた文字列\n"}}},"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-WebhookConfig":{"type":"object","description":"- アプリケーションが RICOH Live Streaming からの Webhook 通知を受けるための設定\n","required":["webhook_url"],"properties":{"webhook_url":{"type":"string","maxLength":255,"description":"- RICOH Live Streaming からの Webhook 通知を受けるクライアントアプリの WebAPI の URL\n- `https://` から開始している必要があり、すなわちクライアントアプリの Web API は HTTPS に対応おり、信頼された認証局によって発行された証明書が利用されていること\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"}}},"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"},"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"}}}}}}},"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"}}},"RecordingStatus":{"description":"- Room の録画に関する状態を格納するオブジェクト\n","type":"object","required":["in_recording"],"properties":{"in_recording":{"type":"boolean","description":"- その Room が録画中なら true 、録画停止中なら false が格納されます\n"}}},"ConnectionSpecRecording":{"title":"ConnectionSpecRecording","type":"object","default":{"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"store_raw":false,"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 }, \"store_raw\": false }` を指定したものとして扱われます\n- type が `p2p` または `p2p_turn` の時は録画をサポートしないため、指定値が無視されます\n","properties":{"store":{"type":"boolean","default":true,"description":"- 自 Connection の映像の単一拠点録画ファイルを保存対象とするかどうか\n- この設定を `true` にする場合、コーデックやフォーマット変換、I フレーム挿入などのトランスコーディングを実行した録画ファイルが保存されます\n- 一辺の長さが 4096 を超える映像のトランスコーディングは失敗するので、その場合に録画ファイルが必要であれば `store_raw` を `true` に設定してください\n"},"format":{"type":"string","enum":["mp4"],"default":"mp4","description":"- `store`を`true`にした際に保存される単一拠点録画ファイルのフォーマット\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"}}},"store_raw":{"type":"boolean","default":false,"description":"- コーデックやフォーマット変換、I フレーム挿入などのトランスコーディングを行わない生の録画ファイルを保存対象とするかどうか\n- この設定を `true` にする場合、配信時の映像及び音声のコーデックがそのまま生の録画ファイルとして保存されます\n- ファイルのフォーマットは WebM です\n - 将来的に MP4 に変更される可能性があります\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"}}}}},"ConnectionSpec":{"title":"ConnectionSpec","type":"object","default":{"recording":{"store":true,"format":"mp4","video":{"codec":"h264"},"audio":{"codec":"aac"},"store_raw":false,"composition":{"use_audio":true,"use_video":true}}},"description":"自 Connection の仕様","properties":{"recording":{"$ref":"#/components/schemas/ConnectionSpecRecording"}}},"ConnectionRecordingVideoMetadata":{"type":"object","description":"録画の映像データに関するメタデータ\n- 録画ファイルが映像データを持たない場合は空\n","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"}}},"RecordingAudioMetadata":{"type":"object","description":"録画の音声データに関するメタデータ\n- 録画ファイルが音声データを持たない場合は空\n","required":["codec"],"properties":{"codec":{"type":"string","enum":["aac","opus"],"description":"音声データのコーデック"}}},"RawRecordingVideoMetadata":{"type":"object","description":"生の録画の映像データに関するメタデータ\n- 録画ファイルが映像データを持たない場合は空\n","required":["codec","max_bitrate_kbps","width","height"],"properties":{"codec":{"type":"string","enum":["h264","vp8","vp9","h265","av1"],"description":"映像データのコーデック"},"width":{"type":"integer","description":"- 映像データの幅\n"},"height":{"type":"integer","description":"- 映像データの高さ\n"}}},"RawRecordingAudioMetadata":{"type":"object","description":"生の録画の音声データに関するメタデータ\n- 録画ファイルが音声データを持たない場合は空\n","required":["codec"],"properties":{"codec":{"type":"string","enum":["opus"],"description":"音声データのコーデック"}}},"RawConnectionRecordingMetadata":{"type":"object","description":"生の録画に関するメタデータ\n- 生の録画ファイルを保存せずに単一拠点録画ファイルのみを保存する場合は空\n","properties":{"format":{"type":"string","enum":["webm"],"description":"メディアファイルのフォーマット"},"video":{"$ref":"#/components/schemas/RawRecordingVideoMetadata"},"audio":{"$ref":"#/components/schemas/RawRecordingAudioMetadata"}}},"schemas-ConnectionRecordingMetadataWithMediaFile":{"type":"object","description":"単一拠点録画に関するメタデータ (単一拠点録画ファイルが保存される場合)","required":["room_id","room_instance_id","recording_id","connection_id","connection_instance_id","exists_since","exists_until","started_at","ended_at"],"properties":{"room_id":{"type":"string","format":"IDString","description":"Room の ID"},"room_instance_id":{"type":"string","format":"UUIDv4","description":"ある Room の生死単位で割り振られる ID"},"recording_id":{"type":"string","description":"Recording の ID"},"connection_id":{"type":"string","format":"IDString","description":"Connection の ID"},"connection_instance_id":{"type":"string","format":"UUIDv4","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":"メディアファイルのフォーマット\n- 単一拠点録画ファイルを保存せずに生の録画ファイルのみを保存する場合は空\n"},"video":{"$ref":"#/components/schemas/ConnectionRecordingVideoMetadata"},"audio":{"$ref":"#/components/schemas/RecordingAudioMetadata"},"raw_recording":{"$ref":"#/components/schemas/RawConnectionRecordingMetadata"}}},"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)"}}},"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"}}},"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"}}}},"parameters":{"client_id":{"in":"path","name":"client_id","schema":{"type":"string"},"required":true,"description":"- Client ID\n"},"X-RICOH-LS-Signature":{"in":"header","name":"X-RICOH-LS-Signature","schema":{"type":"string"},"required":true,"description":"- Webhook 通知時には Client Secret をキーとしてリクエストボディのペイロードから HMAC hex digest (sha256) を計算して先頭に `sha256=` のプレフィックスをつけた文字列を `X-RICOH-LS-Signature` ヘッダに付与して送信します\n- クライアントアプリはこの署名を検証し、RICOH Live Streaming から送られた通知であることを検証できます\n"}},"securitySchemes":{"ClientBasic":{"type":"http","scheme":"basic","description":"Client ID を username、Client Secretを password にした Basic 認証"}},"requestBodies":{"requestBody":{"required":true,"description":"アクティビティ Webhook 設定を更新するための WebhookConfig オブジェクト\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-WebhookConfig"}}}}},"responses":{"200":{"description":"作成された WebhookConfig オブジェクト","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-WebhookConfig"}}}},"204":{"description":"リセット成功"},"400":{"description":"リクエストボディ不正、または、クライアントアプリに対する Webhook Verification Request に失敗した\n- error_id の値\n - invalid_parameter: リクエストボディのパラメータの不正、options のキーに不正だったプロパティ名が入る\n - verification_failed: クライアントアプリに対する Webhook Verification Request に失敗、options に Webhook Verification Request のエラー情報が入る\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-Error"}}}},"responses-200":{"description":"WebhookConfig オブジェクト","content":{"application/json":{"schema":{"$ref":"#/components/schemas/schemas-WebhookConfig"}}}}}}}},"searchIndex":{"store":["tag/api_activity_webhook_config","tag/api_activity_webhook_config/paths/~1clients~1{client_id}~1activity~1webhook~1register/post","tag/api_activity_webhook_config/paths/~1clients~1{client_id}~1activity~1webhook/get","tag/api_activity_webhook_config/paths/~1clients~1{client_id}~1activity~1webhook/delete","tag/activity","tag/webhook_verification_request","tag/webhook_verification_response","tag/id_string"],"index":{"version":"2.3.9","fields":["title","description"],"fieldVectors":[["title/0",[0,0.057,1,0.362,2,1.317]],["description/0",[]],["title/1",[0,0.063,1,0.421]],["description/1",[0,0.088,1,0.511,3,1.643,4,1.038,5,1.038,6,1.038,7,0.597,8,0.597,9,0.597,10,0.597]],["title/2",[0,0.063,1,0.421]],["description/2",[11,1.963]],["title/3",[0,0.063,1,0.421]],["description/3",[11,1.963]],["title/4",[12,2.287]],["description/4",[0,0.066,13,0.893,14,2.308]],["title/5",[15,2.287]],["description/5",[0,0.066,13,0.893,16,2.308]],["title/6",[17,2.287]],["description/6",[0,0.066,13,0.893,18,2.308]],["title/7",[19,2.287]],["description/7",[0,0.066,13,0.893,20,2.308]]],"invertedIndex":[["",{"_index":0,"title":{"0":{},"1":{},"2":{},"3":{}},"description":{"1":{},"4":{},"5":{},"6":{},"7":{}}}],["activ",{"_index":12,"title":{"4":{}},"description":{}}],["api",{"_index":2,"title":{"0":{}},"description":{}}],["callback",{"_index":8,"title":{},"description":{"1":{}}}],["clients/{client_id}/activity/webhook",{"_index":11,"title":{},"description":{"2":{},"3":{}}}],["clients/{client_id}/activity/webhook/regist",{"_index":10,"title":{},"description":{"1":{}}}],["idstr",{"_index":19,"title":{"7":{}},"description":{}}],["live",{"_index":5,"title":{},"description":{"1":{}}}],["post",{"_index":9,"title":{},"description":{"1":{}}}],["ricoh",{"_index":4,"title":{},"description":{"1":{}}}],["schemadefinit",{"_index":13,"title":{},"description":{"4":{},"5":{},"6":{},"7":{}}}],["schemaref=\"#/components/schemas/act",{"_index":14,"title":{},"description":{"4":{}}}],["schemaref=\"#/components/schemas/idstr",{"_index":20,"title":{},"description":{"7":{}}}],["schemaref=\"#/components/schemas/webhookverificationrequest",{"_index":16,"title":{},"description":{"5":{}}}],["schemaref=\"#/components/schemas/webhookverificationrespons",{"_index":18,"title":{},"description":{"6":{}}}],["stream",{"_index":6,"title":{},"description":{"1":{}}}],["url",{"_index":3,"title":{},"description":{"1":{}}}],["webhook",{"_index":1,"title":{"0":{},"1":{},"2":{},"3":{}},"description":{"1":{}}}],["webhook_url",{"_index":7,"title":{},"description":{"1":{}}}],["webhookverificationrequest",{"_index":15,"title":{"5":{}},"description":{}}],["webhookverificationrespons",{"_index":17,"title":{"6":{}},"description":{}}]],"pipeline":[]}},"options":{}}; var container = document.getElementById('redoc'); Redoc.hydrate(__redoc_state, container);