Pular para o conteúdo principal
POST /merchant/v3/{merchantId}/merchantUpsert cria os objetos cujo id ainda não existe na loja e altera os que já existem. Objetos que você não enviar ficam como estão. É a rota para cadastrar produtos, opções e categorias e para manter o catálogo em dia, um tipo por chamada.
Como o upsert pode criar objetos, ele exige mais campos que o update: name em todos os tipos com id, e menu, price e categoryId em ITEM. As regras de formato, imagens e erros comuns às três rotas estão em Ações.
Gere um UUID novo para cada objeto no seu sistema. O id enviado vira o ID do objeto na DeliveryVip. Não reaproveite UUIDs de outras plataformas ou de catálogos antigos: se o UUID já pertencer a outra loja, o objeto é ignorado sem erro. Use UUID em minúsculas, versão 1 a 5 (por exemplo, v4).

Corpo da requisição

string
AVAILABLE abre a loja, UNAVAILABLE fecha. Obrigatório quando não houver entityType.
string
Tipo dos objetos em upsertObjects: SERVICE, PAYMENT_METHOD, OPTION, OPTION_GROUP, CATEGORY ou ITEM. Um tipo por chamada.
object[]
Objetos a criar ou alterar, no formato do entityType (veja abaixo). Obrigatório e não pode ser vazio quando houver entityType.

Ordem do cadastro

Um objeto só pode apontar para outro que já existe. Na primeira carga, envie um tipo por chamada nesta ordem:

OPTION

As opções individuais, como sabores e bordas.

OPTION_GROUP

Os grupos, com optionIds apontando para as opções do passo anterior.

CATEGORY

As seções do cardápio.

ITEM

Os produtos, com categoryId e, se tiverem, os modificadores apontando para os grupos.
SERVICE e PAYMENT_METHOD não dependem de nada e podem ir a qualquer momento.

Requisição

Cadastrar uma categoria:
A resposta de sucesso é 204 No Content, sem corpo. Veja os erros possíveis.

Objetos por entityType

Em um objeto que já existe, só os campos enviados são alterados. Opções, grupos, categorias e produtos removidos por um force voltam ao catálogo se forem enviados de novo com o mesmo id.

SERVICE

string
obrigatório
DELIVERY (entrega) ou TAKEOUT (retirada).
integer
obrigatório
Tempo do serviço, em minutos.
string
AVAILABLE ativa o serviço, UNAVAILABLE desativa. Sem o campo, a disponibilidade atual é mantida.

PAYMENT_METHOD

uuid
obrigatório
ID da forma de pagamento.
string
obrigatório
Nome exibido ao cliente.
string
obrigatório
CASH, CREDIT, DEBIT, PIX, MEAL_VOUCHER, FOOD_VOUCHER ou OTHER.
integer
Posição na lista, a partir de 1.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.

OPTION

uuid
obrigatório
ID da opção.
string
obrigatório
Nome da opção.
string
Descrição da opção.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.
object
Imagem da opção. Veja as regras de imagem.

OPTION_GROUP

uuid
obrigatório
ID do grupo de opções.
string
obrigatório
Nome do grupo.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.
uuid[]
Lista completa das opções do grupo. Substitui a lista atual. Todas as opções precisam existir na loja.
Um grupo pode ser usado por vários produtos. Mudar optionIds muda as opções do grupo em todos os modificadores que o usam. Um array vazio ("optionIds": []) remove todas as opções do grupo. Sem o campo, as opções atuais são mantidas.

CATEGORY

uuid
obrigatório
ID da categoria.
string
obrigatório
Nome da categoria.
integer
Posição no cardápio, a partir de 1.
string
Descrição da categoria.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.

ITEM

uuid
obrigatório
ID do produto.
string
obrigatório
Nome do produto.
uuid
obrigatório
Categoria do produto. Precisa existir na loja.
string[]
obrigatório
Onde o produto é vendido: DELIVERY, TAKEOUT e INDOOR. Um tipo que não vier na lista deixa de valer. DELIVERY_TAKEOUT ainda é aceito por retrocompatibilidade e vira DELIVERY + TAKEOUT. Prefira os tipos individuais.
object
obrigatório
integer
Posição dentro da categoria, a partir de 1.
string
Descrição do produto.
string
Código no seu sistema.
string
AVAILABLE ou UNAVAILABLE.
string
Código de barras EAN.
object
url (https://) e checksum da imagem, como em OPTION. Veja as regras de imagem.
object[]
Lista completa de modificadores do produto. Substitui a atual.
  • "modifiers": [] remove todos os modificadores do produto. Um modificador que existia e não veio na lista é apagado. Sem o campo modifiers, os modificadores atuais são mantidos.
  • "optionGroups": [] remove todos os grupos do modificador. Sem o campo, os grupos atuais são mantidos.
  • Todas as opções do grupo entram no modificador automaticamente. A lista options só ajusta preço, posição e status de cada uma. Uma opção que não faz parte do grupo é ignorada.
O produto passa a ter só esse modificador. Para tirar todos, envie "modifiers": [].

Próximos passos

Update

Mudanças pontuais em objetos que já existem.

Force

Reescreva o catálogo inteiro em uma chamada.