UPSTREAM BASELINE: nextcloud/spreed v22.0.12 (без изменений)
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Type checking / changes (push) Has been cancelled
Type checking / test (push) Has been cancelled
Type checking / typescript-summary (push) Has been cancelled
Node tests / changes (push) Has been cancelled
Node tests / test (push) Has been cancelled
Node tests / test-summary (push) Has been cancelled
Источник: https://github.com/nextcloud/spreed/archive/refs/tags/v22.0.12.tar.gz С этого коммита ветка официального Nextcloud Talk отрезана (решение владельца 2026-07-06). Все дальнейшие изменения — только наши; версии релизов: 22.0.12-f7.N.
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
# 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](constants.md#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 config `recording`.
|
||||
+ `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.
|
||||
|
||||
## 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 config `recording`.
|
||||
+ `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.
|
||||
|
||||
## 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 invalid
|
||||
+ `400 Bad Request` Error: `empty_file`: Invalid file extension
|
||||
+ `400 Bad Request` Error: `file_mimetype`: Invalid mimetype
|
||||
+ `400 Bad Request` Error: `file_name`. :nvalid file name
|
||||
+ `400 Bad Request` Error: `file_extension`: Invalid file extension
|
||||
+ `400 Bad Request` Error: `owner_participant`: Owner is not to be a participant of room
|
||||
+ `400 Bad Request` Error: `owner_invalid`: Owner invalid
|
||||
+ `400 Bad Request` Error: `owner_permission`: Owner have not permission to store record file
|
||||
+ `401 Unauthorized` When the validation as recording server failed
|
||||
+ `404 Not Found` Room not found
|
||||
+ `429 Too Many Request` Brute force protection
|
||||
|
||||
## 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
|
||||
|
||||
## 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 invalid
|
||||
+ `400 Bad Request` Error: `system`: Internal system error
|
||||
+ `403 Forbidden` When the user is not a moderator/owne
|
||||
+ `404 Not Found` Room not found
|
||||
|
||||
## 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.
|
||||
|
||||
### Started call recording
|
||||
|
||||
* Data format:
|
||||
|
||||
```json
|
||||
{
|
||||
"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.
|
||||
|
||||
### Stopped call recording
|
||||
|
||||
* Data format:
|
||||
|
||||
```json
|
||||
{
|
||||
"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.
|
||||
|
||||
### Failed call recording
|
||||
|
||||
* Data format:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "failed",
|
||||
"failed": {
|
||||
"token": "the-token-of-the-room",
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
* Response:
|
||||
- (Additional) Status code:
|
||||
+ `404 Not Found`: When the room is not found.
|
||||
Reference in New Issue
Block a user