mirror of
https://github.com/nextcloud/spreed.git
synced 2025-12-18 05:20:50 +01:00
Although recordings should not fail in some cases they could (for example, if the configuration is wrong, the disk is full...). A new recording status, "failed", has been added to notify that situation to the Nextcloud server from the recording server. Typically call participants will not be able to do anything about the failure, so the clients can just show a notification to the moderators and hint about asking the system administrators. In any case, even if the recording status is "failed" further recordings can be started, which will behave as if the recording was started from the "none" status. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
7.3 KiB
7.3 KiB
Call recording API
- API v1: Base endpoint
/ocs/v2.php/apps/spreed/api/v1: since Nextcloud 26
Start call recording
- Required capability:
recording-v1 - Method:
POST - Endpoint:
/recording/{token} - Data:
| Field | Type | Description |
|---|---|---|
| status | int | Type of call recording (see Constants - Call recording status) |
- Response:
- Status code:
200 OK400 Bad RequestMessage:status. When the status to start is invalid.400 Bad RequestMessage:config. Need to enable the configrecording.400 Bad RequestMessage:recording. Already have a recording in progress.400 Bad RequestMessage:call. Call is not activated.401 UnauthorizedWhen the participant is a guest.403 ForbiddenWhen the user is not a moderator/owner.412 Precondition FailedWhen the lobby is active and the user is not a moderator.
- Status code:
Stop call recording
-
Required capability:
recording-v1 -
Method:
DELETE -
Endpoint:
/recording/{token} -
Response:
- Status code:
200 OK400 Bad RequestMessage:config. Need to enable the configrecording.400 Bad RequestMessage:call. Call is not activated.401 UnauthorizedWhen the participant is a guest.403 ForbiddenWhen the user is not a moderator/owner.412 Precondition FailedWhen the lobby is active and the user is not a moderator.
- Status code:
Store call recording
-
Required capability:
recording-v1 -
Method:
POST -
Endpoint:
/recording/{token}/store -
Header:
| field | type | Description |
|---|---|---|
TALK_RECORDING_RANDOM |
string | Random string that needs to be concatenated with room token to generate the checksum using the recording_servers['secret']. |
TALK_RECORDING_CHECKSUM |
string | The checksum generated with TALK_RECORDING_RANDOM. |
- Data:
| field | type | Description |
|---|---|---|
file |
string | File with the recording in a multipart/form-data request. |
owner |
string | The person that started the recording. |
- Response:
- Status code:
200 OK400 Bad RequestError:invalid_file: File in block list or invalid400 Bad RequestError:empty_file: Invalid file extension400 Bad RequestError:file_mimetype: Invalid mimetype400 Bad RequestError:file_name. :nvalid file name400 Bad RequestError:file_extension: Invalid file extension400 Bad RequestError:owner_participant: Owner is not to be a participant of room400 Bad RequestError:owner_invalid: Owner invalid400 Bad RequestError:owner_permission: Owner have not permission to store record file401 UnauthorizedWhen the validation as recording server failed404 Not FoundRoom not found429 Too Many RequestBrute force protection
- Status code:
Dismiss store call recording notification
- Required capability:
recording-v1 - Method:
DELETE - Endpoint:
/recording/{token}/notification - Data:
| field | type | Description |
|---|---|---|
timestamp |
string | Timestamp in seconds and UTC time zone that notification was created. |
- Response:
- Status code:
200 OK403 ForbiddenWhen the user is not a moderator/owner.404 Not FoundRoom not found
- Status code:
Share store call recording
- Required capability:
recording-v1 - Method:
POST - Endpoint:
/recording/{token}/share-chat - Data:
| field | type | Description |
|---|---|---|
timestamp |
string | Timestamp in seconds and UTC time zone that notification was created. |
fileId |
integer | File id of recording to share at the room. |
- Response:
- Status code:
200 OK400 Bad RequestError:file: Shared file is invalid400 Bad RequestError:system: Internal system error403 ForbiddenWhen the user is not a moderator/owne404 Not FoundRoom not found
- Status code:
Recording server requests
-
Required capability:
recording-v1 -
Method:
POST -
Endpoint:
/recording/backend -
Header:
| field | type | Description |
|---|---|---|
TALK_RECORDING_RANDOM |
string | Random string that needs to be concatenated with request body to generate the checksum using the secret configured for the backend. |
TALK_RECORDING_CHECKSUM |
string | The checksum generated with TALK_RECORDING_RANDOM. |
-
Data:
- Body as a JSON encoded string; format depends on the request type, see below.
-
Response:
- Status code:
200 OK400 Bad Request: When the body data does not match the expected format.403 Forbidden: When the request validation failed.
- Status code:
Started call recording
-
Data format:
{ "type": "started", "started": { "token": "the-token-of-the-room", "status": "the-type-of-recording (see [Constants - Call recording status](constants.md#call-recording-status))", "actor": { "type": "the-type-of-the-actor", "id": "the-id-of-the-actor", }, }, } -
Response:
- (Additional) Status code:
404 Not Found: When the room is not found.
- (Additional) Status code:
Stopped call recording
-
Data format:
{ "type": "stopped", "stopped": { "token": "the-token-of-the-room", "actor": { "type": "the-type-of-the-actor", "id": "the-id-of-the-actor", }, }, }actoris optional
-
Response:
- (Additional) Status code:
404 Not Found: When the room is not found.
- (Additional) Status code:
Failed call recording
-
Data format:
{ "type": "failed", "failed": { "token": "the-token-of-the-room", }, } -
Response:
- (Additional) Status code:
404 Not Found: When the room is not found.
- (Additional) Status code: