Pede a URL de envio direto de vídeo ou arquivo da aula
POST/api/courses/lesson/{lessonId}/media/upload-url
- Auth
- Token erforderlich
- Wer darf:
- owner
- admin
- moderator
- finance
- X-CommunityId
X-CommunityIdSende die X-CommunityId der Community, in der die Operation stattfindet.
Só owner e admin (moderador, financeiro e membro recebem 403). A aula precisa ser do tipo `video` ou `file` (senão 400 em `lessonId`). A API confere o tipo MIME e o tamanho **antes de assinar** e devolve uma URL assinada de escrita (`PUT`, vale 10 minutos) **amarrada à chave, ao `Content-Type` e ao tamanho exatos**: o S3 recusa envio diferente do declarado. O navegador envia o arquivo **direto ao S3** (sem passar pela API), com `Content-Type` igual ao de `headers` e o corpo com exatamente `size` bytes. Depois chame `POST .../media/confirm` com a `key`.
- **Vídeo** (aula `video`): `video/mp4`, `video/webm`, `video/quicktime`; até **500 MB**. Sem transcodificação: toca o que o navegador toca (MP4 H.264 é o seguro). - **Arquivo** (aula `file`): PDF, Word, Excel, PowerPoint (antigos e `.docx/.xlsx/.pptx`), ZIP, PNG, JPEG, GIF, WebP; até **50 MB**. SVG, HTML, JS e executáveis são recusados.
A chave (`courses/{communityId}/{courseId}/{lessonId}/{uuid}.{ext}`) nunca leva texto do usuário. Os limites de armazenamento da comunidade só avisam (veja a resposta do `confirm`), nunca recusam o envio. Nada muda na aula até a confirmação; cancelar ou falhar deixa tudo como estava.
Parameter
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
lessonIdPflicht | path | string (uuid) |
Header
| Name | Typ | Beschreibung |
|---|---|---|
X-CommunityIdoptional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Request-Body application/json
| Name | Typ | Beschreibung |
|---|---|---|
namePflicht | string | Nome original, guardado só para exibir e para o download. · max 255 |
mimeTypePflicht | string | |
sizePflicht | integer | Bytes do arquivo. · ≥ 1 |
Antworten
| Status | Beschreibung |
|---|---|
200 | URL de envio. |
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. |
500 | Erro interno do servidor. |
curl-Beispiel
curl -X POST "https://api.memberfy.net/api/courses/lesson/<lessonId>/media/upload-url" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"name":"string","mimeType":"video/mp4","size":1}'