Pede as URLs de envio direto de várias mídias de uma vez (envio em massa)
POST/api/media/upload-urls
- Auth
- Requiere token
- X-CommunityId
X-CommunityIdEnvía el X-CommunityId de la comunidad en la que ocurre la operación.
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.
Headers
| Nombre | Tipo | Descripción |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Cuerpo de la solicitud application/json
| Nombre | Tipo | Descripción |
|---|---|---|
purposeobligatorio | contentVideo | eventRecording | galleryImage | classifiedImage | parcelPhoto | supportPhoto | |
spaceIdobligatorio | string (uuid) | |
filesobligatorio | object[] | |
files[].nameobligatorio | string | max 255 |
files[].mimeTypeobligatorio | string | |
files[].sizeobligatorio | integer | Bytes. · ≥ 1 |
Respuestas
| Código | Descripción |
|---|---|
200 | URLs geradas (e os itens recusados). |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado. |
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. |
Ejemplo con 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":[{}]}'