v2.74.0 — Credencial por conta, assinatura de requisição, PIN e travas de saída
v2.74.0 — Credencial por conta, assinatura de requisição, PIN e travas de saída
- Nova credencial delegada: uma credencial por conta, assinada. Uma credencial com o escopo
credentials.delegateemite credenciais filhas amarradas a uma conta, com escopos que são sempre subconjunto dos dela,publicKeyPemeallowedIps(1 a 20 CIDRs) obrigatórios. A emissão devolvestatus: "pending"e umactiveFrom18h à frente — até lá a credencial responde 403credential_not_yet_active. Revogar é imediato, inclusive durante a carência. Ver Autenticação. - Credenciais delegadas chamam
https://client.api.corpx.come assinam toda requisição com JWS detached (ES256 ou PS256) sobreMÉTODO\nPATH?QUERY\nTIMESTAMP\nIDEMPOTENCY_KEY\nX-Content-SHA256, mais os headersX-Request-Timestamp(tolerância de 300s),X-Content-SHA256eX-Request-Signature. No host antigo elas recebem 403signed_host_required. Guia novo: Assinatura de Requisição. POST /v1/security/signature/verifydevolve a string canônica que esperamos, o hash do corpo e o resultado da verificação, para você acertar a assinatura antes da primeira transação. Sempre 200, nunca cria nada.- Chaves públicas e allowlist de IP por credencial, em
GET|POST .../credentials/{clientId}/public-keys,DELETE .../public-keys/{kid}eGET|PUT .../credentials/{clientId}/ip-allowlist. Cadastrar chave ou adicionar IP espera 18h (pendingUntil); aposentar chave ou remover IP é imediato. Tenant com credencial delegada tem a allowlist de IP calculada a partir das credenciais, e oPUT /v1/security/ip-allowlistmanual passa a responder 409ip_allowlist_derived. - Assinatura de webhook por conta.
POST /v1/webhooksaceitaaccountId: a assinatura passa a receber só os eventos daquela conta. O campo não é editável depois e credencial restrita a contas é obrigada a informá-lo (422account_id_required). Ver Assinatura por conta. - Travas de saída configuráveis pelo titular em
GET|PUT /v1/accounts/{accountId}/security/locks:cashoutBlocked,cashoutHoursecashoutSourceIps. Apertar vale na hora; afrouxar espera 6 horas (pendingEffectiveAt), campo por campo.DELETE .../locks/pendingcancela o afrouxamento ePOST .../locks/pending/approveantecipa com PIN. Saída recusada devolve 423cashout_locked, 403cashout_outside_hoursou 403cashout_source_ip_not_allowed. - PIN transacional por operador em
PUT /v1/accounts/{accountId}/security/pin,DELETE .../security/pin/{document},POST .../security/pin/verifyeGET .../security/pin/status. Quando a credencial exige PIN, as rotas de saída passam a pedirX-Acting-DocumenteX-Transaction-Pin(428pin_required). 3 erros travam por 15 minutos (429), 6 travam até redefinir (423). PIN de 6 a 12 dígitos, sem repetição, sequência ou data de nascimento (422weak_pin). GET /v1/accounts/{accountId}/shared-accesslista os tenants que operam a mesma conta bancária, comdisplayName,status,sinceeisCurrent. Só metadado público.- Nada muda para as integrações existentes. Credenciais atuais continuam em
https://tenant.api.corpx.comsem assinar nada; contas sem trava e sem PIN operam como antes; assinatura de webhook semaccountIdcontinua recebendo os eventos de todas as contas.
v2.74.1 — Docs: BaaS e Internet banking
v2.74.1 — Docs: BaaS e Internet banking
- Duas seções no site. Navbar BaaS (
tenant.api.corpx.com) e Internet banking (client.api.corpx.com). A home deixa de cair no Início Rápido do tenant. llms.txt/llms-full.txtroteiam as duas audiências. Não assuma um único base URL. Filtre o OpenAPI porx-audience(baas,ibou ambos). Cadasummaryleva o prefixo[BaaS],[IB]ou[BaaS · IB].- Contrato da API não muda. Paths, PIN e travas continuam os do 2.74.0.
v2.75.0 — Limites locais no padrão MT
v2.75.0 — Limites locais no padrão MT
GET /v1/accounts/{accountId}/limits/availableé rota nova. Devolve as quatro janelas da MT (singleTransfer,daytime,nighttime,monthly) comusedBrl/availableBrlpara PIX, TED, boleto e transferência interna.GET /v1/accounts/{accountId}/pix/limitsnão muda: continua só os tetos do liquidante, sem used.- TED, boleto e interna passam a ter teto local só quando o staff grava no backoffice. Sem teto, o comportamento é o de hoje (fail-open). Transferência interna continua consultando o MySQL (
limites_cliente); se lá houver teto e a operação couber, autoriza sem hold no ledger. - Limite por operador em
GET|PUT|DELETE /v1/accounts/{accountId}/limits/operators/{document}: o dono fatia o teto da conta (available = min). Apertar vale na hora; afrouxar espera 6h. PIX só reserva localmente quando existe teto de operador — o liquidante continua barrando o teto da conta. - Recusa de PIX com
Limite restante: R$ Xalinha o used da janela atual. Não há sync periódico nem no GET.
v2.75.1 — Staff grava teto local de PIX
v2.75.1 — Staff grava teto local de PIX
PATCH /v1/backoffice/accounts/{accountId}/limitsaceitapixOutno mesmo formato das outras operações. Sem teto local, PIX continua fail-open no ledger; a MT segue barrando o teto da conta.- Reserve de PIX avalia
min(conta local, operador)quando o teto da conta existe.GET /pix/limitsnão muda. - used passa a ser um contador atômico por janela (
account_limit_usage), nãoSUMdos holds. Vários PIX da mesma conta ao mesmo tempo enfileiram na linha da janela; o teto não fura. Holds ficam só para saga e idempotência.