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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: EngageAuditorRequest · Response: GenericResponseExternalAuditorResponse
curl Request Response
Copy 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
}' Copy {
"firmName": "string",
"approvalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approvedUntil": "2026-09-25",
"engagedForFiscalYear": 0
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"firmName": "string",
"approvalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approvedUntil": "2026-09-25",
"engagedForFiscalYear": 0,
"current": true
},
"description": "Auditor engaged successfully"
} Responses Status When 200Auditor engaged successfully
GET List external auditor engagements GET /credit-union/{reference}/auditors
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListExternalAuditorResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"firmName": "string",
"approvalReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"approvedUntil": "2026-09-25",
"engagedForFiscalYear": 0,
"current": true
}
],
"description": "Auditors retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default statusOptional
Example Response: GenericResponseListComplianceBreachResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"ruleCode": "string",
"observedValue": 0,
"threshold": 0,
"severity": "OBSERVE",
"status": "OPEN",
"detectedOn": "2026-09-25",
"remediationDueOn": "2026-09-25",
"remediationPlanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"clearedOn": "2026-09-25",
"escalatedAt": "2026-09-25T10:00:00Z",
"escalatedTo": "string",
"narrative": "string"
}
],
"description": "Breaches retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: AppointDelegateRequest · Response: GenericResponseDelegateResponse
curl Request Response
Copy 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"
}' Copy {
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"electionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"termStartsOn": "2026-09-25",
"termEndsOn": "2026-09-25"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"zoneReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"zoneCode": "string",
"electionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"termStartsOn": "2026-09-25",
"termEndsOn": "2026-09-25",
"status": "ACTIVE",
"votingWeight": 0
},
"description": "Delegate appointed successfully"
} Responses Status When 200Delegate appointed successfully
GET List delegates GET /credit-union/{reference}/delegates
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default statusOptional
Example Response: GenericResponseListDelegateResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"zoneReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"zoneCode": "string",
"electionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"termStartsOn": "2026-09-25",
"termEndsOn": "2026-09-25",
"status": "ACTIVE",
"votingWeight": 0
}
],
"description": "Delegates retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: RecordElectionRequest · Response: GenericResponseElectionResponse
curl Request Response
Copy 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
}' Copy {
"officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"meetingType": "GENERAL_MEETING",
"voterBasis": "MEMBERS",
"meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldOn": "2026-09-25",
"seatsContested": 0
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeCode": "CHAIRPERSON",
"meetingType": "GENERAL_MEETING",
"voterBasis": "MEMBERS",
"meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldOn": "2026-09-25",
"seatsContested": 0,
"eligibleVoterCount": 0,
"votesCast": 0,
"quorumMet": true,
"quorumRequired": 0,
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SCHEDULED",
"ratifiedOn": "2026-09-25",
"candidates": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"nominatedByPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"votes": 0,
"outcome": "ELECTED"
}
]
},
"description": "Election scheduled successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referenceelectionReference
Example Response: GenericResponseElectionResponse
curl Response
Copy 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" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeCode": "CHAIRPERSON",
"meetingType": "GENERAL_MEETING",
"voterBasis": "MEMBERS",
"meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldOn": "2026-09-25",
"seatsContested": 0,
"eligibleVoterCount": 0,
"votesCast": 0,
"quorumMet": true,
"quorumRequired": 0,
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SCHEDULED",
"ratifiedOn": "2026-09-25",
"candidates": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"nominatedByPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"votes": 0,
"outcome": "ELECTED"
}
]
},
"description": "Election ratified successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Name referenceelectionReference
Example Request body: RecordElectionResultRequest · Response: GenericResponseElectionResponse
curl Request Response
Copy 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
}
]
}' Copy {
"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
}
]
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeCode": "CHAIRPERSON",
"meetingType": "GENERAL_MEETING",
"voterBasis": "MEMBERS",
"meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldOn": "2026-09-25",
"seatsContested": 0,
"eligibleVoterCount": 0,
"votesCast": 0,
"quorumMet": true,
"quorumRequired": 0,
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SCHEDULED",
"ratifiedOn": "2026-09-25",
"candidates": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"nominatedByPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"votes": 0,
"outcome": "ELECTED"
}
]
},
"description": "Election result recorded successfully"
} Responses Status When 200Election result recorded successfully
GET List elections GET /credit-union/{reference}/elections
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListElectionResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"officeCode": "CHAIRPERSON",
"meetingType": "GENERAL_MEETING",
"voterBasis": "MEMBERS",
"meetingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldOn": "2026-09-25",
"seatsContested": 0,
"eligibleVoterCount": 0,
"votesCast": 0,
"quorumMet": true,
"quorumRequired": 0,
"minuteDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SCHEDULED",
"ratifiedOn": "2026-09-25",
"candidates": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"nominatedByPositionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"votes": 0,
"outcome": "ELECTED"
}
]
}
],
"description": "Elections retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: ElectoralZoneRequest · Response: GenericResponseElectoralZoneResponse
curl Request Response
Copy 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
}' Copy {
"zoneCode": "string",
"name": "string",
"branchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"delegateSeats": 0
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"zoneCode": "string",
"name": "string",
"branchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"delegateSeats": 0,
"memberCount": 0,
"delegateCount": 0,
"active": true
},
"description": "Electoral zone created successfully"
} Responses Status When 200Electoral zone created successfully
GET List electoral zones GET /credit-union/{reference}/electoral-zones
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListElectoralZoneResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"zoneCode": "string",
"name": "string",
"branchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"delegateSeats": 0,
"memberCount": 0,
"delegateCount": 0,
"active": true
}
],
"description": "Electoral zones retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Example Response: GenericResponseGovernanceComplianceResponse
curl Response
Copy 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" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"asOf": "2026-09-25",
"compliant": true,
"checksRun": 0,
"checksFailed": 0,
"checks": [
{
"code": "BOARD_SEATS_FILLED",
"outcome": "PASS",
"narrative": "string",
"observed": 0,
"expected": 0
}
]
},
"description": "Governance compliance retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencepositionReference
Example Response: GenericResponseMemberTierResponse
curl Response
Copy 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" Copy {
"data": {
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"tier": "BRONZE",
"evaluatedOn": "2026-09-25",
"nextTier": "BRONZE",
"missingForNextTier": [
"string"
],
"monthsOfMembership": 0,
"shareUnits": 0,
"depositBalance": 0,
"worstDelinquencyInWindow": "string"
},
"description": "Member tier retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Name referencepositionReferencezoneReference
Example Response: GenericResponseElectoralZoneResponse
curl Response
Copy 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" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"zoneCode": "string",
"name": "string",
"branchReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"delegateSeats": 0,
"memberCount": 0,
"delegateCount": 0,
"active": true
},
"description": "Member assigned to zone successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: UpsertPrudentialRuleRequest · Response: GenericResponsePrudentialRuleResponse
curl Request Response
Copy 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"
}' Copy {
"ruleCode": "SINGLE_BORROWER_LIMIT",
"comparator": "AT_LEAST",
"thresholdBasisPoints": 0,
"thresholdAmount": 0,
"enforcement": "BLOCK",
"effectiveFrom": "2026-09-25",
"disclosureText": "string"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"ruleCode": "SINGLE_BORROWER_LIMIT",
"comparator": "AT_LEAST",
"thresholdBasisPoints": 0,
"thresholdAmount": 0,
"enforcement": "BLOCK",
"countryCode": "string",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"disclosureText": "string"
},
"description": "Prudential rule set successfully"
} Responses Status When 200Prudential rule set successfully
GET Read the prudential rules in force GET /credit-union/{reference}/prudential-rules
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListPrudentialRuleResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"ruleCode": "SINGLE_BORROWER_LIMIT",
"comparator": "AT_LEAST",
"thresholdBasisPoints": 0,
"thresholdAmount": 0,
"enforcement": "BLOCK",
"countryCode": "string",
"effectiveFrom": "2026-09-25",
"effectiveTo": "2026-09-25",
"disclosureText": "string"
}
],
"description": "Prudential rules retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseQuorumResponse
curl Response
Copy 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" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"basis": "MEMBERS",
"eligibleVoterCount": 0,
"quorumRequired": 0,
"quorumBasisPoints": 0,
"delegateSystemEnabled": true,
"delegateSystemRequired": true,
"memberCount": 0,
"delegateCount": 0
},
"description": "Quorum retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Example Response: GenericResponseDelinquencyReportResponse
curl Response
Copy 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" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"asOf": "2026-09-25",
"totalPortfolio": 0,
"totalProvisions": 0,
"portfolioAtRiskThirtyBasisPoints": 0,
"portfolioAtRiskNinetyBasisPoints": 0,
"buckets": [
{
"bucket": "CURRENT",
"loanCount": 0,
"outstandingPrincipal": 0,
"provisionHeld": 0,
"provisionPercent": 0,
"shareOfPortfolioBasisPoints": 0
}
]
},
"description": "Delinquency report retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Example Response: GenericResponseExposureReportResponse
curl Response
Copy 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" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"asOf": "2026-09-25",
"coreCapital": 0,
"totalPortfolio": 0,
"singleBorrowers": [
{
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"ownOutstandingPrincipal": 0,
"guaranteeLiability": 0,
"totalExposure": 0,
"connectedPositionCount": 0,
"exposureBasisPointsOfCapital": 0,
"limitBasisPoints": 0,
"withinLimit": true,
"insider": true
}
],
"connectedGroups": [
{
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"ownOutstandingPrincipal": 0,
"guaranteeLiability": 0,
"totalExposure": 0,
"connectedPositionCount": 0,
"exposureBasisPointsOfCapital": 0,
"limitBasisPoints": 0,
"withinLimit": true,
"insider": true
}
],
"insiders": [
{
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"ownOutstandingPrincipal": 0,
"guaranteeLiability": 0,
"totalExposure": 0,
"connectedPositionCount": 0,
"exposureBasisPointsOfCapital": 0,
"limitBasisPoints": 0,
"withinLimit": true,
"insider": true
}
],
"aggregateInsiderExposure": 0,
"breachCount": 0
},
"description": "Exposure report retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Example Response: GenericResponsePrudentialDashboardResponse
curl Response
Copy 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" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"currencyCode": "string",
"asOf": "2026-09-25",
"snapshot": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"snapshotOn": "2026-09-25",
"currencyCode": "string",
"basis": "COMPUTED",
"totalAssets": 0,
"totalDeposits": 0,
"shareCapital": 0,
"coreCapital": 0,
"institutionalCapital": 0,
"liquidAssets": 0,
"shortTermLiabilities": 0,
"loanPortfolio": 0,
"provisions": 0,
"portfolioAtRiskThirty": 0,
"portfolioAtRiskNinety": 0,
"memberCount": 0,
"activeLoanCount": 0
},
"rules": [
{
"ruleCode": "SINGLE_BORROWER_LIMIT",
"enforcement": "BLOCK",
"satisfied": true,
"observedValue": 0,
"threshold": 0,
"headroom": 0,
"narrative": "string",
"measurable": true
}
],
"openBreaches": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"ruleCode": "string",
"observedValue": 0,
"threshold": 0,
"severity": "OBSERVE",
"status": "OPEN",
"detectedOn": "2026-09-25",
"remediationDueOn": "2026-09-25",
"remediationPlanReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"clearedOn": "2026-09-25",
"escalatedAt": "2026-09-25T10:00:00Z",
"escalatedTo": "string",
"narrative": "string"
}
],
"rulesEvaluated": 0,
"rulesBreached": 0,
"measured": true
},
"description": "Prudential dashboard retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Example Response: GenericResponseUnionSnapshotResponse
curl Response
Copy 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" Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"snapshotOn": "2026-09-25",
"currencyCode": "string",
"basis": "COMPUTED",
"totalAssets": 0,
"totalDeposits": 0,
"shareCapital": 0,
"coreCapital": 0,
"institutionalCapital": 0,
"liquidAssets": 0,
"shortTermLiabilities": 0,
"loanPortfolio": 0,
"provisions": 0,
"portfolioAtRiskThirty": 0,
"portfolioAtRiskNinety": 0,
"memberCount": 0,
"activeLoanCount": 0
},
"description": "Snapshot written successfully"
} Responses Status When 200Snapshot written successfully
GET List fit-and-proper records GET /credit-union/{reference}/suitability
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListSuitabilityRecordResponse
curl Response
Copy 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" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"officeCode": "CHAIRPERSON",
"assessmentType": "SELF_DECLARATION",
"outcome": "PASSED",
"assessedOn": "2026-09-25",
"expiresOn": "2026-09-25",
"documentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"assessorName": "string",
"current": true
}
],
"description": "Suitability records retrieved successfully"
} Responses Status When 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 Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: RecordSuitabilityRequest · Response: GenericResponseSuitabilityRecordResponse
curl Request Response
Copy 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"
}' Copy {
"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"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"heldByUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"memberNumber": "string",
"officeCode": "CHAIRPERSON",
"assessmentType": "SELF_DECLARATION",
"outcome": "PASSED",
"assessedOn": "2026-09-25",
"expiresOn": "2026-09-25",
"documentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"assessorName": "string",
"current": true
},
"description": "Suitability recorded successfully"
} Responses Status When 200Suitability recorded successfully