Vídeos do produto
Lista, adiciona (YouTube, Vimeo, arquivo ou trecho de live), edita, reordena e remove os vídeos da galeria de um produto.
Além das imagens, a galeria de um produto pode ter até 3 vídeos. Eles aparecem como slides ao lado das fotos na página do produto. Cada vídeo tem um tipo, uma miniatura (sempre obrigatória, é o que o cliente vê antes de dar play) e uma posição.
Todas as rotas desta página exigem o privilégio view_catalog (leitura) ou manage_catalog (escrita).
Listar os vídeos
/api/v1/admin/products/{id}/videosAdminLista os vídeos de um produto
Devolve os vídeos do produto em ordem de posição.
Path parameters
iduuidobrigatórioExemplo de requisição
Resposta
Response fields
videosarrayVídeos em ordem de position. Lista vazia quando não há vídeos.
iduuidproduct_iduuidvideo_typestringuploadyoutubevimeolive_clipurlstringyoutube e vimeo é a forma canônica do link (https://www.youtube.com/watch?v=ID, https://vimeo.com/ID). Para upload é o endereço do arquivo hospedado pela plataforma.thumbnail_urlstringtitlestringpositionintegerlive_session_iduuidlive_clip: a transmissão de origem.clip_start_sintegerlive_clip: segundo em que o trecho começa.clip_end_sintegerlive_clip: segundo em que o trecho termina.size_bytesintegerupload: tamanho do arquivo em bytes.Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token. | {"error":"missing authorization header"} |
| 403 | Sem view_catalog nem manage_catalog. | {"error":"insufficient privileges","privilege_required_any":["manage_catalog","view_catalog"]} |
| 500 | O id não é um UUID válido. | {"error":"failed to get product videos","detail":"..."} |
Um UUID de produto que não existe devolve 200 com "videos": [].
Adicionar um vídeo
/api/v1/admin/products/{id}/videosAdminAdiciona um vídeo (link ou clipe ao vivo, em JSON)
Exige manage_catalog. O corpo é JSON para os tipos youtube, vimeo e live_clip. Para enviar um arquivo (upload) use a variante multipart logo abaixo.
Path parameters
iduuidobrigatórioRequest body (JSON)
video_typestringobrigatórioyoutubevimeolive_clipinvalid video_type. Para enviar um arquivo (upload) use a variante multipart abaixo.urlstringobrigatórioyoutube.com/watch?v=..., youtube.com/embed/..., youtube.com/shorts/... ou youtu.be/.... Vimeo: vimeo.com/ID ou vimeo.com/video/ID. A plataforma troca o link pela forma canônica. Em live_clip pode ser omitido quando você envia live_session_id (veja abaixo).thumbnail_urlstringvimeo e live_clip. Em youtube, se omitido, a plataforma usa a miniatura do próprio YouTube.titlestringlive_session_iduuidlive_clip: a transmissão ao vivo de origem. Quando você a envia sem url, a plataforma copia o endereço da gravação (a transmissão precisa estar encerrada e ter gravação; senão 422 invalid live clip).clip_start_sintegerlive_clip, obrigatório: segundo em que o trecho começa (0 ou mais).clip_end_sintegerlive_clip, obrigatório: segundo em que o trecho termina. Precisa ser maior que clip_start_s.Exemplo de requisição (link do YouTube)
Resposta
O vídeo entra na última posição. Os campos são os da listagem.
Enviar um arquivo (multipart)
Para um vídeo upload, a mesma rota recebe multipart/form-data (o Content-Type com boundary é montado pela sua biblioteca HTTP; não o escreva à mão).
Request body (multipart/form-data)
filefileobrigatóriothumbnailfileobrigatóriotitlestringA resposta é a mesma (201), com video_type "upload", url apontando para o arquivo hospedado pela plataforma e size_bytes preenchido.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo JSON inválido, ou multipart ilegível. | {"error":"invalid request body","detail":"..."} / {"error":"failed to parse upload","detail":"..."} |
| 400 | Upload sem o campo file. | {"error":"file is required","detail":"..."} |
| 404 | Produto não encontrado. | {"error":"product not found"} |
| 422 | Já há 3 vídeos. Esta checagem vem antes das demais: com 3 vídeos, qualquer envio responde isto. | {"error":"max 3 videos per product"} |
| 422 | video_type desconhecido. | {"error":"invalid video_type"} |
| 422 | Link que não é do YouTube ou do Vimeo. | {"error":"invalid youtube url"} ou {"error":"invalid vimeo url"} |
| 422 | url vazia. | {"error":"url is required"} |
| 422 | Sem miniatura (Vimeo, live_clip, upload). | {"error":"thumbnail is required"} |
| 422 | live_clip com clip_start_s ausente ou não menor que clip_end_s. | {"error":"live clip requires 0 <= start_s < end_s"} |
| 422 | Transmissão sem gravação, ou ainda no ar. | {"error":"invalid live clip","detail":"session has no replay"} |
| 422 | Arquivo que não é MP4/WebM, ou acima de 200 MB. | {"error":"invalid video file","detail":"unrecognized video container (only mp4/webm allowed)"} |
| 401 / 403 | Sem token / sem manage_catalog. | {"error":"insufficient privileges","required":"manage_catalog"} |
Editar título e posição
/api/v1/admin/products/{id}/videos/{videoId}AdminAltera o título ou a posição de um vídeo
Exige manage_catalog. Atualização parcial: envie só o que muda. Não troca o link nem o arquivo: para isso, remova o vídeo e adicione outro.
Path parameters
iduuidobrigatóriovideoIduuidobrigatórioCorpo da requisição
titlestringpositionintegerExemplo de requisição
Resposta
Um corpo sem title nem position também responde 200 e não altera nada.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido. | {"error":"invalid request body","detail":"..."} |
| 404 | O vídeo não existe. | {"error":"video not found"} |
| 401 / 403 | Sem token / sem manage_catalog. | {"error":"insufficient privileges","required":"manage_catalog"} |
Reordenar os vídeos
/api/v1/admin/products/{id}/videos/reorderAdminDefine a ordem de exibição dos vídeos
Exige manage_catalog. Envie os ids na ordem desejada; o primeiro fica na posição 0. É um POST (e não PUT) nesta rota.
Path parameters
iduuidobrigatórioCorpo da requisição
video_idsarrayobrigatório200.Exemplo de requisição
Resposta
Para ver a ordem nova, chame a listagem de novo.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido. | {"error":"invalid request body","detail":"..."} |
| 500 | Um id não é um UUID. | {"error":"failed to reorder videos","detail":"..."} |
| 401 / 403 | Sem token / sem manage_catalog. | {"error":"insufficient privileges","required":"manage_catalog"} |
Remover um vídeo
/api/v1/admin/products/{id}/videos/{videoId}AdminRemove a video
Exige manage_catalog. Remove o vídeo da galeria. Se ele era um upload, a plataforma também apaga o arquivo hospedado.
Path parameters
iduuidobrigatóriovideoIduuidobrigatórioExemplo de requisição
Resposta
Erros
| Status | Quando | Corpo |
|---|---|---|
| 404 | O vídeo não existe (inclusive ao repetir o DELETE). | {"error":"video not found"} |
| 401 / 403 | Sem token / sem manage_catalog. | {"error":"insufficient privileges","required":"manage_catalog"} |
Veja também
- Mídia do produto: visão geral, limites e o mapa das rotas.
- Imagens do produto
- Anexos do produto
- Consultar produto