Pede as URLs de envio direto de várias mídias de uma vez (envio em massa)
POST/api/media/upload-urls
- Auth
- Jeton requis
- Clé d’API:
- media:write
- X-CommunityId
X-CommunityIdEnvoyez le X-CommunityId de la communauté où l’opération a lieu.
O mesmo que `POST /api/media/upload-url`, para **1 a 50 arquivos** de uma finalidade e de um space (finalidade, space e permissão conferidos uma vez). Cada arquivo é conferido sozinho (tipo, extensão, tamanho: imagem até 50 MB): o que falha volta com `error` e não impede os outros. Para cada item aceito, `PUT` em `uploadUrl` com os `headers` (10 minutos) e depois `POST /api/media/confirm-batch` (ou `/confirm`, um por um).
`totalBytes` soma os aceitos; `usage` é o uso atual da comunidade e `warning` já considera o lote (`nearLimit` a partir de 80% do armazenamento, `overLimit` acima de 100%). Como todo limite de mídia, **avisa e não recusa**. Limites por perfil: 20 lotes por hora; **300 arquivos por hora** somando `upload-url` e `upload-urls` (cada arquivo conta; 429 `uploadBudgetExceeded`); e no máximo **100 arquivos enviados e ainda não confirmados** por finalidade (429 `tooManyPending`: confirme os que subiram antes de pedir mais). O lote passa inteiro ou é recusado inteiro nesses limites.
En-têtes
| Nom | Type | Description |
|---|---|---|
X-CommunityIdfacultatif | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Corps de la requête application/json
| Nom | Type | Description |
|---|---|---|
purposeobligatoire | contentVideo | eventRecording | galleryImage | classifiedImage | parcelPhoto | supportPhoto | statusVideo | contentCommentVideo | statusCommentVideo | lessonVideo | videoPoster | upvoteImage | channelImage | channelVideo | welcomeVideo | episodeAudio | episodeVideo | episodeCover | showCover | mediaEpisodeCommentVideo | |
spaceIdobligatoire | string (uuid) | |
filesobligatoire | object[] | |
files[].nameobligatoire | string | max 255 |
files[].mimeTypeobligatoire | string | |
files[].sizeobligatoire | integer | Bytes. · ≥ 1 |
Réponses
| Statut | Description |
|---|---|
200 | URLs geradas (e os itens recusados). |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`). |
403 | Autenticado, mas sem permissão para esta operação. |
404 | Recurso não encontrado. |
429 | Mais de 20 lotes ou de 300 arquivos por hora para este perfil, ou 100 envios sem confirmar. |
500 | Erro interno do servidor. |
Exemple curl
curl -X POST "https://api.memberfy.net/api/media/upload-urls" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"purpose":"contentVideo","spaceId":"00000000-0000-0000-0000-000000000000","files":[{}]}'