Crie uma app

Os apps estendem a conta de um restaurante por meio de acesso OAuth com escopo e revogável. Seu código roda nos seus servidores; a plataforma mantém o registro, o histórico de instalações e a infraestrutura de cobrança. Este guia leva você do zero a um app instalado e com medição.

1. Registre seu app

Crie um app no painel de parceiros: nome, categoria, os escopos de que você precisa, uma URL de webhook opcional e seu modelo de cobrança. O envio cria um cliente OAuth (client id + secret) e coloca o app em revisão. Assim que um admin o aprova, ele aparece na App Store e pode ser instalado.

2. Seja instalado

Um dono de restaurante instala seu app pela página de detalhes na App Store, concedendo os escopos solicitados. A instalação cria uma AppInstallation e (para apps pagos) cobra o primeiro período pela carteira dele.

3. Chame a API

Troque um token OAuth pela conta que fez a instalação e depois chame a REST API com ele. Reporte uso, receba webhooks ou incorpore uma página no painel dele — abordado abaixo.

OAuth e tokens

Os apps se autenticam com OAuth 2.0 (Laravel Passport). Suas credenciais de cliente vêm do painel de parceiros. Use o fluxo padrão de código de autorização; o token concedido carrega os escopos que o proprietário aprovou na instalação.

# Exchange an authorization code for an access token
curl -X POST https://www.menubarcode.comoauth/token \
  -d grant_type=authorization_code \
  -d client_id=YOUR_CLIENT_ID \
  -d client_secret=YOUR_CLIENT_SECRET \
  -d redirect_uri=YOUR_REDIRECT \
  -d code=AUTH_CODE

# Call the API with the returned bearer token
curl https://www.menubarcode.com/api/v1/restaurants \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Accept: application/json"

Os tokens têm escopo: uma chamada que precisa de orders:read falha, a menos que o proprietário a tenha concedido. Solicite o conjunto mínimo — os revisores verificam isso.

Tokens de sessão

Para chamadas de curta duração de servidor para conteúdo incorporado, crie um token de sessão a partir de uma instalação ativa. Os tokens expiram após 60 segundos.

GET https://www.menubarcode.comapps/{appId}/session-token
# → { "token": "…", "expires_in": 60 }

Apps incorporados

Se o seu app declara uma embed_url, a plataforma o hospeda em um iframe dentro do painel do proprietário em /apps/{appId}/embed. Combine-o com um token de sessão (acima) para autenticar a página incorporada sem um ciclo OAuth completo.

Webhooks

Inscreva-se em eventos no webhook_url. As entregas são enfileiradas, reenviadas e assinadas com o esquema Standard Webhooks usando o segredo de assinatura do seu app. Seu endpoint deve ser uma URL HTTPS pública (sem hosts privados/loopback/metadata) e retornar 2xx rapidamente.

# A delivery your endpoint receives
POST https://your-app.com/webhooks
webhook-id: msg_...
webhook-timestamp: 1710000000
webhook-signature: v1,BASE64_HMAC
Content-Type: application/json

{ "type": "order.paid", "data": { "order_id": 123, ... } }

Verifique a assinatura contra seu segredo antes de confiar em um payload. Veja a lista de eventos.

Cobrança por uso

Apps cobrados por uso medem o consumo reportando unidades. Cada relatório é cobrado da carteira do proprietário pelo seu preço por unidade. Passe um ref único para tornar um relatório idempotente (uma repetição com o mesmo ref é ignorada).

curl -X POST https://www.menubarcode.com/api/app/usage \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Accept: application/json" \
  -d quantity=1 \
  -d ref=unique-key-per-event
CampoTipoObservações
quantitynúmero > 0obrigatório — unidades consumidas
refstring ≤ 120chave de idempotência opcional

O endpoint retorna 403 se o token não pertence a um app registrado ou o app não está instalado para a conta.

Guias práticos

Escolha um tipo de cobrança

  • Grátis — sem cobrança na instalação.
  • Recorrente — um preço fixo cobrado a cada período de cobrança (padrão 30 dias) da carteira do proprietário.
  • Por utilização — um preço por unidade cobrado conforme você reporta o uso.

Solicite escopos com responsabilidade

Solicite apenas os escopos que seu app usa. Alterar escopos em uma listagem ativa envia o app de volta para revisão. Veja a referência de escopos.

Limpe na desinstalação

Quando um proprietário desinstala, a plataforma revoga os tokens do app e dispara um app/uninstalled evento. Interrompa o trabalho em segundo plano e exclua os dados armazenados dessa conta quando o receber.

referência de escopos

Refletido a partir do registro de escopos OAuth da plataforma.

EscopoConcessões
menu:readRead menus, categories and items
menu:writeCreate and update menu items
orders:readRead orders and their status
orders:writeCreate and update orders
analytics:readRead scan and sales analytics
restaurant:readRead restaurant profile and settings

Eventos de webhook

Eventos aos quais você pode se inscrever hoje:

Evento
order.created
order.status_changed
order.paid
refund.completed
reservation.created
reservation.cancelled
customer.created
shift.opened
shift.closed
menu.updated
entitlement.changed
subscription.paused
subscription.resumed
subscription.renewed
subscription.expired
subscription.plan_changed
subscription.past_due
subscription.expiring
subscription.trial_ending
app.uninstalled

Requisitos de listagem e revisão

Antes de um admin aprovar seu app, ele deve:

  • Solicitar apenas os escopos que usa, cada um justificado na descrição.
  • Fornecer um endpoint de webhook funcional (HTTPS público) se ele se inscrever em eventos.
  • Declarar preços precisos — a tabela de preços na sua página de detalhes é gerada a partir deles.
  • Incluir um slogan claro, descrição, categoria e pelo menos uma captura de tela.
  • Lidar com a desinstalação de forma limpa (revogar acesso, parar cobrança, excluir dados da conta).

Edições de metadados (slogan, descrição, capturas de tela, links) entram no ar imediatamente; mudanças de preço ou escopo recolocam na fila de revisão.

Contate-nos

Siga-nos