Introdução
Bem vindo a documentação da API abrahão! Você usará esta API para criar uma comunicação entre seu sistema e os endpoints de envio e recebimento de informações do abrahão.
Ao longo da documentação, mostraremos descrições detalhadas dos métodos que disponibilizamos e também exemplos de aplicações em diversas linguagens de programação.
Precisa de ajuda ou quer tirar dúvidas? Entre em contato com nosso time de desenvolvimento pelo email [email protected].
Antes de começar a integração você precisa definir a linguagem de programação que irá utilizar ou usa em seu sistema. Após definido, selecione no canto superior direito uma linguagem e os exemplos de aplicações nessa linguagem serão mostrados a direita de seus respectivos tópicos. Se a linguagem que você usará não está presente em nossa documentação, entre em contato para que possamos te ajudar a desenvolver a integração e incluirmos aqui futuramente.
Token de acesso
Você também precisará de uma conta no abrahão e um Token
de acesso. Ambos, são gerados e enviados por nossa equipe para você. Se ainda não possui, entre em contato com nosso time de desenvolvimento e solicite seu Token
de acesso.
Iniciando a integração
Integração com bibliotecas
Para algumas linguagens de programação, desenvolvemos SDKs, Dlls e formas de simplificar o desenvolvimento da integração entre ambos os lados. Você pode encontrar isso em nosso Github e usar gratuitamente.
Após entender os passos acima, você precisará importar a biblioteca de acordo com a linguagem escolhida.
Veja abaixo as bibliotecas disponíveis e formas de importação:
PHP
Biblioteca PHP instalada via Composer.
$ composer require oimenu/oimenu-php
Como alternativa, você pode baixar a biblioteca diretamente.
JAVA
Para o Maven, adicione a seguinte dependência ao seu POM:
<dependency>
<groupId>br.com.oimenu</groupId>
<artifactId>oimenu-java</artifactId>
<version>1.0.0</version>
</dependency>
Em outros ambientes, instale manualmente os seguintes JARs:
- O JAR abrahão de nosso Github
- Google Gson de https://github.com/google/gson
DELPHI
Para utilizar nossa biblioteca Delphi, baixe a lib em nosso Github, descompacte o arquivo baixado na pasta de seu projeto e também inclua o arquivo OiMenuUtil.pas.
O abrahão SDK necessita que as seguintes bibliotecas estejam adicionadas ao seu projeto para funcionar corretamente:
- libeay32.dll
- ssleay32.dll
Integração manual
Recomendamos que utlize nossas bibliotecas para fazer a integração, porém, caso não queira usar bibliotecas ou não seja possível, você pode desenvolver manualmente a integração enviando e recebendo requests para nossa API. Recomendamos utilizar um parametro para facilitar a troca da URL base de comunicação.
Nossa URL base para comunicação com a API é:
https://developers.abrahao.com.br/api/v1
Tambem é possivel utilizar a API localmente utilizando o IP do servidor (IP:PORTA):
http://192.168.0.100:5001/api/v1
Comunicação
Utilizamos o padrão RESTful
para comunicação entre os sistemas e o padrão de mensagens JSON
para enviar e receber os dados.
Todas as respostas das requisições da API possuirão um indicador de sucesso chamado success
. Caso o valor seja false
um campo chamado message
será enviado com a mensagem que indica a falha ocorrida na requisição (Clique aqui pra saber os tipos de falhas existentes).
O tipo da requisição é importante, já que indica a ação que será executada, portanto:
Tipo | Descrição |
---|---|
GET | Retorna um registro ou uma lista de registros |
POST | Insere um registro |
PUT | Atualiza um registro |
DELETE | Remove um registro |
Alguns cadastros poderão ser realizados em lote, ou seja, será possível inserir/atualizar vários registros em apenas uma requisição. Nesse caso o tipo de requisição será sempre POST
e toda a lista de registros enviados será processada. Nesse processamento os registros que ainda não existirem serão inseridos e os já existentes serão atualizados.
Recebendo as respostas no formato XML:
Algumas linguagens não possuem bibliotecas nativas para interpretar o formato JSON
, pensando nisso criamos um parâmetro chamado format
que poderá ser enviado em todas as requisições.
Para que os dados sejam retornados no formato XML basta enviar o valor xml
nesse parâmetro. Exemplo:
https://developers.abrahao.com.br/api/v1/orders?format=xml
Lembrando que esse parâmetro vai alterar apenas a resposta, os dados de envio para POST
e PUT
continuarão sendo esperados no formato JSON
.
Campos de configuração
O Token de autorização e URL da comunicação que fornecemos precisam ser salvos e utilizados em todas as requests para nossa API. Você precisa ter em seu sistema uma área, ou campos, onde você possa salvar essas duas informações importantes para a integração.
A URL da comunicação padrão é https://developers.abrahao.com.br, porém se o restaurante utilizar o servidor local da abrahão, o endereço será um IP da intranet em uma porta específica, por ex: http://192.168.0.100:5001.
É importante que esses parâmetros sejam de fácil acesso para a Equipe da abrahão, de forma a facilitar a configuração durante a implantação ou suporte.
Autenticação
Exemplo de Autenticação:
curl -X GET "https://developers.abrahao.com.br/api/v1/orders" \
-H "Authorization: Bearer <token>"
<?php
$oimenuClient = new \OiMenu\Client('<token>');
OimenuClient oimenuClient = new OimenuClient("<token>");
var
orderResult : TOrderResult;
begin
orderResult := getAllOrders('<token>');
Todas as requisições para a API devem ser feitas passando o Token
de acesso no header da requisição, como no exemplo ao lado. O valor desse parâmetro será disponibilizado por nossa equipe ao parceiro para a realização da integração e testes.
Para solicitar seu Token
entre em contato com nosso time de desenvolvimento pelo email [email protected].
Todas as solicitações da API devem ser feitas por meio de HTTPS
. Chamadas feitas por HTTP
simples falharão. Solicitações de API sem autenticação também falharão.
Outra coisa importante é saber que cada estabelecimento (restaurante, por exemplo) integrado terá uma conta e um Token
de acesso que também forneceremos posteriormente.
Mensagens de Erro
Nós usamos respostas HTTP convencionais para indicar o sucesso ou a falha de uma solicitação da API. Em geral: os códigos no intervalo 2xx
indicam sucesso. Os códigos 4xx
indicam um erro que falhou, dadas as informações fornecidas (por exemplo, um parâmetro necessário foi omitido, etc.). Códigos 5xx
indicam um erro com nossos servidores (raros de acontecer).
Abaixo está uma lista de retorno de Erros da API abrahão com suas respectivas descrições:
Código | Descrição | Solução |
---|---|---|
400 | Requisição inválida. | Isto pode ser causado por envio de um JSON inválido no corpo da requisição, fornecendo parâmetros inválidos, etc. |
401 | Falha de autenticação. | Verifique se o token foi informado corretamente no header da requisição (Clique aqui para mais detalhes sobre autenticação). Caso não possua um token, entre em contato pelo e-mail [email protected]. |
404 | O recurso requisitado não existe. | Verifique se o endpoint informado está correto. |
429 | Excesso de requisições. | A requisição foi rejeitada devido a limitação de taxa. Diminua o intervalo entre as requisições. |
500 | Erro interno do servidor. | Ocorreu um erro desconhecido e nós já fomos alertados. De toda forma, entre em contato pelo e-mail [email protected] para resolvermos o problema o mais rápido possível. |
Separator 1
Sincronização entre os sistemas
Introdução a sincronização
Após entender como a autenticação funciona e os tipos de integração que disponibizamos, você deve entender como manter ambos os sistemas sincronizados.
Sempre que um produto é adicionado em seu sistema, tem o valor ou nome alterado ou é excluido, você deve enviar ao abrahão essa informação para que possamos disponibilizar as mudanças ao cliente final do estabelecimento.
A seguir, listaremos uma série de métodos que podem ser usados para essa sincronização.
Enviar um produto de seu sistema para o abrahão
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/product" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": "106",
"name": "Chopp da Casa 300ml",
"price": 6.50,
"extra_fields": {
"any_field": 1
}
}'
<?php
$response = $oimenuClient->createProduct([
'code' => '106',
'name' => 'Chopp da Casa 600ml',
'price' => 6.50,
'extra_fields' => [
'any_field' => 1
]
]);
Product product = new Product();
product.setCode("106");
product.setName("Chopp da Casa 600ml");
product.setPrice(6.50);
product.setExtraFields("{\"any_field\":1}");
ProductResult result = oimenuClient.createProduct(product);
var
productResult : TProductResult;
product : TProduct;
begin
product := TProduct.Create;
product.code := '106';
product.name := 'Chopp da Casa 600ml';
product.price := 6.50;
product.extraFields := '{"any_field":1}';
productResult := createProduct('<token>', product);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": "106",
"name": "Chopp da Casa 300ml",
"price": "6.50",
"extra_fields": {
"any_field": 1
}
}
}
Quando um produto for adicionado em seu sistema, sugerimos que o envie para o abrahão através deste método. Com isso, ele ficará disponível para ser adicionado no abrahão mantendo um vínculo entre ambos os sistemas.
Isso ajuda na manutenção do cardápio. Quando o preço desse produto for alterado em seu sistema, por exemplo, automaticamente ele será atualizado no abrahão.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/product
Corpo da requisição
Objeto Produto
Nome | Descrição | Tipo | Obrigatório | Valor Padrão |
---|---|---|---|---|
code | Código | text | Sim | |
name | Nome | text | Sim | |
price | Preço | decimal(9,2) | Não | 0.00 |
extra_fields | Campos extras | json | Não |
Enviar produtos de seu sistema em lote para o abrahão
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/products" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '[
{
"code": "107",
"name": "Chopp 300ml",
"price": 5.90
},
{
"code": "108",
"name": "Chopp 600ml",
"price": 9.90
},
{
"code": "109",
"name": "Cerveja Artesanal 300ml",
"price": 12.00
}
]'
<?php
$response = $oimenuClient->batchProducts([
[
'code' => '107',
'name' => 'Chopp 300ml',
'price' => 5.90
],
[
'code' => '108',
'name' => 'Chopp 600ml',
'price' => 9.90
],
[
'code' => '109',
'name' => 'Cerveja Artesanal 300ml',
'price' => 12.00
]
]);
Product product1 = new Product();
product1.setCode("107");
product1.setName("Chopp 300ml");
product1.setPrice(5.90);
Product product2 = new Product();
product2.setCode("108");
product2.setName("Chopp 600ml");
product2.setPrice(9.90);
Product product3 = new Product();
product3.setCode("109");
product3.setName("Cerveja Artesanal 300ml");
product3.setPrice(12.00);
List<Product> list = new ArrayList<Product>();
list.add(product1);
list.add(product2);
list.add(product3);
SimpleResult result = oimenuClient.batchProducts(list);
var
simpleResult: TSimpleResult;
listProduct: TListProduct;
product1, product2, product3: TProduct;
begin
product1 := TProduct.Create;
product1.code := '107';
product1.name := 'Chopp 300ml';
product1.price := 5.90;
product2 := TProduct.Create;
product2.code := '108';
product2.name := 'Chopp 600ml';
product2.price := 9.90;
product3 := TProduct.Create;
product3.code := '109';
product3.name := 'Chopp Artesanal 300ml';
product3.price := 12.00;
listProduct := TListProduct.Create;
listProduct.Add(product1);
listProduct.Add(product2);
listProduct.Add(product3);
simpleResult := batchProducts('<TOKEN>', listProduct);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando você iniciar a integração com o abrahão ou adicionar vários produtos de uma vez em seu sistema, sugerimos que envie para o abrahão através deste método. Com isso, os produtos ficarão disponíveis para serem adicionados no abrahão mantendo um vínculo entre ambos os sistemas.
Isso ajuda na manutenção do cardápio. Quando o preço dos produtos forem alterados em seu sistema, por exemplo, automaticamente eles serão atualizados no abrahão.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/products
Corpo da requisição
Lista de objetos Produto
Nome | Descrição | Tipo | Obrigatório | Valor Padrão |
---|---|---|---|---|
code | Código | text | Sim | |
name | Nome | text | Sim | |
price | Preço | decimal(9,2) | Não | 0.00 |
extra_fields | Campos extras | json | Não |
Listar os produtos que seu sistema enviou para o abrahão
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/products" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllProducts();
//pegar com carlesso
// pegar com carlesso
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"code": "17",
"name": "Arroz Branco Extra",
"price": "2.00",
"extra_fields": null
}
],
"count": 1
}
Você pode verificar todos os produtos que seu sistema enviou para o abrahão através desse método.
Isso ajuda na conferência dos produtos já enviados ao abrahão.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/products
Resposta
Objeto Produto
Nome | Descriçao | Tipo | Formato |
---|---|---|---|
code | Código | text | |
name | Nome | text | |
price | Preço | decimal(9,2) | 0.00 |
extra_fields | Campos extras | json |
Atualizar um produto de seu sistema no abrahão
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/product/109" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Cerveja Artesanal Suave 300ml",
"price": 11.90
}'
<?php
$response = $oimenuClient->updateProduct('109', [
'name' => 'Cerveja Artesanal Suave 300ml',
'price' => 11.90
]);
Product product = new Product();
product.setCode("109");
product.setName("Cerveja Artesanal Suave 300ml");
product.setPrice(11.90);
ProductResult result = oimenuClient.updateProduct(product);
var
productResult : TProductResult;
product : TProduct;
begin
product := TProduct.Create;
product.code := '109';
product.name := 'Cerveja Artesanal Suave 300ml';
product.price := 11.90;
productResult := updateProduct('<token>', product);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": "109",
"name": "Cerveja Artesanal Suave 300ml",
"price": "11.90",
"extra_fields": null
}
}
Se um produto for atualizado em seu sistema, sugerimos que use este método para atualiza-lo em nossa base. Isso é importante para manter a consistência dos dados em ambas as aplicações e prevenir erros de usuário no futuro.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/product/<codigo do produto>
Corpo da requisição
Objeto Produto
Nome | Descrição | Tipo | Obrigatório | Valor Padrão |
---|---|---|---|---|
name | Nome | text | Não | |
price | Preço | decimal(9,2) | Não | 0.00 |
extra_fields | Campos extras | json | Não |
Remover um produto de seu sistema dentro do abrahão
Exemplo de Request:
curl -X DELETE "https://developers.abrahao.com.br/api/v1/product/107" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->deleteProduct('107');
SimpleResult result = oimenuClient.deleteProduct("107");
var
simpleResult : TSimpleResult;
begin
simpleResult := deleteProduct('<token>', '107');
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sugerimos sempre que um produto for excluido de seu sistema, utilize este método para remover do abrahão. Isso mantém a base limpa em ambos os lados e previne erros de integração no futuro.
HTTP Request
DELETE https://developers.abrahao.com.br/api/v1/product/<codigo do produto>
Corpo da requisição
Vazio
Listar os pedidos pendentes
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/orders" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllOrders();
OrderResult result = oimenuClient.getAllOrders();
var
orderResult : TOrderResult;
begin
orderResult := getAllOrders('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"id": "9df1eab2-16dc-4b34-b42a-2f839be89be0",
"date": "2018-06-21 14:17:37",
"table": 2,
"table_name": "Mesa 2",
"card": null,
"waiter": "99",
"square": "01",
"people": 2,
"is_paid": true,
"take_away": false,
"fiscal_print": false,
"fiscal_document" : "00000000000",
"customer": {
"document": "00000000000",
"name": "Cliente"
},
"payments": [
{
"type": "CREDIT",
"flag": "VISA",
"remote_id": "9ff1869f-3ab5-461f-ad7f-01cd67c28c6b",
"provider": "stone",
"total": "39.90"
}
],
"items": [
{
"id": "7b937046-c0f3-4257-947b-8233efe082fc",
"code": "102",
"name": "Batata com Cheddar e Bacon",
"quantity": 2,
"price": "6.00",
"options": [],
"notes": [],
"extra_fields": null
},
{
"id": "2bfb33b7-fbe1-4f34-bb60-440b9738a0de",
"code": "100",
"name": "Sanduíche",
"quantity": 1,
"price": "29.90",
"options": [
{
"id": "4919ed9b-704d-4d09-81d5-a7b94e518d10",
"option_id": "",
"code": "104",
"name": "Molho Barbecue",
"quantity": 1,
"price": "4.00",
"notes": [],
"extra_fields": null
}
],
"notes": [
"Sem Partir - Sim",
"Tipo do Pão - Crocante"
]
}
]
}
],
"count": 1
}
Sempre que um cliente em um estabelecimento fizer um pedido, este pedido será adicionado a um JSON
em nosso sistema e disponibilizaremos em um endpoint.
Periodiamente esse endpoint deve ser consumido e os pedidos contidos nele, adicionados em seu sistema. Indicamos um intervalo de 1 minuto entre uma chamada e outra, mas fica a seu critério.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/orders
Resposta
Objeto Pedido
Nome | Descrição | Tipo | Formato |
---|---|---|---|
id | Identificador do pedido | uuid | |
date | Data/hora do pedido | datetime | YYYY-MM-DD HH24:MI:SS |
table | Código da mesa | integer | |
table_name | Nome da mesa | text | |
card | Código da comanda | integer | |
waiter | Código do garçom | text | |
square | Código do Praça da mesa | text | |
people | Número de pessoas na mesa | integer | |
is_paid | Pedido Pago | text | true ou false |
take_away | Pedido para levar | text | true ou false |
fiscal_print | Imprime comprovante fiscal | text | true ou false |
fiscal_document | Documento para impressão fiscal | text | |
payments | Lista de pagamentos | Payment[] |
|
customer | Dados do cliente | Customer |
|
items | Lista de itens | Item[] |
Objeto Payment
Nome | Descrição | Tipo | Formato |
---|---|---|---|
type | Tipo de pagamento | text | CREDIT , DEBIT , VOUCHER ou PIX |
flag | Bandeira do cartão | text | |
remote_id | Código da transação | text | |
provider | Nome do gateway de pagamento | text | |
total | Total da transação | decimal(21,2) |
Objeto Customer
Nome | Descrição | Tipo | Formato |
---|---|---|---|
document | Documento do cliente | text | |
name | Nome do cliente | text |
Objeto Item
Nome | Descrição | Tipo |
---|---|---|
id | Identificador do item no pedido | uuid |
code | Código do produto | text |
name | Nome do produto | text |
quantity | Quantidade vendida | integer |
price | Preço unitário | decimal(9,2) |
options | Lista de configurações do item | Option[] |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Objeto Option
Nome | Descrição | Tipo |
---|---|---|
id | Identificador da opção no item | uuid |
option_id | Identificador da opção pai | uuid |
code | Código do produto/opcional | text |
name | Nome do produto/opcional | text |
quantity | Quantidade vendida | decimal(21,10) |
price | Preço unitário | decimal(21,10) |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Ao acessar o endpoint, pegar os pedidos e adicionar em seu sistema, você deve marcá-lo como recebido para que ele não apareça mais no JSON
e não gere duplicidade de informações. Veja mais no método a seguir.
Marcar um pedido como recebido
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/order/<id do pedido>/received" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->setOrderAsReceived('<id do pedido>');
SimpleResult result = oimenuClient.setOrderAsReceived("<id do pedido>");
var
simpleResult : TSimpleResult;
begin
simpleResult := setOrderAsReceived('<token>', '<id do pedido>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Para que um pedido saia do JSON
de pedidos pendentes, é necessário marcá-lo como recebido. Para isso, basta enviar uma requisição para o endpoint passando o id do pedido
que deve ser marcado como recebido.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/order/<id do pedido>/received
Corpo da requisição
Vazio
Marcar um pedido como erro
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/order/<id do pedido>/error" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"error": "Não foi possível integrar o pedido, produto não encontrado."
}'
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Para que um pedido saia do JSON
de pedidos pendentes, é necessário marcá-lo como recebido ou como erro. Para marcar um pedido com erro, basta enviar uma requisição para o endpoint passando o id do pedido
que deve ser marcado como erro.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/order/<id do pedido>/error
Corpo da requisição
Objeto
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
error | Erro retornado pela integração | text | Não |
Listar os eventos pendentes
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/events" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllEvents();
EventResult result = oimenuClient.getAllEvents();
var
eventResult : TEventResult;
begin
eventResult := getAllEvents('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"id": "f22d1373-6cc3-4178-9510-1740096841ff",
"date": "2019-07-12 13:46:03",
"type": "the-check",
"data": {
"table": "1",
"card": "",
"waiter": "99",
"document": "12345678912",
"split_with": "1"
}
},
{
"id": "93161f05-5997-4317-b462-0724338be99e",
"date": "2019-07-12 13:46:46",
"type": "call-waiter",
"data": {
"table": "1",
"waiter": "99",
"options": [
"1x Copo Extra",
"2x Copo com Gelo",
"3x Talheres Extra",
"4x Prato Extra",
"Outras dúvidas",
"Limpar mesa"
]
}
}
],
"count": 2
}
Nesse endpoint serão retornados eventos que indicam alguma ação que aconteceu no abrahão. Hoje temos disponíveis dois eventos:
Chamar garçom
Evento indicando que o cliente precisa de algo e está chamando o garçom, por exemplo, o cliente solicitou a limpeza da mesa.
Pedir conta
Evento indicando que o cliente pediu a conta.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/events
Resposta
Objeto Evento
Nome | Descrição | Tipo | Formato |
---|---|---|---|
id | Identificador do evento | uuid | |
date | Data/hora do evento | datetime | YYYY-MM-DD HH24:MI:SS |
type | Tipo do evento | string | call-waiter ou the-check |
data | Dados do evento | objeto | Chamar Garcom ou Pedir Conta |
Objeto Chamar Garcom
Esse objeto será retornado quando o tipo de evento (type
) for call-waiter
.
Nome | Descrição | Tipo |
---|---|---|
table | Código da mesa | integer |
waiter | Código do garçom | string |
options | Lista de solicitações do cliente | string[] |
Objeto Pedir Conta
Esse objeto será retornado quando o tipo de evento (type
) for the-check
.
Nome | Descrição | Tipo |
---|---|---|
table | Código da mesa | integer |
card | Código da comanda | integer |
waiter | Código do garçom | string |
document | CPF/CNPJ do cliente | string |
split_with | Quantidade de pessoas para dividir a conta | integer |
Após obter os eventos e processar em seu sistema, você deve marcá-lo como recebido para que ele não apareça mais no JSON
e não gere duplicidade de informações. Veja mais no método a seguir.
Marcar um evento como recebido
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/event/<id do evento>/received" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->setEventAsReceived('<id do evento>');
SimpleResult result = oimenuClient.setEventAsReceived("<id do evento>");
var
simpleResult : TSimpleResult;
begin
simpleResult := setEventAsReceived('<token>', '<id do evento>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Para que um evento saia do JSON
de eventos pendentes, é necessário marcá-lo como recebido. Para isso, basta enviar uma requisição para o endpoint passando o id do evento
que deve ser marcado como recebido.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/event/<id do evento>/received
Corpo da requisição
Vazio
Ações no Modo Mesa
Fechar o consumo de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/close" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->closeTable(<codigo da mesa>);
SimpleResult result = oimenuClient.closeTable(<codigo da mesa>);
var
simpleResult : TSimpleResult;
begin
simpleResult := closeTable('<token>', <codigo da mesa>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sempre que uma mesa for fechada em seu sistema, você deve enviar uma request para o abrahao passando o código da mesa
que deve ser fechada. Com isso, nós conseguimos fechar a consumação em nosso lado e liberar a mesa novamente para uso.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/close
Corpo da requisição
Vazio
Transferir o consumo de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/transfer" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"new_table": <codigo da mesa de destino>
}'
<?php
$response = $oimenuClient->transferTable(<codigo da mesa>, <codigo da mesa de destino>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando houver uma transferência do consumo de uma mesa para outra, é necessário sincronizar essa informação com o abrahao, assim o cliente terá informações precisas sobre a conta. Para fazer a transferência basta enviar a mesa atual e a mesa de destino.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/transfer
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
new_table | Código da mesa de destino | integer | Sim |
Cancelar o consumo de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/cancel" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->cancelTable(<codigo da mesa>);
SimpleResult result = oimenuClient.cancelTable(<codigo da mesa>);
var
simpleResult : TSimpleResult;
begin
simpleResult := cancelTable('<token>', <codigo da mesa>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando a consumação de uma mesa for cancelada (se tratou de um teste, ou o cliente solicitou, por exemplo), você deve enviar uma request para o abrahao passando o código da mesa
que deve ser cancelada. Em nosso lado, nós cancelaremos todos os itens consumidos naquela mesa e liberaremos a mesa novamente para uso.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/cancel
Corpo da requisição
Vazio
Reabrir o consumo de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/reopen" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->reopenTable(<codigo da mesa>);
SimpleResult result = oimenuClient.reopenTable(<codigo da mesa>);
var
simpleResult : TSimpleResult;
begin
simpleResult := reopenTable('<token>', <codigo da mesa>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Em alguns casos é necessário reabrir o consumo de uma mesa, por exemplo quando o operador do caixa cancela ou finaliza por engano devido a erros de digitação.
Para isso, basta enviar o código da mesa e vamos reabrir o consumo que foi cancelado ou finalizado.
Se a mesa já estiver em consumo, nenhuma alteração será feita.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/reopen
Corpo da requisição
Vazio
Adicionar um item a uma mesa
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": "100",
"name": "Bala de coco X",
"quantity": 1,
"price": 2.5
}'
<?php
$response = $oimenuClient->createTableItem(<codigo da mesa>, [
'code' => '100',
'name' => 'Bala de coco X',
'quantity' => 1,
'price' => 2.5
]);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "bb7d91f6-d478-43cb-ad00-edf472c6bf2d",
"code": "100",
"name": "Bala de coco X",
"quantity": 1,
"price": 2.5,
"options": [],
"notes": [],
"extra_fields": null
}
}
Quando um item for inserido diretamente pelo seu sistema, essa informação deve ser sincronizada com o abrahao.
Para isso é necessário enviar o código da mesa
e os dados do item para ser inserido.
Veja exemplo ao lado.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item
Corpo da requisição
Objeto Item
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
code | Código do produto | text | Sim |
name | Nome do produto | text | Sim |
quantity | Quantidade vendida | integer | Sim |
price | Preço unitário | decimal(9,2) | Sim |
Atualizar um item de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"quantity": 2,
"price": 2.75
}'
<?php
$response = $oimenuClient->updateTableItem(<codigo da mesa>, <id do item no pedido>, [
'quantity' => 2,
'price' => 2.75
]);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "bb7d91f6-d478-43cb-ad00-edf472c6bf2d",
"code": "100",
"name": "Bala de coco X",
"quantity": 2,
"price": 2.75,
"options": [],
"notes": [],
"extra_fields": null
}
}
Quando um item for atualizado diretamente pelo seu sistema, essa informação deve ser sincronizada com o abrahao.
Para isso é necessário enviar o código da mesa
, o id do item no pedido
e os dados do item para ser atualizado.
Veja exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>
Corpo da requisição
Objeto Item
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
quantity | Quantidade vendida | integer | Não |
price | Preço unitário | decimal(9,2) | Não |
Transferir um item de uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>/transfer" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"new_table": <codigo da mesa de destino>,
"quantity": 1
}'
<?php
// faz a transferência total do item
$response = $oimenuClient->transferTableItem(<codigo da mesa>, <codigo da mesa de destino>, '<id do item no pedido>');
// faz a transferência parcial do item
$response = $oimenuClient->transferTableItem(<codigo da mesa>, <codigo da mesa de destino>, '<id do item no pedido>', <quantidade p/ transferir>);
Na transferência total, o JSON de retorno será:
{
"success": true,
"data": {
"new_item": null
}
}
Na transferência parcial, o JSON de retorno terá o novo item:
{
"success": true,
"data": {
"new_item": {
"id": "c24f5bfd-cf9e-4594-8bd2-da9529b918cf",
"code": "135",
"name": "Amendoin Japonês",
"quantity": "1",
"price": "2.00",
"options": [],
"notes": [],
"extra_fields": null
}
}
}
Quando um item for transferido em seu sistema, essa informação deve ser sincronizada com o abrahao.
Para isso é necessário passar o código da mesa
, o código da mesa de destino
e o id do item no pedido
que deve ser transferido.
Em nosso lado, nós vamos transferir apenas esse item.
Também é possível fazer uma transferência parcial do item, passando uma quantidade específica no campo quantity
.
Nesse caso, o retorno da requisição trará informações referentes ao novo item criado para a quantidade transferida.
Você deverá salvar o id desse item para que seja possível fazer sincronizações posteriores.
Veja exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>/transfer
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
new_table | Código da mesa de destino | integer | Sim |
quantity | Quantidade transferida | integer | Não |
Resposta
Nome | Descrição | Tipo |
---|---|---|
new_item | Objeto referente ao novo item, se a transferência foi parcial | Item |
Objeto Item de resposta
Nome | Descrição | Tipo |
---|---|---|
id | Identificador do item no pedido | uuid |
code | Código do produto | text |
name | Nome do produto | text |
quantity | Quantidade vendida | integer |
price | Preço unitário | decimal(9,2) |
options | Lista de configurações do item | Option[] |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Cancelar um item de uma mesa
Exemplo de Request:
# Caso queira cancelar uma quantidade especifica do item, basta passar a quantidade no envio em formato JSON
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>/cancel" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"quantity": 1
}'
<?php
// faz o cancelamento total
$response = $oimenuClient->cancelTableItem(<codigo da mesa>, '<id do item no pedido>');
// faz o cancelamento parcial
$response = $oimenuClient->cancelTableItem(<codigo da mesa>, '<id do item no pedido>', <quantidade p/ cancelar>);
// faz o cancelamento total
ItemResult result = oimenuClient.cancelTableItem(<codigo da mesa>, "<id do item no pedido>");
// faz o cancelamento parcial
ItemResult result = oimenuClient.cancelTableItem(<codigo da mesa>, "<id do item no pedido>", <quantidade p/ cancelar>);
var
itemResult : TItemResult;
begin
// faz o cancelamento total
itemResult := cancelTableItem('<token>', <codigo da mesa>, '<id do item no pedido>');
// faz o cancelamento parcial
itemResult := cancelTableItemQtd('<token>', <codigo da mesa>, '<id do item no pedido>', <quantidade p/ cancelar>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "7b937046-c0f3-4257-947b-8233efe082fc",
"code": "102",
"name": "Batata com Cheddar e Bacon",
"quantity": 1,
"price": "6.00",
"options": [],
"notes": [],
"extra_fields": null
}
}
Quando um item for cancelado em seu sistema (foi lançado enganado ou cliente desistiu do item, por exemplo), você deve enviar uma request para o abrahao passando o código da mesa
e o ID do item pedido
que deve ser cancelado. Em nosso lado, nós cancelaremos apenas aquele item.
Também é possível fazer o cancelamento parcial do item que deve ser cancelado.
Ex: Existem dois sucos lançados na mesa mas o cliente só consumiu um.
Você irá cancelar um item em seu sistema e enviar uma request passando o ID do produto
que deve ser cancelado e o parâmetro quantity
.
Veja exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>/cancel
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
quantity | Quantidade cancelada | integer | Não |
Resposta
Objeto Item
Nome | Descrição | Tipo |
---|---|---|
id | Identificador do item no pedido | uuid |
code | Código do produto | text |
name | Nome do produto | text |
quantity | Quantidade vendida | integer |
price | Preço unitário | decimal(9,2) |
options | Lista de configurações do item | Option[] |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Obter extrato do consumo de uma mesa
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/bill" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getTableBill(<codigo da mesa>);
SimpleResult result = oimenuClient.getTableBill(<codigo da mesa>);
var
simpleResult : TSimpleResult;
begin
simpleResult := getTableBill('<token>', <codigo da mesa>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"total": 5.00,
"items": [
{
"id": "a6e82e46-3534-47ae-94c6-96708bee3b51",
"code": "137",
"name": "Suco Melancia",
"quantity": "1",
"price": "5.00",
"options": [],
"notes": [],
"extra_fields": null
}
]
}
}
Quando você quiser obter o extrato da conta de uma mesa, você deve enviar uma request para o abrahão passando o código da mesa
.
Veja o exemplo ao lado.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/bill
Corpo da requisição
Vazio
Resposta
Nome | Descrição | Tipo |
---|---|---|
total | Valor total da conta | decimal(9,2) |
items | Lista de objetos Item | Item[] |
Solicitando o Fechamento de conta uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/requestbill" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getTableBill(<codigo da mesa>);
SimpleResult result = oimenuClient.getTableBill(<codigo da mesa>);
var
simpleResult : TSimpleResult;
begin
simpleResult := getTableBill('<token>', <codigo da mesa>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando você quiser solicitar o fechamento de conta de uma mesa, você deve enviar uma request para o abrahão passando o código da mesa
.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/requestbill
Corpo da requisição
Vazio
Listar as Mesas em Aberto
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/tables" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllTables();
EventResult result = oimenuClient.getAllTables();
var
eventResult : TEventResult;
begin
eventResult := getAllTables('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"code": 5504,
"name": "MESA 5504",
"service_percentage": "5.00",
"active": 1
},
{
"code": 5505,
"name": "Mesa 5505",
"service_percentage": "10.00",
"active": 1
},
{
"code": 5506,
"name": "Mesa 5506",
"service_percentage": "0.00",
"active": 1
}
],
"count": 3
}
Nesse endpoint serão retornadas as mesas com consumo em aberto no abrahão.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/tables
Resposta
Objeto Mesas
Campo | Descrição | Tipo |
---|---|---|
code | Codigo da Mesa | int |
name | Nome da Mesa | string |
service_percentage | % Comissão | decimal |
active | Estado da Mesa | int |
Ações no Modo Comanda
Fechar o consumo de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/close" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->closeCard(<codigo da comanda>);
SimpleResult result = oimenuClient.closeCard(<codigo da comanda>);
var
simpleResult : TSimpleResult;
begin
simpleResult := closeCard('<token>', <codigo da comanda>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sempre que uma comanda for fechada em seu sistema, você deve enviar uma request para o abrahão passando o código da mesa
que deve ser fechada. Com isso, nós conseguimos fechar a consumação em nosso lado e liberar a comanda novamente para uso.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/close
Corpo da requisição
Vazio
Transferir o consumo de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/transfer" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"new_card": <codigo da comanda de destino>
}'
<?php
$response = $oimenuClient->transferCard(<codigo da comanda>, <codigo da comanda de destino>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando houver uma transferência do consumo de uma comanda para outra, é necessário sincronizar essa informação com o abrahão, assim o cliente terá informações precisas sobre a conta. Para fazer a transferência basta enviar a comanda atual e a comanda de destino.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/transfer
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
new_card | Código da comanda de destino | integer | Sim |
Cancelar o consumo de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/cancel" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->cancelCard(<codigo da comanda>);
SimpleResult result = oimenuClient.cancelCard(<codigo da comanda>);
var
simpleResult : TSimpleResult;
begin
simpleResult := cancelCard('<token>', <codigo da comanda>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando a consumação de uma comanda for cancelada (se tratou de um teste, ou o cliente solicitou, por exemplo), você deve enviar uma request para o abrahão passando o código da mesa
que deve ser cancelada. Em nosso lado, nós cancelaremos todos os itens consumidos naquela comanda e liberaremos a comanda novamente para uso.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/cancel
Corpo da requisição
Vazio
Reabrir o consumo de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/reopen" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->reopenCard(<codigo da comanda>);
SimpleResult result = oimenuClient.reopenCard(<codigo da comanda>);
var
simpleResult : TSimpleResult;
begin
simpleResult := reopenCard('<token>', <codigo da comanda>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Em alguns casos é necessário reabrir o consumo de uma comanda, por exemplo quando o operador do caixa cancela ou finaliza por engano devido a erros de digitação.
Para isso, basta enviar o código da comanda e vamos reabrir o consumo que foi cancelado ou finalizado.
Se a comanda já estiver em consumo, nenhuma alteração será feita.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/reopen
Corpo da requisição
Vazio
Adicionar um item a uma comanda
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": "100",
"name": "Bala de coco X",
"quantity": 1,
"price": 2.5
}'
<?php
$response = $oimenuClient->createCardItem(<codigo da comanda>, [
'code' => '100',
'name' => 'Bala de coco X',
'quantity' => 1,
'price' => 2.5
]);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "bb7d91f6-d478-43cb-ad00-edf472c6bf2d",
"code": "100",
"name": "Bala de coco X",
"quantity": 1,
"price": 2.5,
"options": [],
"notes": [],
"extra_fields": null
}
}
Quando um item for inserido diretamente pelo seu sistema, essa informação deve ser sincronizada com o abrahão.
Para isso é necessário passar o código da comanda
e os dados do item para ser inserido.
Veja exemplo ao lado.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item
Corpo da requisição
Objeto Item
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
code | Código do produto | text | Sim |
name | Nome do produto | text | Sim |
quantity | Quantidade vendida | integer | Sim |
price | Preço unitário | decimal(9,2) | Sim |
Atualizar um item de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item/<id do item no pedido>" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"quantity": 2,
"price": 2.75
}'
<?php
$response = $oimenuClient->updateCardItem(<codigo da comanda>, <id do item no pedido>, [
'quantity' => 2,
'price' => 2.75
]);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "bb7d91f6-d478-43cb-ad00-edf472c6bf2d",
"code": "100",
"name": "Bala de coco X",
"quantity": 2,
"price": 2.75,
"options": [],
"notes": [],
"extra_fields": null
}
}
Quando um item for atualizado diretamente pelo seu sistema, essa informação deve ser sincronizada com o abrahão.
Para isso é necessário enviar o código da comanda
, o id do item no pedido
e os dados do item para ser atualizado.
Veja exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item/<id do item no pedido>
Corpo da requisição
Objeto Item
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
quantity | Quantidade vendida | integer | Não |
price | Preço unitário | decimal(9,2) | Não |
Transferir um item de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item/<id do item no pedido>/transfer" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"new_card": <codigo da comanda de destino>,
"quantity": 1
}'
<?php
// faz a transferência total do item
$response = $oimenuClient->transferCardItem(<codigo da comanda>, <codigo da comanda de destino>, '<id do item no pedido>');
// faz a transferência parcial do item
$response = $oimenuClient->transferCardItem(<codigo da comanda>, <codigo da comanda de destino>, '<id do item no pedido>', <quantidade p/ transferir>);
Na transferência total, o JSON de retorno será:
{
"success": true,
"data": {
"new_item": null
}
}
Na transferência parcial, o JSON de retorno terá o novo item:
{
"success": true,
"data": {
"new_item": {
"id": "c24f5bfd-cf9e-4594-8bd2-da9529b918cf",
"code": "135",
"name": "Amendoin Japonês",
"quantity": "1",
"price": "2.00",
"options": [],
"notes": [],
"extra_fields": null
}
}
}
Quando um item for transferido em seu sistema, essa informação deve ser sincronizada com o abrahão.
Para isso é necessário passar o código da comanda
, o código da comanda de destino
e o id do item no pedido
que deve ser transferido.
Em nosso lado, nós vamos transferir apenas esse item.
Também é possível fazer uma transferência parcial do item, passando uma quantidade específica no campo quantity
.
Nesse caso, o retorno da requisição trará informações referentes ao novo item criado para a quantidade transferida.
Você deverá salvar o id desse item para que seja possível fazer sincronizações posteriores.
Veja exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>/item/<id do item no pedido>/transfer
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
new_card | Código da comanda de destino | integer | Sim |
quantity | Quantidade transferida | integer | Não |
Resposta
Nome | Descrição | Tipo |
---|---|---|
new_item | Objeto referente ao novo item, se a transferência foi parcial | Item |
Objeto Item de resposta
Nome | Descrição | Tipo |
---|---|---|
id | Identificador do item no pedido | uuid |
code | Código do produto | text |
name | Nome do produto | text |
quantity | Quantidade vendida | integer |
price | Preço unitário | decimal(9,2) |
options | Lista de configurações do item | Option[] |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Cancelar um item de uma comanda
Exemplo de Request:
# Caso queira cancelar uma quantidade especifica do item, basta passar a quantidade no envio em formato JSON
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/item/<id do item no pedido>/cancel" \
-H "Authorization: Bearer <token>"
-H "Content-Type: application/json" \
-d '{
"quantity": 1
}'
<?php
// faz o cancelamento total
$response = $oimenuClient->cancelCardItem(<codigo da comanda>, '<id do item no pedido>');
// faz o cancelamento parcial
$response = $oimenuClient->cancelCardItem(<codigo da comanda>, '<id do item no pedido>', <quantidade p/ cancelar>);
// faz o cancelamento total
ItemResult result = oimenuClient.cancelCardItem(<codigo da comanda>, "<id do item no pedido>");
// faz o cancelamento parcial
ItemResult result = oimenuClient.cancelCardItem(<codigo da comanda>, "<id do item no pedido>", <quantidade p/ cancelar>);
var
itemResult : TItemResult;
begin
// faz o cancelamento total
itemResult := cancelCardItem('<token>', <codigo da comanda>, '<id do item no pedido>');
// faz o cancelamento parcial
itemResult := cancelCardItemQtd('<token>', <codigo da comanda>, '<id do item no pedido>', <quantidade p/ cancelar>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"id": "7b937046-c0f3-4257-947b-8233efe082fc",
"code": "102",
"name": "Batata com Cheddar e Bacon",
"quantity": 1,
"price": "6.00",
"options": [],
"notes": [],
"extra_fields": null
}
}
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda/item/<id do item no pedido>/cancel
Quando um item for cancelado em seu sistema (foi lançado enganado ou cliente desistiu do item, por exemplo), você deve enviar uma request para o abrahão passando o código da mesa
e o ID do item pedido
que deve ser cancelado. Em nosso lado, nós cancelaremos apenas aquele item.
Também é possível fazer o cancelamento parcial do item que deve ser cancelado.
Ex: Existem dois sucos lançados na comanda mas o cliente só consumiu um.
Você irá cancelar um item em seu sistema e enviar uma request passando o ID do produto
que deve ser cancelado e o parâmetro quantity
.
Veja exemplo ao lado.
Corpo da requisição
Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|
quantity | Quantidade cancelada | integer | Não |
Resposta
Objeto Item
Nome | Descrição | Tipo |
---|---|---|
id | Identificador do item no pedido | uuid |
code | Código do produto | text |
name | Nome do produto | text |
quantity | Quantidade vendida | integer |
price | Preço unitário | decimal(9,2) |
options | Lista de configurações do item | Option[] |
notes | Lista de observações | text[] |
extra_fields | JSON com dados extras do produto | json |
Obter extrato do consumo de uma comanda
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/bill" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getCardBill(<codigo da comanda>);
SimpleResult result = oimenuClient.getCardBill(<codigo da comanda>);
var
simpleResult : TSimpleResult;
begin
simpleResult := getCardBill('<token>', <codigo da comanda>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"total": 5.00,
"items": [
{
"id": "a6e82e46-3534-47ae-94c6-96708bee3b51",
"code": "137",
"name": "Suco Melancia",
"quantity": "1",
"price": "5.00",
"options": [],
"notes": [],
"extra_fields": null
}
]
}
}
Quando você quiser obter o extrato da conta de uma comanda, você deve enviar uma request para o abrahão passando o código da comanda
.
Veja o exemplo ao lado.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/bill
Corpo da requisição
Vazio
Resposta
Nome | Descrição | Tipo |
---|---|---|
total | Valor total da conta | decimal(9,2) |
items | Lista de objetos Item | Item[] |
Solicitando o Fechamento de conta de uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/requestbill" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getCardBill(<codigo da comanda>);
SimpleResult result = oimenuClient.getCardBill(<codigo da comanda>);
var
simpleResult : TSimpleResult;
begin
simpleResult := getCardBill('<token>', <codigo da comanda>);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Quando você quiser solicitar o fechamento de conta de uma comanda, você deve enviar uma request para o abrahão passando o código da comanda
.
Veja o exemplo ao lado.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>/requestbill
Corpo da requisição
Vazio
Listar as Comandas em Aberto
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/cards" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllCards();
EventResult result = oimenuClient.getAllCards();
var
eventResult : TEventResult;
begin
eventResult := getAllCards('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"code": 1,
"qr_code": "8e1f81d7-46d7-4e33-9f93-72b7272f1d92",
"service_percentage": "0.00",
"active": 1,
"name": "Qualquer coisa aqui"
},
{
"code": 2,
"qr_code": "ce7279d6-9e77-499a-bad5-f531ad506b68",
"service_percentage": "5.00",
"active": 1,
"name": null
},
{
"code": 4,
"qr_code": "55c3123e-82bb-4ddf-b94d-26bec32a0206",
"service_percentage": "10.00",
"active": 1,
"name": null
}
],
"count": 3
}
Nesse endpoint serão retornadas as comandas com consumo em aberto no abrahão.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/cards
Resposta
Objeto Comandas
Campo | Descrição | Tipo |
---|---|---|
code | Codigo da Comanda | int |
qr_code | Conteudo QrCode | string |
service_percentage | % Comissão | decimal |
active | Estado da Comanda | int |
name | Qualquer Descrição | string |
Separator 2
Mesas
Introdução sobre Mesas
No abrahão, disponibilizamos 2 formas de organização de pedidos feitos: Modo Mesa e Modo Comanda. Esse tipo de funcionamento é configurado ao cadastrar o cardápio do cliente.
No modo mesa, o cliente chega no estabelecimento e ao fazer o pedido, enviamos o número da mesa em que ele está para o seu sistema via integração.
As mesas cadastradas no abrahão possuem:
Nome | Descrição |
---|---|
Código | Código da mesa. Normalmente seguem uma ordem sequencial. |
Apelido | Uma forma de facilitar a identificação da mesa. Ex: Mesa externa |
Serviço | A taxa cobrada pela casa. O valor padrão é 0 |
Ativa | É o status da mesa. Ela vem por padrão Ativada, mas pode ser desativada manualmente |
Cadastrar uma mesa
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/table" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": 4,
"name": "Mesa 4",
"service_percentage": 10.00
}'
<?php
$response = $oimenuClient->createTable([
'code' => 4,
'name' => 'Mesa 4',
'service_percentage' => 10.00
]);
Table table = new Table();
table.setCode(4);
table.setName("Mesa 4");
table.setServicePercentage(10.00);
TableResult result = oimenuClient.createTable(table);
var
tableResult : TTableResult;
table : TTable;
begin
table := TTable.Create;
table.code := 4;
table.name := 'Mesa 4';
table.servicePercentage := 10.00;
tableResult := createTable('<token>', table);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": 4,
"name": "Mesa 4",
"service_percentage": "10.00"
}
}
Sugerimos que use este método sempre que uma mesa for cadastrada em seu sistema. Com isso, a mesa já ficará disponibilizada no tablet para o cliente final, sem precisar ser adicionado manualmente também no abrahão.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/table
Corpo da requisição
Objeto Mesa
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código | integer | Sim | ||
name | Identificação | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Cadastrar mesas em lote
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/tables" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '[
{
"code": 5,
"name": "Mesa 5",
"service_percentage": 10.00
},
{
"code": 6,
"name": "Mesa 6 - Central",
"service_percentage": 10.00
},
{
"code": 7,
"name": "Mesa 7 - Especial",
"service_percentage": 10.00
}
]'
<?php
$response = $oimenuClient->batchTables([
[
'code' => 5,
'name' => 'Mesa 5',
'service_percentage' => 10.00
],
[
'code' => 6,
'name' => 'Mesa 6 - Central',
'service_percentage' => 10.00
],
[
'code' => 7,
'name' => 'Mesa 7 - Especial',
'service_percentage' => 10.00
]
]);
Table obj1 = new Table();
obj1.setCode(5);
obj1.setName("Mesa 5");
obj1.setServicePercentage(10.00);
Table obj2 = new Table();
obj2.setCode(6);
obj2.setName("Mesa 6 - Central");
obj2.setServicePercentage(10.00);
Table obj3 = new Table();
obj3.setCode(7);
obj3.setName("Mesa 7 - Especial");
obj3.setServicePercentage(10.00);
List<Table> list = new ArrayList<Table>();
list.add(obj1);
list.add(obj2);
list.add(obj3);
SimpleResult result = oimenuClient.batchTables(list);
var
simpleResult: TSimpleResult;
listTable: TListTable;
table1, table2, table3: TTable;
begin
table1 := TTable.Create;
table1.code := 5;
table1.name := 'Mesa 5';
table1.servicePercentage := 10.00;
table2 := TTable.Create;
table2.code := 6;
table2.name := 'Mesa 6 - Central';
table2.servicePercentage := 10.00;
table3 := TTable.Create;
table3.code := 7;
table3.name := 'Mesa 7 - Especial';
table3.servicePercentage := 10.00;
listTable := TListTable.Create;
listTable.Add(table1);
listTable.Add(table2);
listTable.Add(table3);
simpleResult := batchTables('<token>', listTable);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Normalmente este método é utlizado sempre que uma integração é iniciada. Todas as mesas que o estabelecimento possui estão cadastradas em seu sistema e basta enviá-las através deste método para agilizar o processo de integração de ambos os sistemas.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/tables
Corpo da requisição
Lista de objetos Mesa
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código | integer | Sim | ||
name | Identificação | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Atualizar uma mesa
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/table/7" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Mesa 7 - Área externa",
"service_percentage": 15.00
}'
<?php
$response = $oimenuClient->updateTable(7, [
'name' => 'Mesa 7 - Área externa'
'service_percentage' => 15.00
]);
Table table = new Table();
table.setCode(7);
table.setName("Mesa 7 - Área externa");
table.setServicePercentage(10.00);
TableResult result = oimenuClient.updateTable(table);
var
tableResult : TTableResult;
table : TTable;
begin
table := TTable.Create;
table.code := 7;
table.name := 'Mesa 7 - Area externa';
table.servicePercentage := 10.00;
tableResult := updateTable('<token>', table);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": 7,
"name": "Mesa 7 - Área externa",
"service_percentage": 15.00
}
}
Este método é utilizado para atualizar informações de uma mesa no abrahão, através da integração.
Sempre que uma mesa sofrer alterações em seu sistema, como mudança de name
(apelido) ou taxa de serviço, por exemplo, você pode utilizar este método para passar ao abrahão essas informações e deixar as mesas de ambos os sistemas atualizadas.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>
Corpo da requisição
Objeto Mesa
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
name | Identificação | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Excluir uma mesa
Exemplo de Request:
curl -X DELETE "https://developers.abrahao.com.br/api/v1/table/7" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->deleteTable(7);
SimpleResult result = oimenuClient.deleteTable(7);
var
simpleResult : TSimpleResult;
begin
simpleResult := deleteTable('<token>', 7);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sempre que uma mesa for removida de seu sistema, sugerimos que utilize este método para remover também do abrahão. Isso agiliza o processo e deixa ambos os sistemas sempre atualizados.
HTTP Request
DELETE https://developers.abrahao.com.br/api/v1/table/<codigo da mesa>
Corpo da requisição
Vazio
Comandas
Introdução sobre Comandas
No abrahao, disponibilizamos 2 formas de organização de pedidos feitos: Modo Mesa e Modo Comanda. Esse tipo de funcionamento é configurado ao cadastrar o cardápio do cliente.
No modo comanda, o cliente chega no estabelecimento e recebe uma comanda que possui um QRCode
ou tecnologia NFC
. Ao realizar um pedido, o tablet lê esse QRcode
/NFC
e enviamos o número da mesa e comanda para o seu sistema via integração.
As comandas cadastradas no abrahão possuem:
Nome | Descrição |
---|---|
Código | Código da comanda. Normalmente seguem uma ordem sequencial. |
Nome | Uma forma de facilitar a identificação da comanda. Ex: Comanda 1 |
Serviço | A taxa cobrada pela casa. O valor padrão é 0 |
Ativa | É o status da comanda. Ela vem por padrão Ativada, mas pode ser desativada manualmente |
Cadastrar uma comanda
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/card" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": 4,
"name": "Comanda 4",
"qr_code": "qr-code-4",
"service_percentage": 10.00
}'
<?php
$response = $oimenuClient->createCard([
'code' => 4,
'name' => 'Comanda 4',
'qr_code' => 'qr-code-4',
'service_percentage' => 10.00
]);
Card card = new Card();
card.setCode(4);
card.setName("Comanda 4");
card.setQrCode("qr-code-4");
card.setServicePercentage(10.00);
CardResult result = oimenuClient.createCard(card);
var
cardResult : TCardResult;
card : TCard;
begin
card := TCard.Create;
card.code := 4;
card.name := 'Comanda 4';
card.qrCode := 'qr-code-4';
card.servicePercentage := 10.00;
cardResult := createCard('<token>', card);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": 4,
"name": "Comanda 4",
"qr_code": "qr-code-4",
"service_percentage": "10.00"
}
}
Sugerimos que use este método sempre que uma comanda for cadastrada em seu sistema. Com isso, a comanda ficará disponível para o cliente final usar, sem precisar ser adicionado manualmente também no abrahão.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/card
Corpo da requisição
Objeto Comanda
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código da comanda | integer | Sim | ||
name | Apelido da comanda | text | Não | ||
qr_code | Código QR ou barras que identifica a comanda | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | O status da comanda | integer | Não | 1 |
0 - Inativo1 - Ativo |
Cadastrar comandas em lote
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/cards" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '[
{
"code": 5,
"name": "Comanda 5",
"qr_code": "qr-code-5",
"service_percentage": 10.00
},
{
"code": 6,
"name": "Comanda 6",
"qr_code": "qr-code-6",
"service_percentage": 10.00
},
{
"code": 7,
"name": "Comanda 7",
"qr_code": "qr-code-7",
"service_percentage": 10.00
}
]'
<?php
$response = $oimenuClient->batchCards([
[
'code' => 5,
'name' => 'Comanda 5',
'qr_code' => 'qr-code-5',
'service_percentage' => 10.00
],
[
'code' => 6,
'name' => 'Comanda 6',
'qr_code' => 'qr-code-6',
'service_percentage' => 10.00
],
[
'code' => 7,
'name' => 'Comanda 7',
'qr_code' => 'qr-code-7',
'service_percentage' => 10.00
]
]);
Card obj1 = new Card();
obj1.setCode(5);
obj1.setName("Comanda 5");
obj1.setQrCode("qr-code-5");
obj1.setServicePercentage(10.00);
Card obj2 = new Card();
obj2.setCode(6);
obj1.setName("Comanda 6");
obj2.setQrCode("qr-code-6");
obj2.setServicePercentage(10.00);
Card obj3 = new Card();
obj3.setCode(7);
obj1.setName("Comanda 7");
obj3.setQrCode("qr-code-7");
obj3.setServicePercentage(10.00);
List<Card> list = new ArrayList<Card>();
list.add(obj1);
list.add(obj2);
list.add(obj3);
SimpleResult result = oimenuClient.batchCards(list);
var
simpleResult: TSimpleResult;
listCard: TListCard;
card1, card2, card3: TCard;
begin
card1 := TCard.Create;
card1.code := 5;
card1.name := 'Comanda 5';
card1.qrCode := 'qr-code-5';
card1.servicePercentage := 10.00;
card2 := TCard.Create;
card2.code := 6;
card1.name := 'Comanda 6';
card2.qrCode := 'qr-code-6';
card2.servicePercentage := 10.00;
card3 := TCard.Create;
card3.code := 7;
card1.name := 'Comanda 7';
card3.qrCode := 'qr-code-7';
card3.servicePercentage := 10.00;
listCard := TListCard.Create;
listCard.Add(card1);
listCard.Add(card2);
listCard.Add(card3);
simpleResult := batchCards('<token>', listCard);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Normalmente este método é utlizado sempre que uma integração é iniciada. Todas as comandas que o estabelecimento possui estão cadastradas em seu sistema e basta enviá-los através deste método para agilizar o processo de integração de ambos os sistemas.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/cards
Corpo da requisição
Lista de objetos Comanda
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código da comanda | integer | Sim | ||
name | Apelido da comanda | text | Não | ||
qr_code | Código QR ou barras que identifica a comanda | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | O status da comanda | integer | Não | 1 |
0 - Inativo1 - Ativo |
Atualizar uma comanda
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/card/7" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "nome-atualizado",
"qr_code": "qr-code-7-atualizado",
"service_percentage": 15.00
}'
<?php
$response = $oimenuClient->updateCard(7, [
'name' => 'nome-atualizado',
'qr_code' => 'qr-code-7-atualizado',
'service_percentage' => 15.00
]);
Card card = new Card();
card.setCode(7);
card.setName("nome-atualizado");
card.setQrCode("qr-code-7-atualizado");
card.setServicePercentage(15.00);
CardResult result = oimenuClient.updateCard(card);
var
cardResult : TCardResult;
card : TCard;
begin
card := TCard.Create;
card.code := 7;
card.name := 'nome-atualizado';
card.qrCode := 'qr-code-7-atualizado';
card.servicePercentage := 15.00;
cardResult := updateCard('<token>', card);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": 7,
"name": "nome-atualizado",
"qr_code": "qr-code-7-atualizado",
"service_percentage": "15.00"
}
}
Este método é utilizado para atualizar informações de uma comanda no abrahão, através da integração. Sempre que uma comanda sofrer alterações em seu sistema, como mudança na taxa de serviço, por exemplo, você pode utilizar este método para passar ao abrahão essas informações e deixar as comandas de ambos os sistemas atualizadas.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>
Corpo da requisição
Objeto Comanda
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
name | Apelido da comanda | text | Não | ||
qr_code | Código QR ou barras que identifica a comanda | text | Não | ||
service_percentage | A taxa cobrada pela casa | decimal(4,2) | Não | 0.00 |
|
active | O status da comanda | integer | Não | 1 |
0 - Inativo1 - Ativo |
Excluir uma comanda
Exemplo de Request:
curl -X DELETE "https://developers.abrahao.com.br/api/v1/card/7" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->deleteCard(7);
SimpleResult result = oimenuClient.deleteCard(7);
var
simpleResult : TSimpleResult;
begin
simpleResult := deleteCard('<token>', 7);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sempre que uma comanda for removida de seu sistema, sugerimos que utilize este método para remover também do abrahão. Isso agiliza o processo e deixa ambos os sistemas sempre atualizados.
HTTP Request
DELETE https://developers.abrahao.com.br/api/v1/card/<codigo da comanda>
Corpo da requisição
Vazio
Colaboradores
Introdução sobre Colaboradores
O abrahão também possui um cadastro de colaboradores com alguns níveis de acesso.
Tipo | Descrição |
---|---|
Admin | Tem acesso total ao sistema |
Operador | Tem acesso a quase tudo, menos aos relatórios |
Garçom | Não tem acesso ao sistema. Somente a troca de mesas nos tablets |
Quando um tablet sai de uma mesa para outra, o Colaborador do tipo Garçom
precisa digitar uma senha previamente cadastrada para alterar o número da mesa.
Esse é um recurso de segurança, que impede que um cliente solicite algo para outra mesa.
Os colaboradores cadastrados no abrahão possuem:
Nome | Descrição |
---|---|
Código (ERP) | É o código desse usuário em seu sistema. Serve para vicular o mesmo usuário em ambos os sistemas. |
Nome | Nome de identificação do colaborador |
Email para acesso ao sistema. Apenas os tipos Admin e Operadores possuem email |
|
Nível de acesso | Como explicado acima, os níveis são Admin , Operador e Garçom |
Senha | Senha de acesso para quando o colaborador acessar o painel ou alterar mesas no tablet |
Ativo | É a situação do colaborador. Ele vem por padrão Ativo, mas pode ser inativado manualmente |
Cadastrar um colaborador
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/user" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"code": "3",
"name": "Beltrano",
"active": 1
}'
<?php
$response = $oimenuClient->createUser([
'code' => '3',
'name' => 'Beltrano',
'active' => 1
]);
User user = new User();
user.setCode(3);
user.setName("Beltrano");
user.setActive(1);
UserResult result = oimenuClient.createUser(user);
var
userResult : TUserResult;
user : TUser;
begin
user := TUser.Create;
user.code := 3;
user.name := 'Beltrano';
user.active := true;
userResult := createUser('<token>', user);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": "3",
"name": "Beltrano",
"active": 1
}
}
Sugerimos que use este método sempre que um colaborador for cadastrado em seu sistema. Com isso, ele já ficará disponível para ser utilizado no abrahão, sem precisar ser adicionado manualmente em nosso sistema.
Ao adicionar um colaborador, você já deve definir o tipo de acesso que ele terá.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/user
Corpo da requisição
Objeto Colaborador
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código | text | Sim | ||
name | Nome | text | Sim | ||
E-mail de acesso | text | Não | |||
password | Senha | text | Não | ||
role | Nível de acesso | text | Não | admin |
admin - Administradoroperator - Operadorwaiter - Garçom |
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Cadastrar colaboradores em lote
Exemplo de Request:
curl -X POST "https://developers.abrahao.com.br/api/v1/users" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '[
{
"code": "1",
"name": "Fulano",
"active": 1
},
{
"code": "2",
"name": "Sicrano",
"active": 0
},
{
"code": "3",
"name": "Beltrano",
"active": 1
}
]'
<?php
$response = $oimenuClient->batchUsers([
[
'code' => '1',
'name' => 'Fulano',
'active' => 1
],
[
'code' => '2',
'name' => 'Sicrano',
'active' => 0
],
[
'code' => '3',
'name' => 'Beltrano',
'active' => 1
]
]);
User obj1 = new User();
obj1.setCode(1);
obj1.setName("Fulano");
obj1.setActive(1);
User obj2 = new User();
obj2.setCode(2);
obj2.setName("Sicrano");
obj2.setActive(0);
User obj3 = new User();
obj3.setCode(3);
obj3.setName("Beltrano");
obj3.setActive(1);
List<User> list = new ArrayList<User>();
list.add(obj1);
list.add(obj2);
list.add(obj3);
SimpleResult result = oimenuClient.batchUsers(list);
var
simpleResult: TSimpleResult;
listUser: TListUser;
user1, user2, user3: TUser;
begin
user1 := TUser.Create;
user1.code := 1;
user1.name := 'Fulano';
user1.active := true;
user2 := TUser.Create;
user2.code := 2;
user2.name := 'Sicrano';
user2.active := false;
user3 := TUser.Create;
user3.code := 3;
user3.name := 'Beltrano';
user3.active := true;
listUser := TListUser.Create;
listUser.Add(user1);
listUser.Add(user2);
listUser.Add(user3);
simpleResult := batchUsers('<token>', listUser);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Normalmente este método é utlizado sempre que uma integração é iniciada. Todos os colaboradores que o estabelecimento possui estão cadastradas em seu sistema e basta enviá-los através deste método para agilizar o processo de integração de ambos os sistemas.
HTTP Request
POST https://developers.abrahao.com.br/api/v1/users
Corpo da requisição
Lista de objetos Colaborador
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
code | Código | text | Sim | ||
name | Nome | text | Sim | ||
E-mail de acesso | text | Não | |||
password | Senha | text | Não | ||
role | Nível de acesso | text | Não | admin |
admin - Administradoroperator - Operadorwaiter - Garçom |
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Atualizar um colaborador
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/user/3" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Beltrano Da Silva",
"active": 0
}'
<?php
$response = $oimenuClient->updateUser('3', [
'name' => 'Beltrano da Silva',
'active' => 0
]);
User user = new User();
user.setCode(3);
user.setName("Beltrano da Silva");
user.setActive(0);
UserResult result = oimenuClient.updateUser(user);
var
userResult : TUserResult;
user : TUser;
begin
user := TUser.Create;
user.code := 3;
user.name := 'Beltrano da Silva';
user.active := false;
userResult := updateUser('<token>', user);
O comando acima retornará um JSON como este:
{
"success": true,
"data": {
"code": "3",
"name": "Beltrano Da Silva",
"active": 0
}
}
Este método é utilizado para atualizar informações de um colaborador no abrahão, através da integração.
Sempre um colaborador sofrer alterações em seu sistema, como mudança de name
, por exemplo, você pode utilizar este método para passar ao abrahão essas informações e deixar os colaboradores de ambos os sistemas atualizados.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/user/<codigo do colaborador>
Corpo da requisição
Objeto Colaborador
Nome | Descrição | Tipo | Obrigatório | Valor Padrão | Valores |
---|---|---|---|---|---|
name | Nome | text | Não | ||
E-mail de acesso | text | Não | |||
password | Senha | text | Não | ||
role | Nível de acesso | text | Não | admin |
admin - Administradoroperator - Operadorwaiter - Garçom |
active | Situação | integer | Não | 1 |
0 - Inativo1 - Ativo |
Excluir um colaborador
Exemplo de Request:
curl -X DELETE "https://developers.abrahao.com.br/api/v1/user/3" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->deleteUser('3');
SimpleResult result = oimenuClient.deleteUser(7);
var
simpleResult : TSimpleResult;
begin
simpleResult := deleteUser('<token>', 7);
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Sempre que um colaborador for removido de seu sistema, sugerimos que utilize este método para remover também do abrahão. Isso agiliza o processo e deixa ambos os sistemas sempre atualizados.
HTTP Request
DELETE https://developers.abrahao.com.br/api/v1/user/<codigo do colaborador>
Corpo da requisição
Vazio
Listar os Colaboradores
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/users" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllUsers();
EventResult result = oimenuClient.getAllUsers();
var
eventResult : TEventResult;
begin
eventResult := getAllUsers('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"code": "3",
"name": "Beltrano da Silva",
"email": null,
"role": "waiter",
"active": 1
},
{
"code": "16187",
"name": "Caixa",
"email": null,
"role": "admin",
"active": 1
},
{
"code": "7958",
"name": "caixa",
"email": null,
"role": "admin",
"active": 1
}
],
"count": 3
}
Nesse endpoint serão retornados os Colaboradores Ativos no abrahão.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/users
Resposta
Objeto Colaboradores
Campo | Descrição | Tipo |
---|---|---|
code | Codigo da Comanda | int |
name | Conteudo QrCode | string |
string | ||
active | Estado do Colaborador | int |
role | Tipo Permissão | string |
Feedbacks
Listar os Feedback pendentes
Exemplo de Request:
curl -X GET "https://developers.abrahao.com.br/api/v1/feedbacks" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->getAllFeedbacks();
FeedbackResult result = oimenuClient.getAllFeedbacks();
var
feedbackResult : TFeedbackResult;
begin
feedbackResult := getAllFeedbacks('<token>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": [
{
"id": "1121f831-42da-4044-a0a5-be5de8e0ccfc",
"date": "2019-10-11 13:34:08",
"name": "Fafa",
"phone": "(48)99542-6565",
"email": "[email protected]",
"waiter": "Pedro",
"table": "1",
"note": "Gostei muito da musica!!",
"feedback": [
{
"id": 90,
"name": "Música",
"rate": 5
},
{
"id": 86,
"name": "Comida",
"rate": 5
}
]
},
{
"id": "45b3a9bd-0a91-4ec9-9551-5b4717b5b305",
"date": "2019-12-03 17:30:20",
"name": "Lala",
"phone": "(48)98524-9792",
"email": "[email protected]",
"waiter": "Joao",
"table": "2",
"note": "Excelente comida",
"feedback": [
{
"id": 86,
"name": "Comida",
"rate": 1
}
]
}
],
"count": 2
}
Nesse endpoint serão retornados Feedbacks que indicam Avaliações que aconteceram no abrahão. Hoje temos disponíveis variadas avaliações para os Feedbacks. Ex:
Como avalia nossa comida em até 5 e/ou 10 Estrelas.?
No Feedback a avaliação indica qual nota o cliente colocou para sua Comida.
Como avalia nossa Música em até 5 e/ou 10 Estrelas
No Feedback a avaliação indica qual nota o cliente colocou para sua Música ambiente.
HTTP Request
GET https://developers.abrahao.com.br/api/v1/feedbacks
Resposta
Objeto (sucess) Informa Verdadeiro/Falsa a montagem do JSON
Nome | Descrição | Tipo | Formato |
---|---|---|---|
sucess | true/false | Bolean | String |
Objeto (data) Dados do Feedback
Nome | Descrição | Tipo | Formato |
---|---|---|---|
id | Identificador do feedback | uuid | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
date | Data/hora do feedback | datetime | YYYY-MM-DD HH24:MI:SS |
name | Nome do Cliente | string | |
phone | Telefone do Cliente | string | |
Email do Cliente | string | ||
waiter | Codigo do Garçon | integer | |
table | Codigo da Mesa | integer | |
note | Nota sobre o Feedback | string |
Objeto (feedback) Dados da Avaliação
Esse objeto será retornado quando a Avaliação no Feedback for descrita.
Nome | Descrição | Tipo |
---|---|---|
id | Codigo Interno da Avaliação | integer |
name | Nome da Avaliação | string |
rate | Nota da Avaliação | integer |
Após obter os Feedbacks e processar em seu sistema, você deve marcá-lo como recebido para que ele não apareça mais no JSON
e não gere duplicidade de informações. Veja mais no método a seguir.
Marcar um Feedback como recebido
Exemplo de Request:
curl -X PUT "https://developers.abrahao.com.br/api/v1/feedback/<id do feedback>/received" \
-H "Authorization: Bearer <token>"
<?php
$response = $oimenuClient->setfeedbackAsReceived('<id do feedback>');
SimpleResult result = oimenuClient.setfeedbackAsReceived("<id do feedback>");
var
simpleResult : TSimpleResult;
begin
simpleResult := setfeedbackAsReceived('<token>', '<id do feedback>');
O comando acima retornará um JSON como este:
{
"success": true,
"data": []
}
Para que um feedback saia do JSON
de feedbacks pendentes, é necessário marcá-lo como recebido. Para isso, basta enviar uma requisição para o endpoint passando o id do feedback
que deve ser marcado como recebido.
HTTP Request
PUT https://developers.abrahao.com.br/api/v1/feedback/<id do feedback>/received
Corpo da requisição
Vazio