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"
}