Aller au contenu

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-CommunityId Envoyez le X-CommunityId de la communauté où l’opération a lieu.
Les descriptions des endpoints viennent directement de la spécification de l’API et sont en portugais pour l’instant. L’interface autour est traduite.

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

NomTypeDescription
X-CommunityIdfacultatifstring (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

NomTypeDescription
purposeobligatoirecontentVideo | eventRecording | galleryImage | classifiedImage | parcelPhoto | supportPhoto | statusVideo | contentCommentVideo | statusCommentVideo | lessonVideo | videoPoster | upvoteImage | channelImage | channelVideo | welcomeVideo | episodeAudio | episodeVideo | episodeCover | showCover | mediaEpisodeCommentVideo
spaceIdobligatoirestring (uuid)
filesobligatoireobject[]
files[].nameobligatoirestringmax 255
files[].mimeTypeobligatoirestring
files[].sizeobligatoireintegerBytes. · ≥ 1

Réponses

StatutDescription
200URLs geradas (e os itens recusados).
400Requisição inválida — falha de validação.
401Token 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`).
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
429Mais de 20 lotes ou de 300 arquivos por hora para este perfil, ou 100 envios sem confirmar.
500Erro 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":[{}]}'