Directory. / developers

Getting started

Register, complete a profile, activate

This walks through the full self-service flow against the live instance at https://directory.open.dev.br. Every request below is real — there is no separate sandbox environment; registering here creates an institution in Pending status until it passes functional validation.

01 Register

POST /register is public and rate-limited by IP. It creates the institution (status Pending, never listed at /participants yet) and its first admin user, and returns a session token — shown once.

curl -X POST https://directory.open.dev.br/register \
  -H "Content-Type: application/json" \
  -d '{
    "organisationName": "Example Bank",
    "adminEmail": "admin@example.com",
    "adminPassword": "a-password-of-at-least-12-chars"
  }'
{
  "organisationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sessionToken": "kuqRrmsjEllTJlH8OAHsPj6NhNq-ax2gras0IANQRgE",
  "status": "Pending"
}

02 Verify the admin email

A verification link is emailed to adminEmail. Verifying it is a precondition for activation — GET /verify-email consumes the token in the link.

curl "https://directory.open.dev.br/verify-email?token=<token-from-the-email>"

03 Complete the profile

Set a jwksUri and register at least one authorisation server with a dcrRegistrationUri — both are checked in the next step. Authenticate with the session token from step 1.

curl -X PUT https://directory.open.dev.br/admin/institutions/{institutionId} \
  -H "Authorization: Bearer {sessionToken}" \
  -H "Content-Type: application/json" \
  -d '{ "jwksUri": "https://example-bank.test/jwks.json" }'

curl -X POST https://directory.open.dev.br/admin/institutions/{institutionId}/authorisation-servers \
  -H "Authorization: Bearer {sessionToken}" \
  -H "Content-Type: application/json" \
  -d '{ "dcrRegistrationUri": "https://example-bank.test/register" }'

04 Activate

POST .../activate runs the functional validation described in Registration & validation — a real mTLS call to dcrRegistrationUri and a real fetch of jwksUri. It's synchronous, idempotent, and safe to retry.

curl -X POST https://directory.open.dev.br/admin/institutions/{institutionId}/activate \
  -H "Authorization: Bearer {sessionToken}"

On success, the institution's status flips to Active and it appears in GET /participants.