Conectores do Merchant
Gerencie as conexões de um Merchant com provedores de pagamento a partir do Dashboard — adicione credenciais, ative ou desative um conector e remova um.
Um conector é a conexão de um único Merchant com um provedor de pagamento: as credenciais, o ambiente para o qual ele aponta e se está atualmente habilitado. Esses endpoints dão suporte à tela de conectores do Dashboard.
Os conectores são aquilo para onde as regras de roteamento apontam — um perfil de roteamento só pode enviar uma cobrança para um provedor para o qual este Merchant tenha um conector. Desativar um conector o remove do roteamento imediatamente, de modo que as cobranças que iriam para ele passam em cascata para a próxima opção elegível.
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 conector
Retornado pelos endpoints de listagem e recuperação desta página.
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do conector. |
merchant_id | string | ID do Merchant. |
provider_slug | string | Slug do provedor de pagamento. |
payment_provider_id | string | ID do provedor de pagamento por trás do conector — continua legível depois que o provedor deixa de ser listado como ativo. |
name | string | Nome do conector. |
country_code | string | null | Código de país ISO 3166-1 alpha-2. |
auth_method | string | Método de autenticação (api_key para a V1). |
is_test_mode | boolean | Se este é um conector em modo de teste. |
is_active | boolean | Se o conector está ativo. |
created_at | string | Timestamp de criação do conector. (ISO 8601 UTC). |
webhook_url | string | null | URL de webhook para receber eventos do PSP. Configure isso no dashboard do seu PSP. |
has_webhook_secret | boolean | Se os webhooks recebidos do provedor podem ser verificados — um webhook_secret está armazenado, ou o provedor assina com uma chave que já está em credentials (alguns provedores assinam com a chave secreta da conta). |
config | object | null | Configuração opcional não sensível por conector (por exemplo, um override de card_brands). Null quando nenhum override está definido, caso em que o SDK recorre ao default_supported_card_brands do PSP. Também aceita installments_enabled — veja Configuração do conector. |
Endpoints
GET/api/v1/merchant/connectors
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Lista os conectores do Merchant.
Parâmetros de consulta
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | Número da página (indexado a partir de 1). Padrão 1, mín. 1. |
limit | number | Não | Número de itens por página. Padrão 20, mín. 1, máx. 100. |
Exemplo de solicitação
curl -G https://api.tokeflow.com/api/v1/merchant/connectors \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
--data-urlencode "page=1" \
--data-urlencode "limit=20"POST/api/v1/merchant/connectors
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Cria um conector.
Campos da solicitação
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
provider_slug | string | Sim | Slug do provedor de pagamento. Um dos valores provider_a, provider_b, provider_c, provider_d, provider_e. |
name | string | Sim | Nome do conector. |
country_code | string | Não | Código de país ISO 3166-1 alpha-2. Aceita null para PSPs não específicos de país. |
is_test_mode | boolean | Sim | Se este conector está em modo de teste. |
is_active | boolean | Não | Se o conector está ativo na criação. Padrão true quando omitido. Um conector inativo é ignorado pela avaliação de roteamento e é rejeitado por PATCH /routing/profiles/:id/default-connector. Note que createRoutingProfile e updateRoutingProfile atualmente não filtram por is_active, então um perfil ainda pode ser criado com um padrão inativo — cobranças nele então falham no momento da resolução. |
credentials | object | Sim | Credenciais específicas do provedor para o provedor conectado — por exemplo, uma chave de API, ou um token de acesso mais o país. Os campos exatos dependem do provedor. Os valores são criptografados em repouso e nunca retornados por completo. |
webhook_secret | string | Não | Segredo de assinatura de webhook do PSP para verificar webhooks recebidos. O formato depende do provedor: o Provider A usa whsec_...; o Provider B espera um objeto JSON em string {"username":"...","password":"..."} usado para verificação HTTP Basic Auth; alguns provedores esperam o token de acesso definido no webhook no painel deles, e outros não precisam de nenhum (assinam com a chave secreta da conta). |
config | object | Não | Configuração opcional não sensível por conector. Suporta card_brands (restringe as bandeiras expostas ao SDK) e installments_enabled (true oferece parcelas no checkout, false as recusa, não definido aceita apenas parcelas pedidas via API). Veja Configuração do conector. |
auth_method | string | Sim | Um dos valores api_key, oauth2. |
Exemplo de solicitação
curl -X POST https://api.tokeflow.com/api/v1/merchant/connectors \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
-H "Content-Type: application/json" \
-d '{
"provider_slug": "provider_a",
"name": "Main Payment Processor",
"country_code": "BR",
"is_test_mode": false,
"is_active": true,
"credentials": {
"api_key": "sk_test_123456789"
},
"webhook_secret": "whsec_abc123...",
"config": {
"card_brands": [
"visa",
"mastercard",
"elo"
],
"installments_enabled": true
},
"auth_method": "api_key"
}'Exemplo de resposta — 201
{
"id": "conn_123abc...",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2025-11-20T10:00:00Z",
"webhook_url": "https://api.example.com/webhooks/connectors/conn_123?token=whsec_abc123",
"has_webhook_secret": true,
"config": {
"card_brands": [
"visa",
"mastercard",
"elo"
],
"installments_enabled": true
}
}DELETE/api/v1/merchant/connectors/:id
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Exclui um conector.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Exemplo de solicitação
curl -X DELETE https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"GET/api/v1/merchant/connectors/:id
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Obtém um conector por ID.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Exemplo de solicitação
curl https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"Exemplo de resposta — 200
{
"id": "conn_123abc...",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2025-11-20T10:00:00Z",
"webhook_url": "https://api.example.com/webhooks/connectors/conn_123?token=whsec_abc123",
"has_webhook_secret": true,
"config": {
"card_brands": [
"visa",
"mastercard",
"elo"
],
"installments_enabled": true
}
}PATCH/api/v1/merchant/connectors/:id
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Atualiza um conector.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Campos da solicitação
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Nome do conector. |
is_active | boolean | Não | Se o conector está ativo. |
credentials | object | Não | Credenciais específicas do provedor para o provedor conectado — por exemplo, uma chave de API, ou um token de acesso mais o país. Os campos exatos dependem do provedor. Os valores são criptografados em repouso e nunca retornados por completo. |
webhook_secret | string | Não | Segredo de assinatura de webhook do PSP para verificar webhooks recebidos. O formato depende do provedor: o Provider A usa whsec_...; o Provider B espera um objeto JSON em string {"username":"...","password":"..."} usado para verificação HTTP Basic Auth; alguns provedores esperam o token de acesso definido no webhook no painel deles, e outros não precisam de nenhum (assinam com a chave secreta da conta). |
config | object | Não | Configuração opcional não sensível por conector. Mesclada chave a chave. Passe um array vazio ou omita card_brands para limpar o override de bandeiras; passe installments_enabled: null para voltar o parcelamento ao estado não definido. Veja Configuração do conector. |
Exemplo de solicitação
curl -X PATCH https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
-H "Content-Type: application/json" \
-d '{
"name": "Provider A BRL Prod",
"is_active": false,
"credentials": {
"api_key": "sk_live_provider_key_rotated",
"account_id": "acct_456"
},
"webhook_secret": "whsec_abc123...",
"config": {
"card_brands": [
"visa",
"mastercard",
"elo"
],
"installments_enabled": true
}
}'Exemplo de resposta — 200
{
"id": "conn_123abc...",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2025-11-20T10:00:00Z",
"webhook_url": "https://api.example.com/webhooks/connectors/conn_123?token=whsec_abc123",
"has_webhook_secret": true,
"config": {
"card_brands": [
"visa",
"mastercard",
"elo"
],
"installments_enabled": true
}
}POST/api/v1/merchant/connectors/:id/test
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Testa as credenciais do conector contra o PSP.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Exemplo de solicitação
curl -X POST https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d/test \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"GET/api/v1/merchant/connectors/:id/webhooks/inbounds
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Obtém os webhooks recebidos de um conector.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Parâmetros de consulta
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | Número da página (indexado a partir de 1). Padrão 1, mín. 1. |
limit | number | Não | Número de itens por página. Padrão 20, mín. 1, máx. 100. |
status | string | Não | Filtra por status do evento de webhook |
from | string | Não | Limite inferior inclusivo para received_at (ISO 8601) |
to | string | Não | Limite superior inclusivo para received_at (ISO 8601) |
Exemplo de solicitação
curl -G https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d/webhooks/inbounds \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
--data-urlencode "page=1" \
--data-urlencode "limit=20" \
--data-urlencode "status=pending" \
--data-urlencode "from=2026-04-01T00:00:00Z"GET/api/v1/merchant/connectors/:id/webhooks/invalid
Auth: Dashboard session (JWT bearer). É necessário ser membro do Merchant.
Obtém os eventos de webhook inválidos de um conector.
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | — |
Parâmetros de consulta
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | Número da página (indexado a partir de 1). Padrão 1, mín. 1. |
limit | number | Não | Número de itens por página. Padrão 20, mín. 1, máx. 100. |
from | string | Não | Limite inferior inclusivo para received_at (ISO 8601) |
to | string | Não | Limite superior inclusivo para received_at (ISO 8601) |
Exemplo de solicitação
curl -G https://api.tokeflow.com/api/v1/merchant/connectors/obj_1a2b3c4d/webhooks/invalid \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
--data-urlencode "page=1" \
--data-urlencode "limit=20" \
--data-urlencode "from=2026-04-01T00:00:00Z" \
--data-urlencode "to=2026-04-30T23:59:59Z"Erros
Os erros usam o envelope padrão. Os casos mais comuns aqui:
| HTTP | Significado |
|---|---|
400 | Parâmetros inválidos ou um estado que não permite esta operação. |
401 | Token de sessão do Dashboard ausente, expirado ou inválido. |
403 | Autenticado, mas o usuário autenticado não tem acesso a esta entidade. |
404 | O registro não existe ou não é visível para esta entidade. |