mirror of
https://github.com/nextcloud/spreed.git
synced 2025-07-21 10:37:10 +00: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 OK
400 Bad Request
Message:status
. When the status to start is invalid.400 Bad Request
Message:config
. Need to enable the configrecording
.400 Bad Request
Message:recording
. Already have a recording in progress.400 Bad Request
Message:call
. Call is not activated.401 Unauthorized
When the participant is a guest.403 Forbidden
When the user is not a moderator/owner.412 Precondition Failed
When 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 OK
400 Bad Request
Message:config
. Need to enable the configrecording
.400 Bad Request
Message:call
. Call is not activated.401 Unauthorized
When the participant is a guest.403 Forbidden
When the user is not a moderator/owner.412 Precondition Failed
When 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 OK
400 Bad Request
Error:invalid_file
: File in block list or invalid400 Bad Request
Error:empty_file
: Invalid file extension400 Bad Request
Error:file_mimetype
: Invalid mimetype400 Bad Request
Error:file_name
. :nvalid file name400 Bad Request
Error:file_extension
: Invalid file extension400 Bad Request
Error:owner_participant
: Owner is not to be a participant of room400 Bad Request
Error:owner_invalid
: Owner invalid400 Bad Request
Error:owner_permission
: Owner have not permission to store record file401 Unauthorized
When the validation as recording server failed404 Not Found
Room not found429 Too Many Request
Brute 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 OK
403 Forbidden
When the user is not a moderator/owner.404 Not Found
Room 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 OK
400 Bad Request
Error:file
: Shared file is invalid400 Bad Request
Error:system
: Internal system error403 Forbidden
When the user is not a moderator/owne404 Not Found
Room 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 OK
400 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", }, }, }
actor
is 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: