Clientes do Merchant

Navegue e inspecione os clientes do Merchant a partir do Dashboard, incluindo seus instrumentos de pagamento salvos e histórico de pedidos.

Esses endpoints dão suporte à tela de clientes do Dashboard para um único Merchant: listar pagadores com busca e filtros, abrir um deles para ver todos os detalhes e atualizar ou remover um registro.

Um cliente agrupa tudo o que um pagador possui dentro deste Merchant — instrumentos de pagamento salvos, pedidos e assinaturas. Os clientes nunca cruzam os limites de um Merchant, então a mesma pessoa comprando em dois dos seus Merchants é dois registros de cliente separados.

Esses endpoints alimentam a interface do Tokeflow Dashboard. Eles são autenticados por sessão (JWT bearer) — o token vem do login no Dashboard, não de uma chave de API sk_/pk_. As solicitações também carregam o header x-merchant-id, identificando o Merchant em contexto, e o usuário autenticado deve ser membro com acesso a ele.

O objeto cliente

Retornado pelos endpoints de listagem e recuperação desta página.

CampoTipoDescrição
idstring—
organization_idstring—
merchant_idstring—
merchant_namestring—
namestring | nullAceita null porque a coluna aceita. O serviço da Organization converte para '' ao montar seus literais, mas o Merchant Dashboard retorna a entidade via plainToInstance e, por isso, repassa um null real diretamente ao cliente — o que declarar este campo como string escondia, e que chegou à UI como um título de página vazio e uma confirmação "Deleting null".
emailstring—
phonestring | null—
document_typestring | null—
document_numberstring | null—
metadataobject | null—
created_atstring(ISO 8601 UTC).
updated_atstring(ISO 8601 UTC).
deletedbooleanVerdadeiro assim que o cliente tiver sido excluído. Clientes excluídos permanecem legíveis para fins de histórico, mas não podem ser usados em novas operações.
payment_instrumentsarray—
linked_subscriptionsarrayAssinaturas vinculadas (funcionalidade futura).
linked_ordersarray—
external_referencesarray—

Endpoints

GET/api/v1/merchant/customers

Merchant

Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.

Lista os clientes do Merchant.

Parâmetros de consulta

CampoTipoObrigatórioDescrição
pagenumberNãoNúmero da página (indexado a partir de 1). Padrão 1, mín. 1.
limitnumberNãoNúmero de itens por página. Padrão 20, mín. 1, máx. 100.
merchant_idstringNãoFiltra por ID do Merchant
searchstringNãoBusca por nome, e-mail ou ID do cliente
start_datestringNãoData de início (ISO 8601)
end_datestringNãoData de término (ISO 8601)

Exemplo de solicitação

curl -G https://api.tokeflow.com/api/v1/merchant/customers \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
  -H "x-merchant-id: mrc_8a3f12d9" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=20" \
  --data-urlencode "merchant_id=mrc_8a3f12d9" \
  --data-urlencode "search=string"

DELETE/api/v1/merchant/customers/:id

Merchant

Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.

Exclui permanentemente um cliente. Cancela todas as assinaturas que ainda não estejam canceladas ou expiradas, revoga todos os métodos de pagamento salvos — removendo os dados do cartão armazenados — e então desativa o cliente. Isso não pode ser desfeito. O cliente continua disponível para consulta via GET /:id, de modo que seu histórico permanece revisável, mas ele sai da lista de clientes e não pode mais ser usado em novas operações, e seu e-mail volta a ficar disponível. Note que isso difere do DELETE na superfície de chave de API (/customers/:customerId), que em vez disso recusa com 409 quando um cliente tem qualquer histórico.

Parâmetros de caminho

CampoTipoObrigatórioDescrição
idstringSim—

Exemplo de solicitação

curl -X DELETE https://api.tokeflow.com/api/v1/merchant/customers/obj_1a2b3c4d \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
  -H "x-merchant-id: mrc_8a3f12d9"

Exemplo de resposta — 200

{
  "id": "cust_123",
  "object": "customer",
  "deleted": true
}

GET/api/v1/merchant/customers/:id

Merchant

Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.

Obtém um cliente por ID.

Parâmetros de caminho

CampoTipoObrigatórioDescrição
idstringSim—

Exemplo de solicitação

curl https://api.tokeflow.com/api/v1/merchant/customers/obj_1a2b3c4d \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
  -H "x-merchant-id: mrc_8a3f12d9"

Exemplo de resposta — 200

{
  "id": "obj_1a2b3c4d",
  "organization_id": "org_4b21e7c3",
  "merchant_id": "mrc_8a3f12d9",
  "merchant_name": "Acme Store",
  "name": "Jane Buyer",
  "email": "jane@example.com",
  "phone": "+5511987654321",
  "document_type": "12345678909",
  "document_number": "12345678909",
  "metadata": {},
  "created_at": "2026-01-15T12:30:00.000Z",
  "updated_at": "2026-01-15T12:30:00.000Z",
  "deleted": false,
  "payment_instruments": [
    {
      "id": "obj_1a2b3c4d",
      "instrument_type": "standard",
      "last4": "string",
      "brand": "string",
      "card_type": "standard",
      "exp_month": 1,
      "exp_year": 1,
      "external_wallet_id": "string",
      "status": "active",
      "is_default": true,
      "created_at": "2026-01-15T12:30:00.000Z"
    }
  ],
  "linked_subscriptions": [
    {}
  ],
  "linked_orders": [
    {
      "id": "obj_1a2b3c4d",
      "status": "active",
      "total_amount": 15000,
      "currency": "BRL",
      "created_at": "2026-01-15T12:30:00.000Z"
    }
  ],
  "external_references": [
    {
      "source_type": "standard",
      "connector_name": "Acme Store",
      "external_id": "string"
    }
  ]
}

PATCH/api/v1/merchant/customers/:id

Merchant

Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.

Atualiza um cliente.

Parâmetros de caminho

CampoTipoObrigatórioDescrição
idstringSim—

Campos da solicitação

CampoTipoObrigatórioDescrição
namestringNão—
emailstringNão—
phonestringNão—
document_typestringNãoUm dos valores cpf, cnpj, passport, tax_id.
document_numberstringNão—

Exemplo de solicitação

curl -X PATCH https://api.tokeflow.com/api/v1/merchant/customers/obj_1a2b3c4d \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
  -H "x-merchant-id: mrc_8a3f12d9" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Store",
    "email": "jane@example.com",
    "phone": "+5511987654321",
    "document_type": "cpf",
    "document_number": "12345678909"
  }'

Exemplo de resposta — 200

{
  "id": "obj_1a2b3c4d",
  "organization_id": "org_4b21e7c3",
  "merchant_id": "mrc_8a3f12d9",
  "merchant_name": "Acme Store",
  "name": "Jane Buyer",
  "email": "jane@example.com",
  "phone": "+5511987654321",
  "document_type": "12345678909",
  "document_number": "12345678909",
  "metadata": {},
  "created_at": "2026-01-15T12:30:00.000Z",
  "updated_at": "2026-01-15T12:30:00.000Z",
  "deleted": false
}

Erros

Os erros usam o envelope padrão. Os casos mais comuns aqui:

HTTPSignificado
400Parâmetros inválidos ou um estado que não permite esta operação.
401Token de sessão do Dashboard ausente, expirado ou inválido.
403Autenticado, mas o usuário autenticado não tem acesso a esta entidade.
404O registro não existe ou não é visível para esta entidade.

Relacionados

Nesta página