Skip to Content
Documentação de integração da plataforma — em evolução contínua.
CatálogoImagens e mídias

Imagens e mídias

Imagens não vão no JSON do produto — são enviadas depois, referenciando o SKU pelo seu externalReference. Há dois caminhos: API para volumes pequenos e correções pontuais, SFTP para carga inicial e lotes grandes.

Enviar por API

POST /v1/Storages/image/upload?externalReference={ref}

Corpo em multipart/form-data.

curl -X POST \ "$GROCERS_API/v1/Storages/image/upload?externalReference=114970" \ -H "Authorization: Basic $BASIC" \ -H "x-contractAccountId: $TENANT" \ -F "files=@frente.jpg" \ -F "files=@verso.jpg" \ -F "orders=1" \ -F "orders=2"
ParâmetroOndeDescrição
externalReferencequery stringSKU que recebe as imagens
filesform-datauma ou mais imagens no mesmo envio
ordersform-dataordem de exibição, na mesma sequência de files

Resposta: 200 com { "operationId": "..." }.

O orders define qual imagem é a principal (1). Sem ele, a ordem segue a sequência de upload — que costuma variar entre execuções quando o envio é paralelo.

O corpo é limitado a 100 MB por requisição na plataforma (pode ser alterado conforme a necessidade do cliente).

Enviar por SFTP

Para carga inicial de catálogo, o caminho é subir os arquivos por SFTP e depois registrá-los pela API.

Conectar

Use um cliente SFTP (FileZilla, WinSCP, sftp de linha de comando) com as credenciais recebidas — host, porta 22, usuário e senha.

A estrutura de diretórios segue este caminho:

/<pasta-do-contrato>/<contractAccountId>/SKUs/Integracao

Normalmente só existe uma pasta com o seu contractAccountId no nome.

Subir os arquivos

Transfira as imagens para SKUs/Integracao. Nomeie de forma padronizada antes de subir — por exemplo 114970-frente.png, 114970-verso.png — porque é por esse nome que você vai referenciá-las depois.

Registrar via API

O upload por SFTP coloca o arquivo no servidor, mas não associa a imagem ao SKU. Chame POST /v1/Storages/image/upload para fazer o vínculo.

Parar no passo 3 é o erro clássico: os arquivos estão no servidor, ninguém vê erro nenhum, e as imagens não aparecem na vitrine porque não houve o registro do passo 4.

Consultar imagens de um SKU

GET /v1/Storages/file/{externalReference}/{fileType}

fileType é o tipo de entidade:

ValorEntidade
1SKU
2Categoria
3Badge
4Nota fiscal
5Produto
curl "$GROCERS_API/v1/Storages/file/114970/1" \ -H "Authorization: Basic $BASIC" \ -H "x-contractAccountId: $TENANT"
[ "https://storage.blob.core.windows.net/.../SKUs/114970/frente.jpeg", "https://storage.blob.core.windows.net/.../SKUs/114970/verso.png" ]

Remover imagens

DELETE /v1/Storages/file/{externalReference}
{ "fileType": 1, "urls": ["https://storage.blob.core.windows.net/.../frente.jpeg"], "storageIds": [] }
CampoObrigatórioDescrição
fileTypesimTipo da entidade (tabela acima)
urlsnãoURLs específicas a remover
storageIdsnãoIDs dos arquivos armazenados

Informe urls ou storageIds. Para remover todos os arquivos de uma entidade, use DELETE /v1/Storages/delete/{entityId}.

Existe ainda DELETE /v1/Storages/image/upload, que remove imagens pelo mesmo contrato do upload — útil para desfazer um envio recém-feito.

Nota fiscal do pedido

O mesmo serviço guarda o PDF da nota, com rotas próprias. Só PDF é aceito — o Content-Type precisa ser application/pdf, e o XML da NF-e é recusado com 400:

# anexar a nota ao pedido curl -X POST \ "$GROCERS_API/v1/Storages/invoice/upload?orderId=$ORDER_ID" \ -H "Authorization: Basic $BASIC" \ -H "x-contractAccountId: $TENANT" \ -F "files=@nfe-12345.pdf" # recuperar a nota anexada curl "$GROCERS_API/v1/Storages/invoice?orderId=$ORDER_ID" \ -H "Authorization: Basic $BASIC" \ -H "x-contractAccountId: $TENANT"

A nota usa orderId (GUID interno do pedido), não o orderNumber que aparece para o cliente. O GUID vem no payload do webhook de pedido, campo id.

Order_InvoiceUploaded (32) é o nome interno dessa chamada, não uma notificação: o upload bem-sucedido não gera evento, e a recusa do core chega como Operation_Failed (999). Veja Faturamento.