API reference · Communities & institutions

Credit union prudential and governance

POST Engage an external auditor

POST /credit-union/{reference}/auditor

The annual return refuses to reach ATTESTED without a current engagement from a firm on the approved list.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: EngageAuditorRequest · Response: GenericResponseExternalAuditorResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/auditor" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "firmName": "string",
  "approvalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "approvedUntil": "2026-09-25",
  "engagedForFiscalYear": 0
}'

Responses

StatusWhen
200Auditor engaged successfully

GET List external auditor engagements

GET /credit-union/{reference}/auditors

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseListExternalAuditorResponse

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

Responses

StatusWhen
200Auditors retrieved successfully

GET Read compliance breaches

GET /credit-union/{reference}/compliance/breaches

A breach clears by measurement, never by assertion: nobody can mark one resolved, the next monitor run is what clears it. An open breach appears in the period's return, so a clean quarter cannot be reported that was not had.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
statusOptional

Example

Response: GenericResponseListComplianceBreachResponse

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

Responses

StatusWhen
200Breaches retrieved successfully

POST Appoint a delegate

POST /credit-union/{reference}/delegate

Recorded from a ratified election naming that member, never granted freely. Voting weight comes from the zone's size where the union weights by zone.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: AppointDelegateRequest · Response: GenericResponseDelegateResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/delegate" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "electionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "termStartsOn": "2026-09-25",
  "termEndsOn": "2026-09-25"
}'

Responses

StatusWhen
200Delegate appointed successfully

GET List delegates

GET /credit-union/{reference}/delegates

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
statusOptional

Example

Response: GenericResponseListDelegateResponse

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

Responses

StatusWhen
200Delegates retrieved successfully

POST Schedule an election

POST /credit-union/{reference}/election

The module records the result and ties it to a minute; it does not run the ballot. Electronic balloting is a governance product with its own integrity requirements, and half-building it would be worse than not building it.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: RecordElectionRequest · Response: GenericResponseElectionResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/election" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "meetingType": "GENERAL_MEETING",
  "voterBasis": "MEMBERS",
  "meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "heldOn": "2026-09-25",
  "seatsContested": 0
}'

Responses

StatusWhen
200Election scheduled successfully

POST Ratify an election

POST /credit-union/{reference}/election/{electionReference}/ratify

Refused without the signed minute and refused where the meeting was not quorate. An ELECTED office cannot be created without a ratified election naming that person for that seat.

Headers

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

Path parameters

Name
reference
electionReference

Example

Response: GenericResponseElectionResponse

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

Responses

StatusWhen
200Election ratified successfully

POST Record an election result

POST /credit-union/{reference}/election/{electionReference}/result

Quorum is computed from the basis the union actually runs, not asserted. Where the delegate system is on, both the eligible count and the quorum come from delegates, and the basis is recorded so a later audit can tell which was used.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference
electionReference

Example

Request body: RecordElectionResultRequest · Response: GenericResponseElectionResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/election/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/result" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "eligibleVoterCount": 0,
  "votesCast": 0,
  "minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "candidates": [
    {
      "positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
      "nominatedByPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
      "votes": 0
    }
  ]
}'

Responses

StatusWhen
200Election result recorded successfully

GET List elections

GET /credit-union/{reference}/elections

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseListElectionResponse

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

Responses

StatusWhen
200Elections retrieved successfully

POST Create an electoral zone

POST /credit-union/{reference}/electoral-zone

Zones aligned to branches or independent is a choice made once at setup, because changing it later is a migration.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: ElectoralZoneRequest · Response: GenericResponseElectoralZoneResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/electoral-zone" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "zoneCode": "string",
  "name": "string",
  "branchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "delegateSeats": 0
}'

Responses

StatusWhen
200Electoral zone created successfully

GET List electoral zones

GET /credit-union/{reference}/electoral-zones

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseListElectoralZoneResponse

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

Responses

StatusWhen
200Electoral zones retrieved successfully

GET Read the governance compliance report

GET /credit-union/{reference}/governance/compliance

Seats, incompatibilities, terms, term limits, ratified elections, fit-and-proper records, the delegate system and the external auditor. These are the checks nobody runs until an inspection.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
asOfOptional

Example

Response: GenericResponseGovernanceComplianceResponse

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

Responses

StatusWhen
200Governance compliance retrieved successfully

GET Read a member's seniority tier

GET /credit-union/{reference}/member/{positionReference}/tier

Derived, never assigned, and it can go down. A downgrade never reprices a live loan because the loan carries the terms frozen onto it. The member is told exactly what the next rung needs rather than left to guess.

Headers

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

Path parameters

Name
reference
positionReference

Example

Response: GenericResponseMemberTierResponse

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

Responses

StatusWhen
200Member tier retrieved successfully

POST Assign or move a member's zone

POST /credit-union/{reference}/member/{positionReference}/zone/{zoneReference}

Every member belongs to exactly one zone, and moving between them is explicit.

Headers

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

Path parameters

Name
reference
positionReference
zoneReference

Example

Response: GenericResponseElectoralZoneResponse

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

Responses

StatusWhen
200Member assigned to zone successfully

PUT Set a prudential rule

PUT /credit-union/{reference}/prudential-rule

Supersedes the rule in force rather than editing it, so a ratio reported as met last quarter can still be read against the threshold that applied then. The seeded figures are a shape; the numbers must come from the regulator.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: UpsertPrudentialRuleRequest · Response: GenericResponsePrudentialRuleResponse

curl -X PUT "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/prudential-rule" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "ruleCode": "SINGLE_BORROWER_LIMIT",
  "comparator": "AT_LEAST",
  "thresholdBasisPoints": 0,
  "thresholdAmount": 0,
  "enforcement": "BLOCK",
  "effectiveFrom": "2026-09-25",
  "disclosureText": "string"
}'

Responses

StatusWhen
200Prudential rule set successfully

GET Read the prudential rules in force

GET /credit-union/{reference}/prudential-rules

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseListPrudentialRuleResponse

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

Responses

StatusWhen
200Prudential rules retrieved successfully

GET Read the quorum basis

GET /credit-union/{reference}/quorum

The basis, the eligible count and what quorum requires. Once membership crosses the threshold with the delegate system off, this says so - the module warns, it never switches the system on, because that needs a bye-law amendment.

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseQuorumResponse

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

Responses

StatusWhen
200Quorum retrieved successfully

GET Read the delinquency and PAR report

GET /credit-union/{reference}/report/delinquency

The book by bucket, with the provision held against each and PAR-30/PAR-90.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
asOfOptional

Example

Response: GenericResponseDelinquencyReportResponse

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

Responses

StatusWhen
200Delinquency report retrieved successfully

GET Read the exposure report

GET /credit-union/{reference}/report/exposure

Single borrower, connected group and insider, at three levels. The connected group includes what its members have accepted as guarantors, which is usually the largest term and the one a single-borrower limit misses.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
asOfOptional

Example

Response: GenericResponseExposureReportResponse

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

Responses

StatusWhen
200Exposure report retrieved successfully

GET Read the prudential dashboard

GET /credit-union/{reference}/report/prudential

Every rule, its observed value and its headroom, whether or not it bites. A rule the snapshot cannot answer says so rather than reading as met, and the dashboard says whether it was measured at all.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
asOfOptional

Example

Response: GenericResponsePrudentialDashboardResponse

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

Responses

StatusWhen
200Prudential dashboard retrieved successfully

POST Write today's snapshot

POST /credit-union/{reference}/snapshot

A ratio that has to hold daily needs a daily series. Every period return and every ratio reads the snapshot rather than recomputing history, because a back-dated correction would silently change a ratio that was reported as met on the day.

Headers

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

Path parameters

Name
reference

Query parameters

NameDefault
asOfOptional

Example

Response: GenericResponseUnionSnapshotResponse

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

Responses

StatusWhen
200Snapshot written successfully

GET List fit-and-proper records

GET /credit-union/{reference}/suitability

Headers

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

Path parameters

Name
reference

Example

Response: GenericResponseListSuitabilityRecordResponse

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

Responses

StatusWhen
200Suitability records retrieved successfully

POST Record a fit-and-proper assessment

POST /credit-union/{reference}/suitability

The module does not perform the assessment. It records who did, what they concluded and when it expires, and an expiring record warns like an expiring term.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: RecordSuitabilityRequest · Response: GenericResponseSuitabilityRecordResponse

curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/suitability" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "officeCode": "CHAIRPERSON",
  "assessmentType": "SELF_DECLARATION",
  "outcome": "PASSED",
  "assessedOn": "2026-09-25",
  "expiresOn": "2026-09-25",
  "documentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "assessorName": "string"
}'

Responses

StatusWhen
200Suitability recorded successfully

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