A API Delivery App atende para integrações para PDV, Hub e Logistica, toda a documentação e a API poderá ser desenvolvida para as funcionalidades ativas em toda a plataforma Neemo.
Para a homologação da integração foi enviado junto ao Email as credenciais para o ambiente de testes, lembrando que este ambiente é compartilhado para diversos parceiros que estão também em desenvolvimento da integração, no entanto, é necessário de atenção em casos de grandes alterações de cardápio.
Clique aqui para acessar swagger para API de alteração de status do pedido.
Atualmente existem dois níveis de integração, tais são:
- Integração de pedidos.
- Requisição Webhook.
1. Integração de pedidos
São disponibilizadas algumas APIs que permitem a integração de pedidos realizados pela plataforma Delivery App. Todas as APIs retornam os dados em formato JSON.
O fluxo básico para integração de pedidos consiste em:
1.1.1 Listagem de pedidos
1.1.2 Detalhes do pedido
1.1.3 Formas de Pagamento
1.1.4 Alterar status do pedido
1.1 API de pedidos
1.1.1 Listagem de pedidos POST::/v1/order
O PDV deverá criar uma rotina de consulta na API de listagem de pedidos, fazendo consultas em torno de 60 segundos (recomendado não usar um tempo menor). Será retornada uma lista de pedidos, que deve ser percorrida, usando o ID no próximo passo:
É importante o uso do parâmetro status para filtrar os pedidos:
0 = Novo Pedido
1 = Confirmado
2 = Entregue
4 = Enviado/Pronto
3, 5, 6, 7 = Pedidos cancelados
O parâmetro created_at retorna pedido criados a partir da data informada, sendo útil para não trazer os mesmo pedidos sempre que consultar a API.
- id (integer): id do pedido
- name (string): nome do cliente
- email (string): email do cliente
- phone (string): telefone do cliente
- date (string): data do pedido
- updated_at (string): data de modificação do pedido
- status (integer): 0 = Novo Pedido, 1 = Confirmado, 2 = Entregue, 3 = Cancelado (restaurante), 4 = Enviado, 5 = Cancelado Automaticamente (sistema), 6 = Cancelado, com Pagamento Estornado (restaurante), 7 = Cancelado Automaticamente, com Pagamento Estornado (sistema), 8 = Aguardando aprovação do pagamento online, 9 = Pagamento online reprovado
- tax (decimal): valor da taxa de entrega do pedido
- voucher_code (string): Código do voucher usado
- voucher_discount (decimal): Desconto aplicado ao pedido através do uso do voucher (cupom de desconto)
- payment_method (string): forma de pagamento
- notes (string): observações do pedido
- street (string): rua para entrega
- cep (string): CEP para entrega
- number (string): número para entrega
- city (string): cidade para entrega
- neighborhood (string): bairro para entrega
- complement (string): complemento do endereço para entrega
- reference_point (string): ponto de referência do endereço para entrega
- forma_entrega (integer): forma de entrega do pedido (1 = delivery, 2 = retirar no balcão, 3 = pedir na mesa)
- table_name (string): quando forma_entrega for 3, será retornado o nome da mesa.
- order_number (integer): número do pedido
- troco (decimal): troco para (valor que o cliente irá dar em dinheiro)
- client_id (integer): id do cliente
- payment_online (boolean): se true o pagamento foi feito online pelo app ou web
- latitude (decimal): latitude do endereço de entrega
- longitude (decimal): longitude do endereço de entrega
- cpf_in_note (string): se possuir algum valor indica que o usuário solicitou CPF na nota
- printed (boolean): se comanda do pedido foi impressa
- total_discount (decimal): total de desconto que o pedido recebeu
- taxa_extra (decimal): valor da taxa extra
- taxa_extra_title (string): título do que foi cobrado como taxa extra
- sub_total (decimal): sub total do pedido (total dos produtos comprados)
- total (decimal): total do pedido, valor que cliente pagou (já incluindo taxa de entrega, taxas e descontos)
1.1.2 Listagem de detalhes do pedido POST::/v1/order/{order_id}
É nessa API que o PDV irá integrar os produtos vendidos. A consulta na API de detalhes do pedido retornará todos os detalhes da venda, bem como os produtos vendidos.
O retorno é o mesmo da listagem de pedidos e é acrescentados a listagem a seguir:
- fidelity_program_discount (decimal): desconto recebido através do programa de fidelidade.
- FidelityProgram (array): informações sobre programa de fidelidade.
- Payment (array): informações sobre o pagamento online.
- Vouchers (array): informações sobre o voucher (cupons de desconto).
- ItemOrder (array): informações sobre os itens do pedido.
- PizzaOrders (array): informações sobre pizzas do pedido.
- ComboOrders (array): informações sobre combos do pedido.
- OrderAdditionals (array): informações sobre adicionais sobre o pedido.
- PromotionGroupOrders (array): informações sobre combos promocionais.
Segue abaixo o detalhamento das arrays citadas acima:
FidelityProgram:
- award (string): texto com a premiação do programa de fidelidade. Ex. “R$ 10,00”, “Entrega Grátis”, “1 refrigerante”
- award_item (string): somente quando a premiação for um brinde, por exemplo um item do cardápio “1 coca-cola 2 lts”, esse valor também virá no award
Payment:
- seguir para o tópico 1.1.3 Formas de Pagamentos
Vouchers:
- voucher_discount (decimal): valor do desconto recebido pelo voucher
- voucher_code (string): código de desconto usado
ItemOrder
- title (string): titulo do item
- quantity (integer): quantidade do item
- name (string): nome da variação do item
- price (decimal): valor do item
- total (decimal): total pago pelo item (inclui complementos e quantidade)
- notes (string): observações para este item
- ref (string): REF do item
- variacao_ref (string): REF da variação
- ComplementCategories (array): cada categoria de complemento pode conter vários complementos. Ex de categoria de complemento “Adicionais”.
- title (string): título da categoria de complemento
- Complements (array): contém os complementos da categoria
- quantity (integer): quantidade do complemento
- title (string): título do complemento
- price_un (decimal): preço unitário do complemento
- total (decimal): total pago pelo complemento
- ref (string): REF do complemento
PizzaOrders
- quantity (integer): quantidade da pizza
- total_un (decimal): total unitário pago pela pizza
- notes (string): observações da pizza
- pizza_maior_valor (boolean): true - foi cobrado o maior valor dos sabores. false - foi calculado a média dos sabores
- PizzaTamanho (array): informações sobre o tamanho da pizza
- title (string): titulo do tamanho
- qtd_sabor (integer): quantidade de sabor da pizza
- ref (string): REF do tamanho
- ComplementCategories (array): segue o mesmo modelo dos itens
- PizzaMassa (array): informações sobre massa/borda da pizza
- title (string): título da massa/borda
- price (decimal): valor da massa/borda
- ref (string): REF da massa/borda
- PizzaSabor (array): informações sobre os sabores da pizza
- title (string): título do sabor
- price (decimal): valor do sabor
- ref (string): REF do sabor
- ref_sabor_tamanho (string): REF do sabor vinculado ao tamanho
- ComplementCategories (array): segue o mesmo modelo dos itens
ComboOrders
- quantity (integer): quantidade do combo
- total_un (decimal): total unitário do combo
- combo_title (string): título do combo
- ref (string): REF do combo
- ComboItens (array): itens pedido no combo
- price (decimal): preço do item
- item_name (string): nome do item
- price_name (string): nome da variação do item
- ref (string): REF do item
- variacao_ref (string): REF da variação
OrderAdditionals
- title (string): titulo da categoria do adicional
- text_input (boolean): true - adicional foi informado via entrada de texto. false - adicional foi escolhido via seleção de quantidade.
- Additionals (array): adicionais que o usuário escolheu
- ref (string): REF do adicional
- quantity (integer): quantidade escolhida
- price_un (decimal): valor unitário do adicional
- text_input (string): entrada de texto informada pelo usuário, caso o parâmetro text_input em OrderAdicionals seja true.
PromotionGroupOrders
- id (integer): id do grupo de promoção.
- name (string): nome do grupo de promoção.
- quantity (integer): quantidade escolhida.
- notes (string): observação.
- type (integer): regra de cálculo da promoção. 1 = soma total (soma de todos os produtos da promoção). 2 = maior valor (cobrado o preço do produto de maior valor). 3 = novo preço (um preço fixo para a promoção, independente dos produtos escolhidos).
- value (decimal): preço unitário pago na promoção.
- ref (string): código de referência do produto, para integração.
- bônus
- type (integer): tipo de bônus da promoção.
1 = Nenhum.
2 = Frete Grátis.
3 = Pontos no Programa de Fidelidade.
4 = Brinde
- value (string): se type for 1, retornará null. Caso contrário retornará o bônus.
- Products (Array)
- id (integer): id do produto
- type (string): tipo do item. Pode retornar ‘item’ ou ‘pizza’.
- name (string): nome do produto
- calculation (integer):
- quantity (integer): sempre será 1
- subtotal (decimal): subtotal dos produtos
- Options (Array): as opções são os itens/pizzas em si comprados
- id (integer): id da opção
- title (string): titulo da opção
- price_un (decimal): preço unitário
- quantity (integer): quantidade
- subtotal (decimal): subtotal da opção
- ComplementCategories (Array)
- id (integer): id da categoria de complemento
- title (string): título da categoria de complementos
- Complements (Array)
- id (integer): id do complemento
- title (string): título do complemento
- price_un (decimal): preço do unitário
- quantity (integer): quantidade
- ref (string): código REF de integração
- subtotal (decimal): subtotal do complemento
1.1.3 Formas de Pagamento
Clique aqui para ir ao teste e poderá verificar a api de POST
Modelo do json a ser enviado ao servidor:
{ "token_account": "s6s7sd678dd86s8fh69hj54465df" } |
Modelo JSON da resposta do servidor
{ "code": 200, "name": "Success", "payment_methods": [ "Dinheiro", "Débito Mastercard", "Débito Visa", "Elo", "Crédito Hipercard" ], "payment_options": [ { "name": "Dinheiro", "ref": "106" }, { "name": "Débito Mastercard", "ref": "100" }, { "name": "Débito Visa", "ref": "101" }, { "name": "Débito Elo", "ref": "105" } ] } |
1.1.4 Alterar status do pedido
É importante o PDV notificar a API Delivery quando houver alguma mudança de status (confirmação do pedido, saiu para entrega, entregue e/ou pronto), e principalmente se houver cancelamento. Pois a API Delivery irá notificar o consumidor via email e push notification, essa notificação é feita através da API de alteração de status.
2.1. Integração de cardápio
São disponibilizadas algumas APIs que permitem a integração de cardápio com a plataforma Delivery App, permitindo que o PDV consulte e cadastre produtos, pizzas e categorias e altere sua disponibilidade.
2.1.1 API de produtos
A API de cardápio permite a atualização de itens do cardápio, podendo alterar o título e a disponibilidade, e permite também a atualização das variações dos itens, permitindo alterar preço, título e disponibilidade. Permite também cadastro de Categorias e Pizzas.
2.1.1.1 Cadastro de categoria
Clique aqui para ir ao teste e poderá verificar a api de POST
Modelo do json a ser enviado no body da requisição:
{ "token_account": "871523671eg93jhe91e139e1", "title": "Refrigerantes", "available": true, "pizza": true, "out_id": "123456" } |
- token_account [string]: token de autenticação da loja .
- title [string]: título da categoria.
- available [boolean]: true = ativo, false = inativo
- out_id [string]: código de referência do sistema integrado.
- pizza [boolean]: enviar true se for usar a categoria para cadastro de PizzaTamanho e PizzaSabor.
Retorno da requisição em caso de sucesso:
{ "code": 201, "name": "Category success created", "id": 456 } |
O retorno “code”:201 significa que a categoria foi cadastrada com sucesso. O ID é o ID interno da categoria no Delivery App.
2.1.2 Atualização de categoria
Clique aqui para ir ao teste e poderá verificar a api PUT.
Modelo de json a ser enviado no body de requisição:
{ "token_account": "7339afcfc50ccd855a13f186516cbdd0", "Categories": [{ "ref": "3et267er", "title": "INTEGRAÇÃO 2", "available": false }, { "ref": "3et267er", "title": "INTEGRAÇÃO 2", "available": false }] } |
- token_account [string]: token de autenticação da loja .
- Categories [Array]: Categorias que serão atualizadas.
- ref [string]: código de referência (mesmo out_id do cadastro) do sistema integrado. O ref é usado para consultar a categoria que será atualizada.
- title [string]: título da categoria.
- available [boolean]: true = ativo, false = inativo
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "success", "Results": [ { "ref": "123456", "updated": true, "message": "Categoria atualizada", "Errors": [] }, { "ref": "12121212", "updated": false, "message": "Categoria não encontrada", "Errors": [ "Categoria não encontrada com código ref informado" ] } ] } |
Cada categoria tem seu retorno individual, quando atualizada com sucesso será retornado updated: true.
2.1.3 Atualização de item
Clique aqui para ir ao teste e poderá verificar a api PUT.
Modelo de json a ser enviado no body de requisição:
{ "token_account": "7339afcfc50ccd855a13f186516cbdd0", "Items": [ { "ref": "23009", "title": ””, "enable": true, "intro": "descrição do item" }, { "ref": "55100", "title": "Coca Cola 2 litros", "enable": false } ] } |
- ref [string]: código de vinculação do item entre o sistema Delivery App e o sistema a ser integrado.
- title [string]: novo título do item, passar vazio ou null se não for alterar o título.
- enable [boolean]: altera a disponibilidade do item, passar null se não for atualizar.
- intro [string]: texto referente a introdução/descrição do item.
Retorno de requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [{ "ref": "23009", "updated": true, "message": "" }, { "ref": "55100", "updated": true, "message": "" } ] } |
O retorno informa individualmente se o item foi atualizado ou não, se updated = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.
2.1.4 Atualização de variação
Clique aqui para ir ao teste e poderá verificar a api PUT.
Modelo de json a ser enviado no body de requisição:
{ "token_account": "7339afcfc50ccd855a13f186516cbdd0", "Variants": [{ "item_ref": "23009", "ref": "55020", "price": 12.4, "enable": true, "title": "2 litros", "promotional_price": 0.0, }, { "item_ref": null, "ref": "40020", "price": 18.99, "enable": false, "title": "" }] } |
- item_ref [string]: código de vinculação do item que contém a variação a ser atualizada entre o sistema Delivery App e o sistema a ser integrado.
- ref [string]: código de vinculação da variação entre o sistema Delivery App e o sistema a ser integrado.
- price [decimal]: novo preço a ser atualizado, passar null se não for atualizar.
- enable [boolean]: altera a disponibilidade da variação, passar null se não for atualizar.
- title [string]: novo título da variação, passar vazio ou null se não for alterar o título.
- promotional_price [decimal]: valor decimal que indica o preço promocional referente ao valor da variação do item. Para remover a promoção de um item, basta passar 0.0.
- item_ref não é obrigatório (pode-se enviar null), pois algumas integrações usam apenas a vinculação na variação. Seu uso é importante em casos onde a variação pode repetir o ref para diferentes itens, sendo assim ele será necessário para identificar a qual item pertence a variação que está sendo atualizada.
Retorno de requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [{ "ref": "55020", "updated": true, "message": "" }, { "ref": "40020", "updated": false, "message": "mais de uma variação encontrada com o mesmo ref" } ] } |
O retorno informa individualmente se a variação foi atualizado ou não, se updated = true, a variação foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.
2.1.5 Cadastro de item
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo de json a ser enviado no body de requisição:
{ "token_account": "token_integracao", "Items": [{ "category_id": 4, "title": "title123", "intro": "descrição de item", "enable": true, "ref": "ref654", "only_scheduling": false, "Prices": [ { "name": "price123", "value": 1.6, "enable": true, "promotional_price": 1.5, "promotion_enable": true, "ref": "ref234" } ] }] } |
- category_id [int]: código de vinculação do item que referencia qual a categoria do item.
- title [string]: string que indica o título(nome) do item.
- intro [string]: string que indica a Descrição inicial do item.
- enable [boolean]: altera a disponibilidade do item, passar null se não for atualizar.
- only_scheduling [boolean]: se true, item é disponível apenas para agendamento
- ref [string]: código de vinculação do item entre o sistema Delivery App e o sistema a ser integrado.
- Prices: {
- name [string]:string que se refere ao nome da variação do item.
- value [decimal]: valor decimal que indica o preço da variação do item.
- enable [boolean]: altera a disponibilidade da variação do item, passar null se não for atualizar.
- promotional_price [decimal]: valor decimal que indica o preço promocional referente ao valor da variação do item.
- promotion_enable [boolean]: altera a disponibilidade do preço promocional da variação do item.
- ref [string]: código de vinculação da variação entre o sistema Delivery App e o sistema a ser integrado.
}
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "id": 734, "ref": "ref789", "inserted": true, "message": "Item cadastrado com sucesso", "Prices": [ { "id": 1224, "ref": "ref234", "inserted": true, "message": "Price cadastrado", "Errors": {} } ], "Errors": {} } ] } |
O retorno informa se o item foi cadastrado com "message: Item cadastrado com sucesso".
2.1.6 Cadastro de variações de item
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo de json a ser enviado no body de requisição:
{ "token_account": "7efdf38d0bdd899c06c72f6b2b6fa7db", "Variants": [ { "name": "name123", "value": 1.6, "enable": true, "promotional_price": 1.5, "promotion_enable": true, "ref": "ref432", "item_id": 677 } ] } |
- name [string]:string que se refere ao nome da variação do item.
- value [decimal]: valor decimal que indica o preço da variação do item.
- enable [boolean]: altera a disponibilidade da variação do item, passar null se não for atualizar.
- promotional_price [decimal]: valor decimal que indica o preço promocional referente ao valor da variação do item.
- promotion_enable [boolean]: altera a disponibilidade do preço promocional da variação do item.
- ref [string]: código de vinculação da variação entre o sistema Delivery App e o sistema a ser integrado.
- item_id [int]: código que faz referência a qual item a variação vai ser associada.
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "id": 1225, "ref": "ref432", "inserted": true, "message": "Variação cadastrado com sucesso", "Errors": {} } ] } |
O retorno informa se o item foi cadastrado com "message: Variação cadastrado com sucesso".
2.1.7 Cadastro de complementos global
Clique aqui para verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "c952f82f05318d398821111109a0c7d2", "Complements": [{ "title": "bacon", "description": "bacon fatiado", "enable": true, "price": 3, "ref": "222222", "code": "10" }, { "title": "", "description": "", "enable": false, "price": 3.99, "ref": "333333", "code": "10" }] } |
- *title [string] - Título do complemento
- description [string] - Descrição do complemento
- enable [boolean] - Complemento ativo/inativo
- *price [decimal] - Preço do complemento
- ref [string] - Código de referência para integração
- code [string] - Código para identificação interna do complemento
*obrigatórios
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "ref": "222222", "inserted": true }, { "ref": "333333", "inserted": false, "message": "Erro de cadastro de complemento", "Errors": [ "Título não pode ficar em branco", "Título não pode ficar em branco" ]} ] } |
2.1.7.1 Cadastro Categoria de complementos e grupos de complementos
Clique aqui para verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "7efdf38d0bdd899c06c72f6b2b6fa7db", "ComplementCategories": [{ "ref": "111111", "title": "Adicionais de lanche 2", "code": "integracao", "minimum": 0, "maximum": 5, "enable": true, "more_than_one": true, "Complements": ["ref_complemento", "ref_complemento"] }, { "ref": "222222", "title": "Adicionais de lanche", "code": "integracao", "minimum": 0, "maximum": 1, "enable": true, "more_than_one": true, "Complements": [] }] } |
- ref [string] - Código de referência para integração
- *title [string] - Título do complemento
- code [string] - Código para identificação interna do complemento
- *minimum [integer] - Mínimo de complementos que pode ser escolhido
- *maximum [integer] - Máximo de complementos que pode ser escolhido
- enable [boolean] - Complemento ativo/inativo
- more_than_one [boolean] - Indica se é permitido escolher mais que uma unidade do mesmo complemento
- Complements [Array] - Array de ref dos complementos que farão parte do grupo
*obrigatórios
- minimum deve ser >= 0 e < maximum
- maximum deve ser > 0
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "ref": "111111", "inserted": true }, { "ref": "222222", "inserted": false, "message": "parâmetro Complements não encontrado ou vazio", "Errors": [ "parâmetro Complements não encontrado ou vazio" ] } ] } |
2.1.7.2 Vincular Grupos de Complementos ao Item
Clique aqui para verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "d952b77f05317d598001f7b109a0c7d2", "Items": [{ "ref": "8804505", "ComplementCategories": ["1001301", "2001302"] }, { "ref": "1505", "ComplementCategories": ["1001301"] }, { "ref": "8804505", "ComplementCategories": ["9199"] }] } |
- ref [string] - Código de referência do item que será vinculado os grupos de complementos.
- ComplementCategories [Array] - Array de refs do grupo de complemento que serão vinculados ao item.
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "ref": "8804505", "inserted": true }, { "ref": "1505", "inserted": false, "message": "Item não encontrado", "Errors": [ "Item não encontrado" ] }, { "ref": "8804505", "inserted": false, "message": "Grupos de complemento não encontrado", "Errors": [ "Grupos de complemento não encontrado" ]} ] } |
2.1.8 Cadastro de complementos padrão
Clique aqui para ir ao teste e poderá verificar a api POST.
ATENÇÃO! Esta funcionalidade será descontinuada. |
Modelo de json a ser enviado no body de requisição:
{ "token_account": "token", "ComplementCategories": [{ "item_id": 742, "title": "INTEGRAÇÃO", "minimum": 0, "maximum": 6, "ordem": 1, "enable": true, "more_than_one": true, "ref": "ref222", "Complements": [{ "title": "integração", "description": "descrição do complemento", "enable": true, "price": 3.4, "ref":"ref333" }] }] } |
- item_id [int]:string que se refere ao nome da variação do item.
- title [string]: novo título do complemento, passar vazio ou null se não for alterar o título.
- minimum [int]:indica a quantidade mínima de complementos no produto referenciado.
- maximum [int]: indica a quantidade máxima de complementos no produto referenciado.
- ordem [int]:ordem que será mostrado o complemento (default será a ordem de cadastro).
- enable [boolean]: altera a disponibilidade dos complementos no item.
- more_than_one [boolean]: indica se poderá ser escolhido mais que uma unidade do mesmo complemento pertencente a essa categoria.
- ref [string]: código de vinculação do complemento entre o sistema Delivery App e o sistema a ser integrado.
- Complements: {
- title [string]: novo título do complemento, passar vazio ou null se não for alterar o título.
- description [string]: breve texto que irá descrever o complemento.
- complement_category_id [int]: faz referência do complemento com a categoria do mesmo.
- enable [boolean]: altera a disponibilidade do complemento, passar null se não for atualizar.
- price [decimal]: valor que indica o preço do complemento.
- ref [string]: código de vinculação do complemento entre o sistema Delivery App e o sistema a ser integrado.
}
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "id": 323, "ref": "ref123", "inserted": true, "message": "Complemento(s) cadastrado(s)", "Complements": [ { "id": 698, "ref": "ref123", "inserted": true, "message": "Complemento cadastrado", "Errors": {} } ], "Errors": {} } ] } |
O retorno informa se o item foi cadastrado com "message: Complemento cadastrado".
2.1.9 Cadastro de sabor de pizza
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "token_de_integracao", "sabores": [ { "title": "4 Queijos", "description": "pizza 4 queijos", "enable": true, "ordem": 1, "id_categoria": 176, "ref": "ref234", "preco_tamanho": [ { "ref": "ref234", "price": 1.6, "id_tamanho": 196, "enable": true } ] } ]} |
- title [string]: novo título do complemento, passar vazio ou null se não for alterar o título.
- description [string]: breve texto que irá descrever o complemento.
- enable [boolean]:altera a disponibilidade do sabor, passar null se não for atualizar.
- ordem [int]: ordenação dos sabores.
- id_categoria [int]: código de referência do sabor com a sua categoria.
- ref [string]: código de vinculação do sabor entre o sistema Delivery App e o sistema a ser integrado.
- preco_tamanho:
- ref [string]: código de vinculação do sabor por tamanho entre o sistema Delivery App e o sistema a ser integrado.
- price [decimal]: valor que indica o preço do sabor do tamanho escolhido.
- id_tamanho [int]: código de vinculação do tamanho que referencia qual o sabor da pizza.
- enable [boolean]: altera a disponibilidade do sabor, passar null se não for atualizar.
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "ref": "ref234", "inserted": true, "message": "Sabor cadastrado" } ] } |
O retorno informa se o item foi cadastrado com "message: Sabor cadastrado".
2.1.10 Cadastro de categoria de sabor de pizza
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "token_de_integracao", "Categorias": [ { "enable": true, "maximum": 6, "minimum": 2, "ref": "ref897", "pizza_sabor_id": 11, "title": "titulo 2", "more_than_one": false, "Complementos": [ { "title": "Nome complemento 1", "description": "fffgggf", "enable": true, "ref": "ref789", "Prices": [ { "pizza_tamanho_id": 11, "price": 1.7, "ref": "ref234" } ] } ] } ] } |
- enable [boolean]: altera a disponibilidade dos sabores na pizza.
- maximum [int]: quantidade máxima de complementos que poderá ser escolhido.
- minimum [int]:quantidade mínima de complementos que poderá ser escolhido.
- ref [string]: código de vinculação da variação entre o sistema Delivery App e o sistema a ser integrado.
- pizza_sabor_id [int]: id do sabor da pizza que será vinculado à categoria de complemento.
- title [string]: novo título da categoria, passar vazio ou null se não for alterar o título.
- more_than_one [boolean]: indica se poderá ser escolhido mais que uma unidade do mesmo complemento pertencente a essa categoria.
- Complementos:
- title [string]: título/nome do complemento.
- description [string]: breve texto que irá descrever o complemento.
- enable [boolean]: altera a disponibilidade do sabor da pizza.
- ref [string]:código de vinculação da entre o sistema Delivery App e o sistema a ser integrado.
- Prices:
- pizza_tamanho_id [int]: código de vinculação do complemento a um determinado tamanho.
- price [decimal]: preço do complemento.
- ref [string]: código de vinculação do complemento entre o sistema Delivery App e o sistema a ser integrado.
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "inserted": true, "ref": "ref897", "id": 452, "Complementos": [ { "ref": "ref789", "id": 1525, "Prices": [ { "ref": "ref789", "id": 1525 }, ] } ] } ] } |
O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.
2.1.11 Cadastro de tamanho de pizza
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "token_de_integracao", "Tamanhos": [ { "title": "Tamanho 1", "dois_sabor": true, "tres_sabor": true, "quatro_sabor": true, "enable": true, "ordem": 1, "category_id": 176, "ref": "ref123", "balcao": false } ] } |
- title[string]: novo título do tamanho, passar vazio ou null se não for alterar o título.
- dois_sabor[boolean]: se true, indica que a pizza aceita dois sabores.
- tres_sabor[boolean]: se true, indica que a pizza aceita tres sabores.
- quatro_sabor [boolean]: se true, indica que a pizza aceita quatro sabores.
- enable[boolean]: altera a disponibilidade do tamanho da pizza.
- ordem[int]: ordenação do tamanho da pizza.
- category_id [int]: código de vinculação do item que referencia qual a categoria do item.
- ref [string]: código de vinculação do tamanho da pizza entre o sistema Delivery App e o sistema a ser integrado.
- balcao [boolean]: se true, esse tamanho de pizza está disponível apenas para retirada na loja.
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "inserted": true, "ref": "ref123", "id": 232 } ] } |
O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.
2.1.12 Cadastro de categoria de tamanho de pizza
Clique aqui para ir ao teste e poderá verificar a api POST.
Modelo do json a ser enviado no body da requisição:
{ "token_account": "token_de_integracao", "Categorias": [ { "enable": true, "title": "title1", "minimum": 1, "maximum": 2, "ref": "ref345", "pizza_tamanho_id": 11, "more_than_one": true, "Complementos": [ { "enable": true, "title": "title2", "description": "description123", "ref": "ref534", "price": 4.7 } ] } ] } |
- enable [boolean]: altera a disponibilidade do item, passar null se não for atualizar.
- title [string]: novo título do tamanho, passar vazio ou null se não for alterar o título.
- maximum [int]: quantidade máxima de complementos que poderá ser escolhido.
- minimum [int]: quantidade mínima de complementos que poderá ser escolhido.
- ref [string]: código de vinculação do tamanho da pizza entre o sistema Delivery App e o sistema a ser integrado.
- pizza_tamanho_id [int]: código de vinculação do tamanho que referencia qual a categoria do tamanho.
- more_than_one [boolean]: indica se poderá ser escolhido mais que uma unidade do mesmo complemento pertencente a essa categoria.
- Complementos :
- enable [boolean]: altera a disponibilidade do complemento, passar null se não for atualizar.
- title [string]: novo título do complemento, passar vazio ou null se não for alterar o título.
- description[string]:
- ref [string]: código de vinculação do tamanho da pizza entre o sistema Delivery App e o sistema a ser integrado.
- price [decimal]: preço do complemento
Retorno da requisição em caso de sucesso:
{ "code": 200, "name": "Success", "Results": [ { "inserted": true, "ref": "ref345", "id": 129, "Complementos": [ { "ref": "ref534", "id": 328 }] }] } |
O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.
2. Requisição Webhook
A empresa que desejar dar suporte a comunicação através do recurso de webhook da Neemo deverá implementar uma rota na sua aplicação que receberá uma requisição HTTP POST, essa rota (URL) deverá então ser cadastrada no sistema da Neemo onde poderá ser associada às lojas.
A requisição HTTP POST possui um cabeçalho que contém parâmetros informando o tipo do corpo da requisição e um “token” de autorização. Abaixo tem-se uma tabela com a relação desses parâmetros:
Cabeçalho da requisição HTTP | |
Parâmetro | Descrição |
Content-type | Tipo do corpo da requisição “application/json” |
Authorization | Token para autorizar a requisição |
A requisição HTTP POST possui um corpo onde será enviado parâmetros que informam qual o pedido acessado, qual a loja que possui o pedido, um código para identificar a integração webhook e dois tokens de acesso à API. Segue abaixo uma tabela com os parâmetros presentes no corpo da requisição:
Corpo da requisição HTTP | |
Parâmetro | Descrição |
ref | Identificador da integração com o Webhook (ID) na base de dados da Neemo |
order_id | Identificador do pedido (ID) da loja na base de dados da Neemo |
account_id | Identificador da loja (ID) na base de dados da Neemo |
account_access_token | Token de acesso a API que identifica a loja |
master_access_token | Token de acesso a API que identifica a franquia |
O servidor da Neemo que faz essa requisição HTTP POST trabalha com um tempo limite (timeout) de 10 segundos. Após esse tempo, se a requisição não for respondida, o servidor repetirá a requisição até que ela seja respondida com status 200, com um limite de 3 repetições.
Segue abaixo um exemplo de uma requisição: