Essa API tem como objetivo habilitar a integração da BEMP com Totens de autoatendimento
- Primeiros passos
- Visão geral da API
-
Lista de operações (end-points)
- 1️⃣ Clientes - Consultar cliente
- 2️⃣ Clientes - Criar novo cliente
- 3️⃣ Clientes - Listar agendamentos de um cliente
- 4️⃣ Clientes - Listar comandas do cliente
- 5️⃣ Profissionais - Listar profissionais
- 6️⃣ Serviços - Listar serviços
- 7️⃣ Agendas - Listar horários disponíveis
- 8️⃣ Agendas - Criar agendamento
- 9️⃣ Agendas - Cancelar agendamento
- 1️⃣0️⃣ Agenda - Alterar status (check-in)
-
1️⃣1️⃣ Comandas - Pagar comanda (OS)
Primeiros passos
Para iniciar o uso desta API será necessário ter contratado módulo de integração de Totem.
Caso você já possua o módulo de integração de Totem, basta solicitar o seu TOKEN junto ao suporte para começar a utilizar a integração.
Se você não possui o módulo de integração do Totem contratado, deverá solicitar a contratação do mesmo através do setor de suporte diretamente dentro da plataforma (menu AJUDA).
Visão geral da API
- Base URL:
https://webhooks.bemp.app/api/totem - Formato:
application/json - Autenticação:
Authorization: Bearer TOKEN - Collection do POSTMAN: https://documenter.getpostman.com/view/10274665/2sBXqNneU7
Lista de operações (end-points)
1️⃣ Clientes - Consultar cliente
- GET
/customers - Query Params
- phone: String [obrigatório]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/customers?phone=+5551999999999" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
}
}2️⃣ Clientes - Criar novo cliente
- POST
/customers - Body Params
- name: String [obrigatório]
- phone: String [obrigatório]
- email: String [opicional]
Requisição - Exemplo cURL
curl --request POST \ --url "https://webhooks.bemp.app/api/totem/customers" \ --header "Authorization: Bearer TOKEN" \ --header "Content-Type: application/json" \ --data '{ "name": "Fulano da Silva", "phone": "+55 51 99999-9999", "email": "fulano@email.com" }
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
}
}3️⃣ Clientes - Listar agendamentos de um cliente
- GET
/customers/:customer_id/schedules - Path Params
- customer_id: Integer [obrigatório]
- Query Params
- statuses: Array [opicional]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/customers/123/schedules?statuses[]=confirmed" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": [
{
"id": 987,
"order_id": 555,
"status": "confirmed",
"date": "2026-05-20",
"start": "10:00",
"end": "11:00",
"customer": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
},
"professional": {
"id": 22,
"name": "Profissional A",
"description": "Especialista",
"profile_image_url": "https://..."
},
"services": [
{
"id": 14,
"name": "Corte",
"description": "Corte masculino",
"duration": 30,
"price": "45.0",
"price_type": "fixed",
"image": "https://..."
}
]
}
]
}4️⃣ Clientes - Listar comandas do cliente
- GET
/customers/:customer_id/orders - Path Params
- customer_id: Integer [obrigatório]
- Query Params
- statuses: Array [opicional]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/customers/123/orders?statuses[]=confirmed" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": [
{
"id": 42,
"status": "open",
"schedule_id": 7,
"total": "80.0",
"customer": {
"id": 15,
"name": "João Silva",
"email": "joao@email.com",
"phone": "11999990000"
},
"services": [
{
"id": 3,
"name": "Corte",
"price": "80.0",
"discount": "0.0",
"total": "80.0",
"quantity": 1
}
],
"products": [
{
"id": 9,
"name": "Shampoo",
"price": "0.0",
"discount": "0.0",
"total": "0.0",
"quantity": 1
}
]
}
]
}5️⃣ Profissionais - Listar profissionais
- GET
/professionals - Query Params
- service_ids: Array [opcional]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/professionals?service_ids[]=10&service_ids[]=12" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": [
{
"id": 22,
"name": "Profissional A",
"description": "Especialista",
"profile_image_url": "https://..."
}
]
}6️⃣ Serviços - Listar serviços
- GET
/services - Query Params
- professional_id: Integer [opcional]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/services?professional_id=22" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": [
{
"id": 14,
"name": "Corte",
"description": "Corte masculino",
"duration": 30,
"price": "45.0",
"price_type": "fixed",
"image": "https://..."
}
]
}7️⃣ Agendas - Listar horários disponíveis
- GET
/available-times - Query Params
- date: Date [obrigatório]
- service_ids: Array [obrigatório]
- professional_id: Integer [opcional]
Requisição - Exemplo cURL
curl --request GET \ --url "https://webhooks.bemp.app/api/totem/available-times?date=2026-05-20&professional_id=22&service_ids[]=14" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": [
{ "start": "09:00", "end": "09:30" },
{ "start": "10:00", "end": "10:30" }
]
}8️⃣ Agendas - Criar agendamento
- POST
/schedules - Body Params
- customer_id: Integer [obrigatório]
- professional_id: Integer [opcional caso a organização permita]
- date: Date [obrigatório]
- time: Time [obrigatório]
- service_ids: Array [obrigatório]
- notes: Integer [opicional]
Requisição - Exemplo cURL
curl --request POST \ --url "https://webhooks.bemp.app/api/totem/schedules" \ --header "Authorization: Bearer TOKEN" \ --header "Content-Type: application/json" \ --data '{ "customer_id": 123, "professional_id": 22, "date": "2026-05-20", "time": "10:00", "service_ids": [14, 18], "notes": "Prefere profissional com atraso maximo de 10 min" }'
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 987,
"order_id": 555,
"status": "open",
"date": "2026-05-20",
"start": "10:00",
"end": "11:00",
"customer": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
},
"professional": {
"id": 22,
"name": "Profissional A",
"description": "Especialista",
"profile_image_url": "https://..."
},
"services": [
{
"id": 14,
"name": "Corte",
"description": "Corte masculino",
"duration": 30,
"price": "45.0",
"price_type": "fixed",
"image": "https://..."
}
]
}
}9️⃣ Agendas - Cancelar agendamento
- DELETE
/schedules/:schedule_id - Path Params
- schedule_id: Integer [obrigatório]
Requisição - Exemplo cURL
curl --request DELETE \ --url "https://webhooks.bemp.app/api/totem/schedules/987" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 987,
"order_id": 555,
"status": "canceled",
"date": "2026-05-20",
"start": "10:00",
"end": "11:00",
"customer": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
},
"professional": {
"id": 22,
"name": "Profissional A",
"description": "Especialista",
"profile_image_url": "https://..."
},
"services": [
{
"id": 14,
"name": "Corte",
"description": "Corte masculino",
"duration": 30,
"price": "45.0",
"price_type": "fixed",
"image": "https://..."
}
]
}
}1️⃣0️⃣ Agenda - Alterar status (check-in)
- POST
/schedules/:schedule_id/inservice - Path Params
- schedule_id: Integer [obrigatório]
Requisição - Exemplo cURL
curl --request POST \ --url "https://webhooks.bemp.app/api/totem/schedules/987/inservice" \ --header "Authorization: Bearer TOKEN"
Resposta - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 987,
"order_id": 555,
"status": "inservice",
"date": "2026-05-20",
"start": "10:00",
"end": "11:00",
"customer": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
},
"professional": {
"id": 22,
"name": "Profissional A",
"description": "Especialista",
"profile_image_url": "https://..."
},
"services": [
{
"id": 14,
"name": "Corte",
"description": "Corte masculino",
"duration": 30,
"price": "45.0",
"price_type": "fixed",
"image": "https://..."
}
]
}
}1️⃣1️⃣ Comandas - Pagar comanda (OS)
- POST
/orders/:order_id/payment - Path Params
- order_id: Integer [obrigatório]
- Body Params
- payments: Array [obrigatório]
- payments[] (cada item do array)
- value: Decimal [obrigatório] — valor do pagamento; a soma de todos os
valuedeve ser igual aototalda OS - method: String [obrigatório] —
pix,credit_cardoudebit_card - brand: String [opcional] — bandeira do cartão (ex:
visa,mastercard) - installments: Integer [opcional] — número de parcelas (padrão: 1; usado em
credit_card) - transaction_id: String [obrigatório] — identificador da transação no dispositivo
- transaction_number: String [obrigatório] — NSU
- transaction_date: String [obrigatório] — data/hora da transação no dispositivo
- transaction_receipt: String [opcional] — comprovante da transação (via estabelecimento)
- transaction_customer_receipt: String [opcional] — comprovante da transação (via cliente)
- value: Decimal [obrigatório] — valor do pagamento; a soma de todos os
Requisição - Exemplo cURL
curl --request POST \ --url "https://webhooks.bemp.app/api/totem/orders/555/payment" \ --header "Authorization: Bearer TOKEN" \ --header "Content-Type: application/json" \ --data '{ "payments": [ { "value": 100.00, "method": "credit_card", "brand": "visa", "installments": 2, "transaction_id": "TXN123", "transaction_number": "NSU456", "transaction_date": "2026-05-20T14:30:00" }, { "value": 50.00, "method": "pix", "transaction_id": "PIX001" "transaction_number": "PIX001", "transaction_date": "2026-05-20T14:30:00" } ] }'
Resposta de sucesso - Exemplo JSON
{
"status": "success",
"code": 200,
"data": {
"id": 555,
"status": "closed",
"schedule_id": 987,
"total": "150.0",
"customer": {
"id": 123,
"name": "Fulano da Silva",
"email": "fulano@email.com",
"phone": "+55 51 99999-9999"
},
"services": [
{
"id": 14,
"name": "Corte",
"price": "100.0",
"discount": "0.0",
"total": "100.0",
"quantity": 1
}
],
"products": [],
"payments": [
{
"id": 1001,
"value": 100.0,
"status": "approved",
"method": "credit_card"
},
{
"id": 1002,
"value": 50.0,
"status": "approved",
"method": "pix"
}
]
}
}
Comentários
0 comentário
Artigo fechado para comentários.