Conta
Configuracoes da conta
Perfil da organizacao, chaves de API com escopos e lista de IPs, rotacao sem parar a integracao, equipe e papeis, e a trilha de auditoria.
Tudo aqui fica sob /v1/settings. Ler exige o escopo settings:read;
alterar, settings:write. Algumas operacoes exigem sessao do painel - uma
pessoa logada - e recusam chave de API com 403: criar, revogar e rotacionar
chaves, administrar a equipe, consultar a propria conta e trocar a propria
senha. Se uma chave de API pudesse emitir outra chave ou criar um usuario, um
vazamento viraria acesso permanente: quem revogasse a chave vazada encontraria
outra no lugar.
Perfil da organizacao
curl -X PATCH http://localhost:3333/v1/settings/organization \
-H "Authorization: Bearer $MINSTREL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "legalName": "Minha Loja Ltda", "document": "11.222.333/0001-81", "timezone": "America/Sao_Paulo" }'
| Campo | Regra |
|---|---|
name | Nome fantasia. Aparece nas mensagens da regua de cobranca. |
legalName | Razao social. |
document | CNPJ com digito verificador conferido; o alfanumerico e aceito. |
mcc | Categoria do estabelecimento, 4 digitos. Entra nas regras de fluxo como order.mcc. |
timezone | Nome IANA, como America/Sao_Paulo. Define o dia dos relatorios e das regras por horario. |
supportEmail | Contato de atendimento. |
website | Site, com http:// ou https://. |
Envie so os campos que mudam; null apaga um campo opcional. Deslocamento como
-03:00 e recusado no fuso de proposito: o PostgreSQL le esse formato com o
sinal invertido, e o relatorio sairia seis horas fora do lugar sem erro
nenhum. Cada alteracao vai para a auditoria com o valor anterior e o novo.
Chaves de API
O formato da chave e explicado em Primeiros passos:
mk_<ambiente>_<prefixo>_<segredo>, presa a um ambiente. A chave vai no header
Authorization: Bearer; o header X-Api-Key tambem e aceito.
curl -X POST http://localhost:3333/v1/settings/api-keys \
-H "Authorization: Bearer $TOKEN_DA_SESSAO" \
-H "Content-Type: application/json" \
-d '{
"name": "Backend de producao",
"environment": "live",
"scopes": ["payments:read", "payments:write", "customers:read", "customers:write"],
"allowedIps": ["203.0.113.0/24"],
"expiresAt": "2027-10-15T00:00:00.000Z"
}'
$TOKEN_DA_SESSAOe oaccessTokende uma sessao do painel (POST /v1/auth/login): uma chave de API recebe403aqui.- O segredo volta em
secretuma unica vez. Guardamos apenas o hash: se perdeu, rotacione. - Ninguem concede o que nao tem: pedir um escopo que a sua sessao nao possui
responde
403. expiresAte opcional (sem ele, a chave nao expira). Precisa estar ao menos 1 hora no futuro e no maximo 3 anos adiante.GET /v1/settings/api-keyslista as chaves de um ambiente (environment; padrao, o da credencial em uso), sem o segredo: prefixo, escopos, IPs, ultimo uso (lastUsedAt), expiracao, quem criou e a situacao (active,expiredourevoked).status=activemostra so as que autenticam agora.
Escopos
Conceda a cada chave so o que a integracao usa. Rota sem o escopo responde
403 com a lista do que falta.
| Escopo | Libera |
|---|---|
payments:read, payments:write | Transacoes: consultar; criar, capturar, cancelar, estornar e decidir revisao. |
customers:read, customers:write | Clientes, grupos e cartoes. |
subscriptions:read, subscriptions:write | Produtos, planos e assinaturas. |
invoices:read, invoices:write | Faturas e regua de cobranca. |
flows:read, flows:write | Fluxos de roteamento. |
connectors:read, connectors:write | Conectores e contas. |
recipients:read, recipients:write | Recebedores e simulador de split. |
webhooks:read, webhooks:write | Endpoints e entregas de webhook. |
events:read | Consulta de eventos (GET /v1/events). |
reports:read | Relatorios. |
settings:read, settings:write | Esta pagina: perfil, chaves, equipe e auditoria. |
billing:read | Financeiro da plataforma. |
payment_methods:read, payment_methods:write | Reservados: nenhuma rota os exige hoje. Os cartoes usam customers:*. |
Lista de IPs permitidos
allowedIps aceita ate 50 entradas: IPv4 (203.0.113.10), faixa IPv4 em CIDR
(203.0.113.0/24) ou IPv6 exato. Lista vazia aceita qualquer origem. Fora da
lista, a requisicao responde 403 com ip_not_allowed.
IPv4 isolado e gravado como /32, para casar tambem quando o servidor enxerga
o cliente no formato IPv6 (::ffff:203.0.113.10). Faixa IPv6 (CIDR) ainda nao
e aceita.
Revogar
curl -X POST http://localhost:3333/v1/settings/api-keys/key_01HQ.../revoke \
-H "Authorization: Bearer $TOKEN_DA_SESSAO" \
-H "Content-Type: application/json" \
-d '{ "reason": "Servidor desativado" }'
A chave para de autenticar na hora: a proxima chamada recebe 401 com
api_key_revoked. O motivo (ao menos 3 caracteres) fica na chave e na
auditoria. Chave expirada responde 401 com token_expired.
Rotacionar sem parar a integracao
curl -X POST http://localhost:3333/v1/settings/api-keys/key_01HQ.../rotate \
-H "Authorization: Bearer $TOKEN_DA_SESSAO" \
-H "Content-Type: application/json" \
-d '{ "graceHours": 24, "reason": "Rotacao periodica" }'
A rotacao cria a substituta com o mesmo nome, ambiente, escopos e IPs, e devolve o segredo dela uma unica vez. A validade da nova tem a mesma duracao da antiga: rotacionar uma chave de 90 dias rende outra de 90 dias.
graceHours(0 a 168, padrao 24) e o tempo em que a antiga continua autenticando, para voce trocar a variavel de ambiente sem parar de cobrar.rotatedFrom.validUntildiz ate quando. Se a antiga expiraria antes, vale a expiracao dela.graceHours: 0revoga a antiga na hora. Use em suspeita de vazamento.- Chave revogada, expirada ou ja rotacionada nao pode ser rotacionada (
409): rotacione a nova, ou crie outra.
Limite por minuto
rateLimitPerMinute e aceito na criacao, gravado e devolvido na listagem, mas
ainda nao e aplicado: e uma configuracao reservada. Nenhuma requisicao e
recusada por ela hoje.
Equipe e papeis
Cada pessoa da equipe tem um papel, e o papel define os escopos da sessao dela no painel. A troca de papel vale na proxima requisicao: os escopos sao recalculados a cada chamada.
| Papel | Pode |
|---|---|
owner | Tudo, inclusive conceder e retirar o papel de proprietario. |
admin | Tudo, menos mexer em proprietario. |
developer | Ler tudo; alterar pagamentos, clientes e cartoes, fluxos, conectores e webhooks. |
finance | Ler tudo; alterar pagamentos, faturas, assinaturas, recebedores e clientes. |
support | Ler tudo; alterar clientes. |
viewer | So ler. |
GET /v1/settings/roles devolve a tabela exata de escopos de cada papel - a
mesma usada na autorizacao. "Alterar pagamentos" e o escopo payments:write,
que inclui capturar, cancelar e estornar.
| Endpoint | O que faz |
|---|---|
GET /v1/settings/users | Membros com papel, situacao, MFA e ultimo acesso. |
POST /v1/settings/users | Convida um membro (name, email, role). |
PATCH /v1/settings/users/:id | Troca o papel (role). |
POST /v1/settings/users/:id/deactivate | Bloqueia o acesso e encerra as sessoes na hora, sem apagar o historico. |
POST /v1/settings/users/:id/reactivate | Devolve o acesso com o mesmo papel e zera o bloqueio por tentativas. |
POST /v1/settings/users/:id/reset-password | Gera nova senha temporaria e encerra as sessoes do membro. |
O convite e a nova senha devolvem uma senha temporaria uma unica vez, para
o administrador repassar - nao ha envio de e-mail. A pessoa troca a senha no
primeiro acesso; enquanto isso, passwordChangeRequired vem true.
Regras que protegem a conta:
- So um proprietario concede, altera ou desativa outro proprietario.
- Ninguem altera o proprio papel nem desativa a si mesmo por aqui.
- Sempre resta ao menos um proprietario ativo: rebaixar ou desativar o ultimo
responde
409. - Rebaixar (perder qualquer escopo, ou deixar de ser proprietario) encerra as sessoes do membro.
- Cada e-mail entra em uma unica organizacao.
O status de cada membro e active, invited (nunca entrou), locked
(bloqueado por tentativas) ou inactive.
Sua conta e seguranca
GET /v1/settings/accountmostra o membro da sessao atual, com os escopos.POST /v1/settings/account/passwordtroca a propria senha. Exige a senha atual, aninhada empassword.currentepassword.next, e encerra todas as sessoes, inclusive a atual.GET /v1/settings/securitymostra a politica em vigor: senha de no minimo 12 caracteres, bloqueio apos 5 tentativas erradas por 15 minutos e a duracao das sessoes. Os papeisownereadminsao marcados como exigindo MFA, mas o cadastro de MFA ainda nao esta disponivel (enrollmentAvailable: false).
Auditoria
GET /v1/settings/audit-logs lista as acoes administrativas da organizacao, da
mais recente para a mais antiga. A trilha e append-only: nao ha como alterar nem
apagar um registro.
curl "http://localhost:3333/v1/settings/audit-logs?action=api_key.&from=2026-10-01T03:00:00Z" \
-H "Authorization: Bearer $MINSTREL_API_KEY"
| Parametro | Efeito |
|---|---|
userId | Quem fez a acao (usr_...). |
action | Acao exata (api_key.created) ou o grupo, terminado em ponto (api_key.). |
resourceType, resourceId | Recurso afetado: user, api_key, organization, recipient... |
from, to | Periodo. |
limit, startingAfter | Pagina (1 a 100, padrao 50) e cursor. |
Cada registro traz quem fez (actor: pessoa, chave de API ou o sistema), o
recurso com um nome legivel (resource.label), as mudancas em changes - com
segredos sempre mascarados -, IP, user agent e o requestId da chamada.
| Grupo | Acoes |
|---|---|
auth. | login, password_changed |
api_key. | created, revoked, rotated |
user. | invited, role_changed, deactivated, reactivated, password_reset |
organization. | updated |
connector_account. | created, updated, deleted |
recipient. | created, updated, payout_destination_changed, deleted |
webhook_endpoint. | created, updated, deleted, secret_rotated, secret_revealed |
A trilha e da organizacao, nao do ambiente: uma chave de producao revogada por alguem no sandbox aparece do mesmo jeito.