For agents (internet-banking account API)
For agents (internet-banking account API)
Read this page before generating a client. The human guide starts at
overview. Contract: /openapi/ib.yaml (OpenAPI 3.1,
only the operations this credential can call; every operation also carries
x-audience). Machine indexes: /llms.txt and
/.well-known/api-catalog. Do not invent paths.
Facts
Signing algorithm, canonical string, Node sign(), and an offline test
vector: request-signing.
End-to-end flow
- Token
- Build the canonical string (LF, not CRLF):
Empty body SHA-256 is always
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.
Sign as detached JWS (<protected>..<signature>), ES256 = 64-byte R||S
(not DER). Put kid in the protected header.
- Self-test (creates nothing;
valid: falseis still HTTP 200):
Compare canonicalString character-by-character when valid is false.
- Balance
- PIX out (only after verify + balance succeed)
Treat 200 COMPLETED as done. 202 / 207 are indeterminate — wait for
pix.out.completed / failed / timeout or look up the payment. 422
is a business rejection (errorCode).
- Webhook (create once, with
accountId):
Verify X-Signature = base64(HMAC_SHA256(secret, raw_body)) on the
raw bytes. Reply 2xx quickly.
Offline test vector
Public key, canonical string, content SHA-256 and a valid JWS are in
request-signing § test vector.
kid = cfe8291443215153e11b76a7a533dd3c. Use it to unit-test your
signer before calling the API.
Error decision table
Human-facing detail: errors.