Documentação de Mídias
Visão Geral
As mídias representam os arquivos visuais e informativos associados às entidades da loja 📸.
Elas podem incluir imagens, documentos ou links, sendo utilizadas principalmente para enriquecer a apresentação dos produtos.
As mídias podem ser vinculadas a produtos e valores de atributos, permitindo desde a exibição de galerias até representações específicas de variações (ex.: cor do produto).
A ordem em que as mídias são vinculadas é relevante, pois define a sequência de exibição no front-end.
Entidades Envolvidas
- Mídia (Media) Representa o arquivo em si (imagem, vídeo, etc.).
- Produto (Product) Principal entidade que consome mídias para exibição.
- Valor de Atributo (Attribute Value) Pode possuir mídias associadas para representação visual.
- É possível vincular múltiplas mídias a uma mesma entidade.
- A ordem de vínculo define a ordem de exibição.
- Mídias são essenciais para experiência visual e conversão de vendas.
- A exclusão de mídias pode impactar diretamente a apresentação do produto ⚠️.
Otimização de imagens
A plataforma possui recursos para otimizar as mídias do tipoimage, gerando imagens derivadas em tamanhos diferentes, dessa forma os fronts das lojas podem escolher qual o melhor tamanho para utilização.Quando não há configuração customizada da loja, o processamento usa os seguintes valores padrão para gerar derivadas:
| Perfil | Prefixo | Largura padrão (px) | Altura padrão (px) | Qualidade padrão (%) | Cor de preenchimento padrão (hexadecimal) |
|---|---|---|---|---|---|
| Pequeno | s_ | 240 | 240 | 90 | ffffff |
| Médio | m_ | 480 | 480 | 90 | ffffff |
| Grande | b_ | 960 | 960 | 90 | ffffff |
Notas e Considerações
Listagem de mídia de produtos
/products/medias
Possibilita que o lojista veja uma lista das mídias cadastradas na loja
Descrição
Endpoint responsável por retornar a lista de mídias de produtos cadastradas 🖼️.
Atua em contexto administrativo, permitindo que o lojista visualize os arquivos associados aos produtos da plataforma.
Por meio desse endpoint, é possível consultar as mídias cadastradas, como imagens, links e documentos vinculados aos produtos.
Dessa forma, o lojista consegue gerenciar e revisar os conteúdos visuais disponíveis, garantindo organização e consistência na apresentação dos produtos ⚙️.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Campos de Condição Disponíveis
| Campo | Tipo | Descrição |
|---|---|---|
| id | integer | ID da mídia |
| title | string | Título da mídia |
| type | string | Tipo do midia (image, file, url) |
| url | string | Url que direciona para a mídia desejada |
| file | string | Arquivo da mídia cadastrada |
Campos de Ordenação Disponíveis
| Campo | Descrição |
|---|---|
| Id | Identificador da mídia |
Exemplo de Requisição
1curl --request GET \2 --url {{MAIN_URL}}/products/medias \3 --header "Authorization: Bearer userToken" \✅ Resposta de Sucesso
1{2 "status": true,3 "data": {4 "registers": [5 {6 "id": 198,7 "type": "file",8 "title": "Certificado",9 "alternativeText": "certificado",10 "file": "/upload/stores/1/upload/media/0319b173c75b4d9c72ccfa47f653f9f8.pdf",11 "originalFile": "/upload/stores/1/upload/media/0319b173c75b4d9c72ccfa47f653f9f8.pdf",12 "size": 141846,13 "originalSize": 141846,14 "width": null,15 "height": null,16 "url": null,17 "imageProcessed": false,18 "imageSize": null19 },20 {21 "id": 199,22 "type": "image",23 "title": "Foto Principal",24 "alternativeText": "foto-principal",25 "file": "/upload/stores/1/upload/media/c455a25c7d9d407e659ce4ae0df9ab36.webp",26 "originalFile": "/upload/stores/1/upload/media/2c2732fe9a1492933c19335205b1477d.png",27 "size": 91854,28 "originalSize": 397253,29 "width": 2076,30 "height": 1492,31 "url": null,32 "imageProcessed": false,33 "imageSize": {34 "smallWebp": "/upload/stores/1/upload/media/c455a25c7d9d407e659ce4ae0df9ab36.webp",35 "small": "/upload/stores/1/upload/media/2c2732fe9a1492933c19335205b1477d.png",36 "mediumWebp": "/upload/stores/1/upload/media/c455a25c7d9d407e659ce4ae0df9ab36.webp",37 "medium": "/upload/stores/1/upload/media/2c2732fe9a1492933c19335205b1477d.png",38 "bigWebp": "/upload/stores/1/upload/media/c455a25c7d9d407e659ce4ae0df9ab36.webp",39 "big": "/upload/stores/1/upload/media/2c2732fe9a1492933c19335205b1477d.png"40 }41 }42 ],43 "pagination": {44 "limit": 10,45 "offset": 0,46 "pages": 1,47 "registers": 248 }49 }50}Cadastrar midias de produtos
/products/medias
Permite atribuir midias como documentos, imagens e links a produtos
Descrição
Este endpoint permite cadastrar mídias no sistema, podendo ser:
- uma imagem,
- um arquivo (PDF),
- ou um link (URL).
No envio da requisição, é obrigatório informar pelo menos uma mídia dentro da lista medias.
O tipo escolhido determina o que deve ser enviado. Quando a mídia for do tipo image, é obrigatório anexar o arquivo da imagem, que deve estar nos formatos JPG ou PNG e ter no máximo 3MB.
Se o tipo for file, é obrigatório anexar um arquivo no formato PDF.
Já quando o tipo for url, é obrigatório informar um link válido.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | multipart/form-data | Tipo do conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
media | array | ✅ | Lista de mídias a serem criadas. |
media.*.title | string | ❌ | Título da mídia (max 255 caracteres) |
media.*.altenativeText | string | ❌ | Texto descritivo da mídia (max 255) |
media.*.type | string | ✅ | TIpo da mídia a ser cadastrada (file, image, url) |
media.*.image | file | ✅ | Arquivo de imagem a ser cadastrado (extensão: jpeg, png, jpg; max: 3mb) |
media.*.file | file | ✅ | Documento a ser cadastrado (formato: PDF) |
media.*.url | string | ✅ | Url que direcione para uma imagem ou documento |
Exemplo de Requisição
1curl --request POST \2 --url {{MAIN_URL}}/products/medias \3 --header "Authorization: Bearer userToken" \4 --form "medias[0][title]=Imagem legal" \5 --form "medias[0][alternativeText]=Descrição da imagem 1" \6 --form "medias[0][type]=image" \7 --form "medias[0][file]=@/caminho/imagem1.png"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "id": 1,5 "type": "image",6 "title": "PimPom",7 "alternativeText": "ursinho-pimpom",8 "file": "/upload/media/98765432198764531243987654321.webp",9 "originalFile": "/upload/media/98765432198764531243987654321.jpeg",10 "size": 264170,11 "originalSize": 68533,12 "width": 681,13 "height": 542,14 "url": null,15 "imageProcessed": false16 }17}Atualizar midias de produtos
/products/medias/{mediaId}
Permite que o lojista possa atualizar midias de produtos
Descrição
Endpoint responsável por atualizar uma imagem existente 🖼️.
Atua em contexto administrativo, permitindo que o lojista modifique imagens já cadastradas no sistema.
Por meio desse endpoint, é possível substituir ou ajustar uma imagem, garantindo que o conteúdo visual esteja sempre atualizado.
Dessa forma, o lojista consegue manter a qualidade e consistência das mídias da loja, refletindo corretamente as informações visuais dos produtos ou entidades associadas ⚙️.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| mediaId | integer | Sim | Identificador da mídia que vai ser alterada |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | ❌ | Título de identificação da mídia |
alternativeText | string | ❌ | Texto descritivo sobre a mídia |
url | string | ❌ | Link que direcione para a mídia |
fileName | string | ❌ | Nome do arquivo da mídia |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/medias/{mediaId} \3 --header "Authorization: Bearer userToken" \4 --data '{5 "title": "UappiTest",6 "url": "https://site-legal/product/media/92837691238759827.jpg",7 "alternativeText": "A beautiful Image",8 "fileName": "A new random file"9 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": 1,3 "type": "image",4 "title": "UappiTest",5 "alternativeText": "A beautiful Image",6 "file": "/upload/stores/upload/media/a-new-random-file.webp",7 "originalFile": "/upload/stores/1/upload/media/a-new-random-file.jpeg",8 "size": 264170,9 "originalSize": 68533,10 "width": 681,11 "height": 542,12 "url": null13}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_MEDIA_REQUIRE_URL | 400 | A mídia de produto requer URL. |
| UAPPI_STORE_PRODUCT_MEDIA_NOT_FOUND | 404 | A mídia solicitada não foi encontrada. |
| UAPPI_STORE_PRODUCT_MEDIA_DOES_NOT_USE_FILE | 400 | A mídia de produto solicitada não utiliza arquivo. |
| UAPPI_STORE_PRODUCT_MEDIA_FILE_NOT_FOUND | 404 | O arquivo da mídia de produto solicitada não foi encontrado. |
Vínculo entre uma mídia e um produto
/products/medias/links
Criação de vinculo entre uma mídia e um produto
Descrição
Endpoint responsável por criar vínculo entre uma ou mais mídias e um produto 🖼️.
Atua em contexto administrativo, permitindo que o lojista associe imagens, links ou documentos à página de um produto.
Por meio desse endpoint, é possível vincular múltiplas mídias em uma única operação, desde que os IDs sejam enviados separados por vírgula.
⚠️ Importante: a ordem dos IDs informados será respeitada como a ordem de exibição na página do produto.
Isso permite organizar a sequência visual das mídias, garantindo que a apresentação siga a estratégia desejada.
Essa estrutura é especialmente útil em cenários como:
- Galerias de produto Permite definir a sequência ideal de exibição das imagens, como imagem principal, detalhes, zoom e ângulos diferentes, criando uma apresentação mais completa do produto.
- Exibição de variações por atributo Possibilita associar mídias específicas a variações, como por exemplo: ao selecionar a cor azul, exibir apenas imagens daquele modelo na cor azul 🎨. Isso torna a navegação mais intuitiva e evita confusão para o cliente.
- Organização de imagens principais e secundárias
Dessa forma, o lojista consegue controlar a experiência visual do produto de forma mais avançada, melhorando a apresentação e auxiliando na decisão de compra ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
force | boolean | ✅ | Determina se o vinculo entre os produtos e as mídias devem ser forçadas |
links | array | ✅ | Lista de produtos e mídias que devem ser vinculadas |
links.*.productId | integer | ✅ | Id único do produto |
links.*.productAttributeValueId | integer | ❌ | Identificador do valor de atributo que deve ser vinculado |
links.*.medias | array | ✅ | Lista de ids de mídias que devem ser vinculadas |
links..medias. | integer | ✅ | Identificador da mídia que deve ser vinculada |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/medias/links \3 --header "Authorization: Bearer userToken" \✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "productId": 67,3 "productAttributeValueId": null,4 "medias": [5 2721, 6 2237 ]8}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | Os produtos solicitados (1, 2, 3) não foram encontrados. |
| UAPPI_STORE_PRODUCT_MEDIA_NOT_FOUND | 404 | As mídias de produto solicitadas (1, 2, 3) não foram encontradas. |
| UAPPI_STORE_ATTRIBUTE_VALUE_NOT_FOUND | 404 | Os valores de atributos solicitados (1, 2, 3) não foram encontrados. |
Desvincular imagens de um produto
/products/medias/links
Possibilita que o lojista possa remover o vínculo entre mídias e produto
Descrição
Endpoint responsável por atualizar o vínculo das mídias de um produto 🔄.
Atua em contexto administrativo, permitindo que o lojista gerencie quais imagens, links ou documentos permanecem associados ao produto.
Por meio desse endpoint, é possível remover mídias que não devem mais estar vinculadas, ajustando a composição visual da página do produto.
Essa atualização possibilita refinar a galeria de mídias, removendo conteúdos desatualizados, incorretos ou que não representam mais o produto.
Dessa forma, o lojista consegue manter a apresentação do produto sempre alinhada e atualizada, garantindo uma melhor experiência para o cliente final ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
links | array | ✅ | Lista de mídias e produtos que devem ser desvinculados |
links.*.productId | integer | ✅ | Identificador do produto que deve ser desvinculado da mídia |
links.*.productAttributeValueId | integer | ✅ | Identificador do valor de atributo que deve ser desvinculado |
links.*.medias | array | ✅ | Lista de ids de mídias que devem ser desvinculadas |
links..medias. | string | ✅ | Identificador da mídia de produto a ser desvinculada |
Exemplo de Requisição
1curl --request DELETE \2 --url {{MAIN_URL}}/products/medias/links \3 --header "Authorization: Bearer userToken" \4 --data '{5 "links": [6 {7 "productId": 1,8 "productAttributeValueId": null,9 "medias": [10 1,11 212 ]13 }14 ]15 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "productId": 1,3 "productAttributeValueId": null,4 "medias": [5 16 ]7}Alteração de ordenação de mídias de um produto
/products/medias/links/order
Possibilita ao lojiosta reordernar as mídias do produto
Descrição
Este endpoint é responsável por atualizar a ordem das imagens vinculadas a um produto.
No corpo da requisição, deve ser informado o ID do produto e, caso exista, o ID do atributo do produto. As imagens só poderão ser reordenadas se já estiverem previamente vinculadas ao produto.
Os IDs das imagens devem ser enviados no corpo da requisição na ordem desejada, pois a sequência informada será aplicada como a nova ordem de exibição na página do produto.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
productId | string | ✅ | Id único do produto |
productAttributeValueId | string | ✅ | Id único do atributo do produto |
medias | string | ✅ | Id único da imagem que será vinculada |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/medias/links/order \3 --header "Authorization: Bearer userToken" \4 --data '{5 "links": [6 {7 "productId": 1,8 "productAttributeValueId": null,9 "medias": [1]10 }11 ]12 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "productId": 1,3 "productAttributeValueId": null,4 "medias": [5 1,6 27 ]8}Processamento de mídias de produto
/products/medias/process
Solicita o processamento assíncrono de mídias de produto em lote
Descrição
Endpoint responsável por receber uma lista de mídias de produto e solicitar o processamento assíncrono de cada item informado.
Use este endpoint quando o objetivo for processar um conjunto específico de mídias, informado por productMediaId no corpo da requisição.
O processamento é enfileirado e tratado em segundo plano. Por isso, o endpoint confirma o recebimento do lote (200 OK) e retorna o resultado item a item, sem bloquear a requisição até o fim da geração das derivadas.
O endpoint não falha o lote inteiro em caso de erro parcial. Cada item recebe seu próprio erro no campo error ou null em caso de sucesso.
Para saber mais sobre como as imagens derivadas serão geradas, consulte a sessão Otimização de imagens.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
items | array | Sim | Lista de mídias para processamento (min:1, max:20) |
items.*.productMediaId | integer | Sim | Identificador da mídia de produto |
force | boolean | Não | Quando true, ignora a validação de mídia já processada. Padrão: false |
Exemplo de Requisição
1curl --request POST \2 --url {{MAIN_URL}}/products/medias/process \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --header "Content-Type: application/json" \5 --data '{6 "items": [7 {8 "productMediaId": 1019 },10 {11 "productMediaId": 10212 }13 ],14 "force": true15 }'✅ Resposta de Sucesso
HTTP Status: 200 Accepted
1{2 "status": true,3 "data": [4 {5 "productMediaId": 101,6 "error": null7 },8 {9 "productMediaId": 102,10 "error": null11 }12 ]13}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_MEDIA_NOT_FOUND | 404 | A mídia informada não foi encontrada no contexto da loja. |
| UAPPI_STORE_PRODUCT_MEDIA_INVALID_TYPE | 400 | A mídia informada não é do tipo image. |
| UAPPI_STORE_PRODUCT_MEDIA_ALREADY_PROCESSED | 409 | A mídia já foi processada anteriormente. Pode ser ignorado por item com force: true. |
| UAPPI_STORE_PRODUCT_MEDIA_DUPLICATED_IN_PAYLOAD | 409 | O mesmo productMediaId foi enviado mais de uma vez no corpo da requisição. |
Processamento forçado de todas as mídias de produto
/products/medias/process/all
Solicita o processamento assíncrono forçado de todas as mídias de imagem da loja
Descrição
Endpoint responsável por solicitar o reprocessamento de todas as mídias do tipo image da loja.
Use este endpoint para operações de reprocessamento em massa, quando for necessário regenerar as variações de imagem de toda a loja (por exemplo, após ajustes de configuração de otimização, revisão de arquivos derivados ou manutenção operacional).
A execução é assíncrona e em lote. O processamento completo pode levar mais tempo conforme a quantidade de mídias da loja aumenta.
O processamento é forçado, portanto, mídias com imageProcessed = 1 também entram no fluxo e podem ter suas derivadas recriadas.
Para saber mais sobre como as imagens derivadas serão geradas, consulte a sessão Otimização de imagens.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Exemplo de Requisição
1curl --request POST \2 --url {{MAIN_URL}}/products/medias/process/all \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --header "Content-Type: application/json"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis erros:
Este endpoint não possui erros de domínio específicos.
Exclusão de uma mídia de produto
/products/medias
Exclusão de uma mídia de produto
Descrição
Endpoint responsável por permitir a exclusão de mídias associadas a produtos 🗑️.
Atua em contexto administrativo, possibilitando que o lojista remova imagens, links ou documentos vinculados aos produtos.
Por meio desse endpoint, é possível excluir mídias previamente associadas, permitindo ajustes ou correções na apresentação do produto.
Dessa forma, o lojista consegue manter a galeria de mídias organizada e atualizada, garantindo consistência na exibição das informações visuais ⚙️.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
mediaIds | array | ✅ | Lista de ids de mídias a serem excluídas |
mediaIds.* | integer | ✅ | Id da mídia que será excluída |
Exemplo de Requisição
1curl --request DELETE \2 --url {{MAIN_URL}}/products/medias \3 --header "Authorization: Bearer userToken" \4 --data '{5 "mediaIds" [6 1, 2, 37 ]8 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}