MeuPedido/developer
Primeiros passos

Obter credenciais

Como o lojista gera o client_id e o segredo em Integrações > Open Delivery, com escopos e modo de entrega.

Quem cria a credencial é o lojista, no painel do MeuPedido. Você, como integrador, recebe dele o client_id e o client_secret e configura no seu sistema. Esta página descreve o que ele vê, para que você possa orientá-lo, e o que fazer com o resultado.

Uma credencial por loja

A credencial pertence a uma loja e o token que ela gera só enxerga essa loja. Para integrar várias lojas, repita o processo em cada uma.

No painel do lojista

Abrir Integrações > Open Delivery

No painel do MeuPedido, com a loja selecionada, o lojista acessa Integrações e depois Open Delivery. A tela lista as credenciais já concedidas, com status e ações.

Conceder acesso

O botão Conceder acesso abre o formulário da nova credencial:

CampoO que preencher
NomeUm rótulo para reconhecer o seu sistema na lista, por exemplo o nome do produto
Escoposorders:read, orders:write, merchant:read, catalog:read. Marque só o que o seu sistema usa
Modo de entregaPOLLING, WEBHOOK ou BOTH. Na dúvida, POLLING
URL do webhookObrigatória em WEBHOOK e BOTH. Precisa ser HTTPS
Incluir pedidos de marketplaceSe marcado, pedidos que chegam à loja por marketplaces também entram no feed desta credencial

Os escopos não podem ser editados depois. Se o seu sistema passar a precisar de um escopo novo, o lojista cria outra credencial.

Copiar o segredo

Ao salvar, o painel mostra:

  • o client_id, no formato mp_ seguido de 24 caracteres hexadecimais;
  • o client_secret, exibido uma única vez;
  • o segredo do webhook, também exibido uma única vez, se o modo de entrega incluir webhook;
  • a URL base da API, https://api.meupedido.io/open-delivery.

Se o segredo for perdido, não há como recuperá-lo: o lojista revoga a credencial e cria outra.

Entregar ao integrador

O lojista repassa client_id e client_secret para você por um canal seguro. Guarde o segredo em um cofre de segredos ou variável de ambiente, nunca em código, repositório ou log.

Escolhendo os escopos

Peça o mínimo. Uma integração típica que recebe pedidos e devolve status precisa de orders:read e orders:write. Adicione merchant:read se você exibe dados da loja, e catalog:read se sincroniza o cardápio.

Se o seu sistema...Escopos
Só lê pedidos (relatórios, BI, impressão)orders:read
Recebe pedidos e avança o status (PDV, KDS, gestão de entregas)orders:read, orders:write
Também mostra o cardápio ou dados da lojamais catalog:read, merchant:read

O que o lojista pode fazer depois

Na lista de credenciais, cada uma tem as ações:

  • Pausar e retomar: com a credencial pausada, toda chamada responde 401 invalid_token. Os eventos continuam acumulando e ficam disponíveis quando ela é retomada.
  • Revogar: permanente. A credencial deixa de existir para a API.
  • Renomear: só muda o rótulo.
  • Ver eventos e tentativas: o histórico do feed e, no caso de webhook, cada tentativa de entrega com o resultado.
  • Reenviar evento: força uma nova entrega por webhook.
  • Limpar fila: reativa a URL do webhook depois de 20 falhas consecutivas.
  • Rotacionar segredo do webhook: salvar a URL de novo gera um segredo novo, mostrado uma vez.

Se a sua integração parar de responder de repente com 401, a primeira pergunta ao lojista é se a credencial foi pausada ou revogada.

Verificando a credencial

Com o par em mãos, peça um token. Um 200 confirma que a credencial está ativa e mostra os escopos concedidos.

Terminal
curl -X POST https://api.meupedido.io/open-delivery/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=mp_7f3a9c1e5b2d4a6f8e0c1b3d" \
  -d "client_secret=$CLIENT_SECRET"
200 OK
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjaGFudF9pZCI6IjZkMmY0YzhhLTFiM2UtNGY1YS05YzdkLTJlOGIwYTFmM2M1ZCIsImNsaWVudF9pZCI6Im1wXzdmM2E5YzFlNWIyZDRhNmY4ZTBjMWIzZCIsInNjb3BlIjoib3JkZXJzOnJlYWQgb3JkZXJzOndyaXRlIn0.Q1w7Xy0Yt3cJ5w8NnZK2p9Vb4Ls6Hd1Ff0Rr8Mm3Aa0",
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjaGFudF9pZCI6IjZkMmY0YzhhLTFiM2UtNGY1YS05YzdkLTJlOGIwYTFmM2M1ZCIsImNsaWVudF9pZCI6Im1wXzdmM2E5YzFlNWIyZDRhNmY4ZTBjMWIzZCIsInNjb3BlIjoib3JkZXJzOnJlYWQgb3JkZXJzOndyaXRlIn0.Q1w7Xy0Yt3cJ5w8NnZK2p9Vb4Ls6Hd1Ff0Rr8Mm3Aa0",
  "token_type": "bearer",
  "tokenType": "bearer",
  "expires_in": 3600,
  "expiresIn": 3600,
  "scope": "orders:read orders:write"
}

Um 401 invalid_client significa credencial inexistente, segredo errado, pausada ou revogada.

Próximos passos

Nesta página