Endpoint

Para utilização da API de consulta de pedidos será necessário fazer uma requisição GET para a seguinte url:

GET <https://api.newtail.com.br/api/order/integration>


Autenticação

Seja mais sobre a autenticação em Documentação API Autenticação


Filtros

Todos os filtros devem ser enviados como Query String.

FiltroTipoFormatoDescrição
order_idString Numero do pedido externo
start_dateDateYYYY-MM-DD 
end_dateDateYYYY-MM-DD 
channel_idString- whatsapp 
  • magento_ecommerce
  • lojafisica
  • MercadoLivre
  • whatsapp_bot
  • purchase
  • rappi
  • vtex | Canal do gerador de demanda (atendimento) | | store_id | String | | Indica o identificador remoto da loja | | name | String | | Nome do cliente final | | social_id | String | somente números | Indica o CPF ou CNPJ do cliente final | | main_phone | String | somente números | Indica o telefone do cliente final | | status | String | - order_placed
  • confirmed_order
  • waiting_picking
  • pre_picking
  • in_picking
  • finished_picking
  • waiting_invoice
  • invoice_issued
  • waiting_delivery
  • waiting_payment
  • delivery_accepted
  • in_delivery
  • finished
  • order_cancelled
  • order_delivered | Indica o status do pedido | | payment_status | String | - waiting_payment
  • payment_authorized
  • payment_approved
  • payment_refused
  • payment_refunded | Indica o status de pagamento atual | | payment_method | String | - online
  • in_person | Indica a forma de pagamento | | schedule_date | String | YYYY-MM-DD | Indica a data agendada de entrega (Depreciado) | | schedule_time | String | HH:MM - HH:MM | Indica a hora agendada de entrega (Depreciado) | | delivery_type | String | - shipping_from_store
  • pick_up_in_store | Indica o tipo de entrega |
FiltroTipoFormatoDescrição
order_idString Numero do pedido externo
start_dateDateYYYY-MM-DD 
end_dateDateYYYY-MM-DD 
channel_idString- whatsapp 
  • magento_ecommerce
  • lojafisica
  • MercadoLivre
  • whatsapp_bot
  • purchase
  • rappi
  • vtex | Canal do gerador de demanda (atendimento) | | store_id | String | | Indica o identificador remoto da loja | | name | String | | Nome do cliente final | | social_id | String | somente números | Indica o CPF ou CNPJ do cliente final | | main_phone | String | somente números | Indica o telefone do cliente final | | status | String | - order_placed
  • confirmed_order
  • waiting_picking
  • pre_picking
  • in_picking
  • finished_picking
  • waiting_invoice
  • invoice_issued
  • waiting_delivery
  • waiting_payment
  • delivery_accepted
  • in_delivery
  • finished
  • order_cancelled
  • order_delivered | Indica o status do pedido | | payment_status | String | - waiting_payment
  • payment_authorized
  • payment_approved
  • payment_refused
  • payment_refunded | Indica o status de pagamento atual | | payment_method | String | - online
  • in_person | Indica a forma de pagamento | | schedule_date | String | YYYY-MM-DD | Indica a data agendada de entrega (Depreciado) | | schedule_time | String | HH:MM - HH:MM | Indica a hora agendada de entrega (Depreciado) | | delivery_type | String | - shipping_from_store
  • pick_up_in_store | Indica o tipo de entrega |

ATENÇÃO:

<aside> ? Para filtrar somente os pedidos que precisam ser integrados com o seu sistema de PDV, deve-se filtrar os pedidos com status=finished_picking. Isso faz com que somente os pedidos aguardando nota fiscal, que já foram finalizados a separação, sejam retornados na consulta.

</aside>


Atributos

AtributoTipoDescrição
totalIntegerIndica a quantidade total de pedidos presentes no filtro atual
ordersList<Pedido>Lista de Pedidos

Atributos do Pedido

AtributoTipoDescrição
idStringIdentificador único interno no pedido
account_idStringIdentificador único interno do Supermercado
location_idStringIdentificador único interno da loja em que o pedido foi feito
operator_idStringIdentificador único interno do operador que fez a separação do pedido
channel_idStringindica qual em qual o canal o pedido foi feito
customer_idStringIdentificador único interno do Cliente Final
shipping_costFloatValor cobrado para a entrega no pedido
total_discountFloatValor total de desconto no pedido
total_priceFloatValor total do pedido (incluindo total_discount, shipping_cost e sub_total)
descriptionStringÉ o corpo da mensagem do pedido feito pelo cliente no Whatsapp
loyalty_programBoolean 
document_on_receiptStringindica qual o CPF do cliente que deve estar na nota fical
gift_messageStringMensagem para presente

O retorno da requisição terá código HTTP 204 para caso que obtiveram sucesso na atualização. Em caso de erro será enviado um HTTP 5XX, com o possível problema.

Abaixo exemplo de requisição bem sucedida:

 

{
  "total": 1,
  "orders": [
    {
      "id": "e3cd8350-a862-11eb-b1a4-d7c34cb5fa05",
      "account_id": "7a28e5a0-65a2-11eb-b70f-07f0e148ce7f",
      "location_id": "a65db040-7de6-11eb-ab55-4d2b573fc158",
      "operator_id": null,
      "channel_id": "whatsapp",
      "order_id": "68",
      "customer_id": "fae52600-72e9-11eb-b2ab-9778161ba500",
      "salesperson": null,
      "tax_included": null,
      "shipping_cost": null,
      "total_discount": null,
      "total_tax": null,
      "total_price": 0,
      "description": "100g de batata inglesa\\n2 bandejas de iogurte\\n1 saco de pão fatiado",
      "loyalty_program": false,
      "document_on_receipt": false,
      "gift_message": null,
      "currency": "BRL",
      "closed_at": null,
      "cancelled_at": null,
      "start_picking_at": null,
      "end_picking_at": null,
      "allow_item_substitution": false,
      "include_bag": false,
      "createdAt": "2021-04-28T20:47:04.000Z",
      "updatedAt": "2021-04-28T20:47:04.000Z",
      "deletedAt": null,
      "createdAt_timestamp": 1619913600,
      "store_id": null,
      "webhook_url": "<https://api.newtail.com.br/webhook/orders/7a28e5a0-65a2-11eb-b70f-07f0e148ce7f/e3cd8350-a862-11eb-b1a4-d7c34cb5fa05>",
      "customer": {
        "id": "fae52600-72e9-11eb-b2ab-9778161ba500",
        "name": "Emerson Mendes",
        "social_id": "05207623125",
        "type": "individual",
        "account_id": "7a28e5a0-65a2-11eb-b70f-07f0e148ce7f",
        "main_email": "emerson.mendes@newtail.com.br",
        "main_phone": "6792180865",
        "application_source": "newtail_purchase_form",
        "channel_source": "online"
      },
      "items": [
        {
          "id": "e3d1c910-a862-11eb-bd46-01238ff209f9",
          "order_id": "e3cd8350-a862-11eb-b1a4-d7c34cb5fa05",
          "name": "Pedido Total",
          "detail": null,
          "gift_wrap": null,
          "original_price": 0,
          "special_price": 0,
          "cost_price": 0,
          "shipping_cost": 0,
          "quantity": 0,
          "product_id": "wpp-001",
          "product_id_substitute": null,
          "image_url": null,
          "status": null,
          "createdAt": "2021-04-28T20:47:04.000Z",
          "updatedAt": "2021-04-28T20:47:04.000Z",
          "deletedAt": null
        }
      ],
      "payments": {
        "id": "e3d1f020-a862-11eb-9acb-7d6185a92fc9",
        "order_id": "e3cd8350-a862-11eb-b1a4-d7c34cb5fa05",
        "value": 0,
        "transaction_date": "2021-04-28",
        "status": "waiting_payment",
        "parcels": null,
        "method": "online",
        "description": null,
        "card_issuer": null,
        "autorization_id": null,
        "payment_id": null,
        "nsu": null,
        "card_number": null,
        "createdAt": "2021-04-28T20:47:04.000Z",
        "updatedAt": "2021-04-28T20:47:04.000Z",
        "deletedAt": null
      },
      "status": {
        "id": "e3d1a200-a862-11eb-9be2-d3bf56c21ed1",
        "order_id": "e3cd8350-a862-11eb-b1a4-d7c34cb5fa05",
        "type": "waiting_picking",
        "label": "Aguardando Separação",
        "code": "Aguardando Separação",
        "createdAt": "2021-04-28T20:47:04.000Z",
        "updatedAt": "2021-04-28T20:47:04.000Z",
        "deletedAt": null
      },
      "shipments": {
        "schedule_date": "2021-05-01",
        "slot": "09:00 - 13:00",
        "type": "pick_up_in_store",
                "items": "container1,container2,...,containerN",
      }
    }
  ]
}

 

Untitled__15_.png

 

Observação quando ocorrer itens com substituição

Quando ocorrer substituição, deve ser utilizado o campo product_id_substitute em detrimento ao product_id para as ofertas.

Status do Item

  • deleted: esse item foi removido durante a separação e não deve ser incluído no Cupom Fiscal
  • confirmed: esse item foi separado com sucesso e deve ser incluído no Cupom Fiscal e deve utilizar o campo product_id para identificar a oferta
  • substitution: esse item foi substituído por outro item e deve ser incluído no Cupom Fiscal e deve utilizar o campo product_id_substitute para identificar a oferta

Exemplos de Pedidos:

shipping_from_store.json

Atualização do pedido do pedido

Para atualizar o status de um pedido pela API é bastante simples, bastando fazer uma Requisição HTTP com o status desejado.

PUT <https://api.newtail.com.br/webhook/orders/:account_id/:id> ou :order_id
  • account_id: é o identificador único da conta
  • id: é o identificador único do pedido (que é recebido no campo id) - newtail
  • order_id: é um identificador sequencial gerado durante a criação do pedido na newtail

Parâmetros

Os próximos campos são utilizados quando a separação é feita em sistema externo a Newtail.

Exemplo de nota fiscal emitida.

<aside> ⚠️ Captura do Pagamento O pagamento não será capturado até que o status do pedido chegue ao status de nota fiscal emitida (invoice_issued).

</aside>

{
    "status": "invoice_issued", // indica o status atual do pedido
    "integration_id": "100000001" // indica o id interno,
  "invoice_id": "1234" // chave da nota 44 caracteres - Opcional
}

Exemplo de finalização de separação

{
    "status": "finished_picking",
    "integration_id": "100000001",
  "shipping_cost": 1.0, // opcional - enviar somente se necessário
  "sub_total": 999.99, // opcional - enviar somente se necessário
  "items": [
    {
      "product_id": "1", // sku do produto
      "product_id_substitute": "2", // sku do novo produto
      "price": 23.50, // preço por unidade/kg
      "quantity": 1.3, // quantidade separada
      "discount": 1.5, // valor do desconto
      "sub_total": 30.55 // opcional - price * discount
    },
    {
      "product_id": "3", // sku do produto
      "price": 23.50, // preço por unidade/kg
      "quantity": 1.3, 
      "discount": 1.5,
    },
  ]
}

Retorno

  • O retorno da requisição terá código HTTP 204 para caso que obtiveram sucesso na atualização
  • Em caso de erro será enviado um HTTP 5XX, com o possível problema.

Exemplo de Requisição

curl --location --request PUT '<https://api.newtail.com.br/webhook/orders/XXXXXX-XXXX-XXXX-XXXX-1918d5f0ff29/XXXXXX-XXXX-XXXX-XXXX-1769d727c329>' \\
--header 'x-app-id: xxx' \\
--header 'x-api-key: yyy' \\
--header 'Content-Type: application/json' \\
--data-raw '{
    "status": "order_delivered"
}'


Status

Status dos Pedidos

Indica os status que o pedido pode passar por toda a sua vida útil.

Status de Atualização

Indica os possíveis status que o Supermercado por enviar após a conclusão da separação. São esses status que indicam se a entrega deve seguir como está no seu status final

Status do Pagamento

Indica os status do pagamento

Método de Pagamento

Indica as formas de pagamento que o cliente poderá optar

Tipo do Método de Pagamento

Indica qual o tipo de pagamento que o cliente escolheu.

Status do Item

Indica os status que os produtos podem ter após a separação.

mceclip0.png