O upload de vídeos é iniciado através de uma requisição POST na rota <code>/v1/videos</code> Essa rota irá servir somente para a criação do upload, e não para fazer o upload propriamente dito. A partir da chamada dessa rota, serão retornados dados nos HEADERS da resposta que serão utilizados para realizar o upload.
O upload em si será feito pela rota /v1/videos/uploads/:id
Atualmente a API não aceita mais de um upload por vez.
Criação do Upload – POST
Route (Rota)
Método | Rota | Descrição |
---|---|---|
POST | /v1/videos |
Rota para criação do upload. |
* Token gerado pela rota de autenticação
Headers (Cabeçalho)
Param | Tipo | Descrição | Obrigatório |
---|---|---|---|
Tus-Resumable | String |
Versão do protocolo TUS. Enviar sempre 1.0.0 | Sim |
Upload-Length | Number |
Tamanho do arquivo que será feito o upload (Em bytes). | Sim |
Upload-Metadata | String |
“filename” seguido do nome do arquivo em base64. Ex.: Nome do arquivo: teste_convertido => Upload-Metadata: filename dGVzdGUubXA0. |
Sim |
Content-Type | String |
application/json | Não |
gallery | String |
Uuid da galeria que o upload será feito posteriormente. | Não |
Authorization | String |
Token authorization. | Sim |
Response (Resposta)
– Resposta ao realizar um upload (Status: 201)
Name | Value |
---|---|
X-Powered-By | Express |
Tus-Resumable | 1.0.0 |
Access-Control-Expose-Headers | Authorization, Content-Type, Location, Tus-Extension, Tus-Max-Size, Tus-Resumable, Tus-Version, Upload-Defer-Length, Upload-Length, Upload-Metadata, Upload-Offset, X-HTTP-Method-Override, X-Requested-With |
Location | //localhost:15214/v1/videos/uploads/410b471ac3ed2ee0f8856e7aa4358ba4 |
Content-Length | 0 |
Date | Tue, 21 Jun 2022 13:09:10 GMT |
Connection | keep-alive |
Keep-Alive | timeout=5 |
– Resposta de erro ao não enviar campo obrigatório ou campo em formato incorreto (Status: 400)
{ "error": "Bad Request" }
– Resposta de erro ao se tentar realizar mais de upload por vez por aplicação (Status: 429)
{ "error": "Too many simultaneous uploads, please send one file at a time" }
– Resposta de erro por algum erro interno (Status: 500)
{ "error": "Internal Server Error" }
Realizar Upload – PATCH
Route (Rota)
Método | Rota | Descrição |
---|---|---|
PATCH | /v1/videos/uploads/:id |
Rota para realizar o upload. |
OBS: Nessa requisição deve ser passado o vídeo que for especificado em Upload-Metadata em sua forma binária. Como exemplo, no Insomnia, seria selecionando a opção ‘file’, e logo em seguida selecionando a opção ‘Binary file’, e depois selecionando o arquivo desejado.
Headers (Cabeçalho)
Param | Tipo | Descrição | Obrigatório |
---|---|---|---|
Tus-Resumable | String |
Versão do protocolo TUS. Enviar sempre 1.0.0 | Sim |
Content-Length | Number |
Quantidade em bytes restantes a se fazer o upload. | Sim |
Upload-Offset | Number |
Byte inicial para o upload (Caso seja a primeira requisição deve-se iniciar com 0, caso o upload tenha sido interrompido, deve-se continuar o upload de onde se parou, tal informação é disponibilizada pelo parâmetro Upload-Offset retornado na rota HEAD /v1/videos/uploads/:id). | Sim |
Upload-Metadata | String |
“filename” seguido do nome do arquivo em base64. Ex.: Nome do arquivo: teste_convertido => Upload-Metadata: filename dGVzdGUubXA0. | Sim |
Content-Type | String |
application/offset+octet-stream | Sim |
gallery | String |
Uuid da galeria que o upload será feito posteriormente. | Não |
Authorization | String |
Token authorization. | Sim |
Response (Resposta)
– Header da Resposta ao realizar um upload (Status: 201)
Name | Value |
---|---|
X-Powered-By | Express |
Tus-Resumable | 1.0.0 |
Access-Control-Expose-Headers | Authorization, Content-Type, Location, Tus-Extension, Tus-Max-Size, Tus-Resumable, Tus-Version, Upload-Defer-Length, Upload-Length, Upload-Metadata, Upload-Offset, X-HTTP-Method-Override, X-Requested-With |
Location | //localhost:15214/v1/videos/uploads/410b471ac3ed2ee0f8856e7aa4358ba4 |
Content-Length | 0 |
Date | Tue, 21 Jun 2022 13:09:10 GMT |
Connection | keep-alive |
Keep-Alive | timeout=5 |
– Resposta de erro ao não enviar o upload-metadata corretamente (Status: 400)
{ "error": "Bad Request" }
– Resposta de erro ao se tentar realizar mais de upload por vez por aplicação (Status: 429)
{ "error": "Too many simultaneous uploads, please send one file at a time" }
– Resposta de erro por algum erro interno (Status: 500)
{ "error": "Internal Server Error" }
Retorna informações do Upload – HEAD
Route (Rota)
Método | Rota | Descrição |
---|---|---|
PATCH | /v1/videos/uploads/:id |
Rota para realizar o upload. |
Headers (Cabeçalho)
Param | Tipo | Descrição | Obrigatório |
---|---|---|---|
Authorization | String |
Token authorization. | Sim |
Tus-Resumable | String |
Versão do protocolo TUS. Enviar sempre 1.0.0 | Sim |
Response (Resposta)
OBS: O parâmetro Upload_Offset retornado indica quantos bytes ja foram enviados, quando o Upload-Offset for igual ao Upload-length, o upload foi concluído.
– Header da Resposta ao realizar um upload (Status: 201)
Name | Value |
---|---|
X-Powered-By | Express |
Tus-Resumable | 1.0.0 |
Access-Control-Expose-Headers | Authorization, Content-Type, Location, Tus-Extension, Tus-Max-Size, Tus-Resumable, Tus-Version, Upload-Defer-Length, Upload-Length, Upload-Metadata, Upload-Offset, X-HTTP-Method-Override, X-Requested-With |
Location | //localhost:15214/v1/videos/uploads/410b471ac3ed2ee0f8856e7aa4358ba4 |
Content-Length | 0 |
Date | Tue, 21 Jun 2022 13:09:10 GMT |
Connection | keep-alive |
Keep-Alive | timeout=5 |
– Resposta de erro por algum erro interno (Status: 500)
{ "error": "Internal Server Error" }