API reference · Identity & onboarding

Open Banking Authorization Server

GET A tenant's OpenID provider metadata, FAPI 1.0 Advanced profile

GET /openbanking/{tenantId}/.well-known/openid-configuration

Each tenant that serves open banking is its own issuer, named by the path and never by an X-Tenant header, which is refused when it contradicts the path. The document is the standard shape, not wrapped, because a third party's client library configures itself from it. It advertises only endpoints this deployment serves; the authorization, PAR and token endpoints appear as each is built. Authorization responses are JARM (response_mode=jwt), requests must be pushed and signed, and clients authenticate with private_key_jwt.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

Response: FapiDiscoveryDocumentResponse

curl -X GET "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/.well-known/openid-configuration" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200The provider metadata
404No such tenant, or the tenant does not serve open banking

GET Authorization endpoint, FAPI 1.0 Advanced profile

GET /openbanking/{tenantId}/authorize

Takes only client_id and a request_uri from PAR. It is not a login page: it is the link the tenant's app registers as a universal/app link, so on a phone with the app installed the operating system opens the app on the approval screen and this page is never fetched. A browser that reaches it is told to continue in the app. Nothing is ever asked for here, and nothing the caller sent is echoed. An unusable request is answered here, never by redirecting to a client, because an unverified redirect is an open redirector.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

Response: string

curl -X GET "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/authorize" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Continue in the app
400Unknown, expired or mismatched request

GET A tenant's published signing keys

GET /openbanking/{tenantId}/jwks

The keys a third party uses to verify this tenant's id_tokens and JARM responses. Only this tenant's keys appear, so a signature made under one tenant cannot verify under another. Every key that is not RETIRED is listed; match the kid.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

Response: JsonWebKeySetResponse

curl -X GET "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/jwks" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200The published key set
404No such tenant
503This tenant has no signing key yet. It refuses rather than publishing none

POST Push an authorization request (RFC 9126), FAPI 1.0 Advanced profile

POST /openbanking/{tenantId}/par

application/x-www-form-urlencoded, each parameter once. The client authenticates with private_key_jwt (client_assertion_type and client_assertion, audience the issuer, this endpoint or the token endpoint). Every authorization parameter travels in request, a request object signed PS256 or ES256 by the client: response_type code, response_mode jwt, an S256 code_challenge, a registered redirect_uri, scopes within the registration including openid, exp and nbf at most sixty minutes apart, and the open banking intent in claims.id_token.openbanking_intent_id.value. The intent must be one this client created and the customer has not yet answered. The returned request_uri is single-use and short-lived.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

Response: PushedAuthorisationRequestResponse

curl -X POST "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/par" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
201Pushed; redirect the customer with it
400invalid_request or invalid_request_object
401invalid_client
503No consent service is installed, so no intent can be checked

POST Revoke a token (RFC 7009)

POST /openbanking/{tenantId}/revoke

Client authenticated with private_key_jwt. Revoking a refresh token revokes every token in its family. Answers 200 whether or not the token existed or belonged to the caller, so the endpoint cannot be used to test which tokens are live.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

curl -X POST "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/revoke" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Revoked, or nothing to revoke
400invalid_request
401invalid_client

POST Issue tokens (RFC 6749), FAPI 1.0 Advanced profile

POST /openbanking/{tenantId}/token

application/x-www-form-urlencoded, each parameter once, client authenticated with private_key_jwt. grant_type client_credentials issues an access token for the requested scopes, never openid. authorization_code redeems a single-use code with the exact redirect_uri and the PKCE code_verifier, and returns an access token, a refresh token if the client registered that grant, and an id_token carrying openbanking_intent_id. A code presented twice revokes every token it produced. refresh_token rotates: the presented token stops working, and presenting it again revokes its whole family. No token outlives its intent. Tokens are opaque.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
tenantId

Example

Response: FapiTokenResponse

curl -X POST "https://api.bridgemoni.com/openbanking/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/token" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Tokens issued
400invalid_request, invalid_grant, invalid_scope, unauthorized_client or unsupported_grant_type
401invalid_client

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors