Purple Bank Ops API Documentation

Machine-readable OpenAPI 3.0 specification: https://marketplace.moveworks.com/api/purple-suite/bank-ops/openapi.json

The consolidated all-apps document at https://marketplace.moveworks.com/api/purple-suite/openapi.json can be narrowed to this app with ?apps=bank-ops, or combined with other apps comma-separated (e.g. ?apps=bank-ops,itsm).

Overview

BFSI bank operations source system: branch control tower (opening checklists, pending approvals, escalations, operational-risk register) and trade finance (letters of credit with milestones/bottlenecks, bank guarantees). Records carry a `country` (IN | AU | US); trade-finance records link to retail-banking `customer_id`. --- **Acting as a user (`X-PS-Impersonate-User`).** Every endpoint accepts an optional `X-PS-Impersonate-User` request header whose value is the email of the instance user to act as. The effective user resolves in this order: the header if present, else the instance's configured default MCP user, else none. User-scoped paths additionally accept the literal `me` in place of an email, and Graph-style apps also serve `/me/…` twins of their `/users/{email}/…` paths that resolve the same way. This header is honored by all operations but is intentionally omitted from each operation's parameter list so it is not surfaced as a per-tool argument by MCP clients; see the `ImpersonateUser` entry under `components.parameters`.

Endpoints

GET /api/purple-suite/bank-ops/branches

List retail bank branches

Physical branches of the Purple Bank Ops bank — name, city, region, country (IN | AU | US | GB | KR | DE), today's opening status and branch manager. Branch ids (BR-###) key this app's checklists, approvals, escalations and operational risks. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
statusquerystringnoFilter by status
regionquerystringnoFilter by region

Responses

200
Paginated list

application/json

  • data array

    array of:

    Branch

    • id string
    • country string
    • name string
    • city string
    • region string
    • manager string
    • status string
    • routing object
      • label string
      • code string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/branches

Create branch

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Branch

  • id string
  • country string
  • name string
  • city string
  • region string
  • manager string
  • status string
  • routing object
    • label string
    • code string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Branch

  • id string
  • country string
  • name string
  • city string
  • region string
  • manager string
  • status string
  • routing object
    • label string
    • code string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/branches/{id}

Get branch

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Branch

  • id string
  • country string
  • name string
  • city string
  • region string
  • manager string
  • status string
  • routing object
    • label string
    • code string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/branches/{id}

Delete branch

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/branches/{id}

Update branch

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Branch

  • id string
  • country string
  • name string
  • city string
  • region string
  • manager string
  • status string
  • routing object
    • label string
    • code string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Branch

  • id string
  • country string
  • name string
  • city string
  • region string
  • manager string
  • status string
  • routing object
    • label string
    • code string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/bank-ops/branches/{id}/control-tower

Get a branch's control-tower briefing

One call that assembles a single Purple Bank Ops branch's operational picture: today's opening checklist, approvals still pending, unresolved escalations, and operational risks due today. Prefer this over separately listing each collection when the question is about one branch (BR-### id).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Aggregated control tower

application/json

  • branch object

    Branch

    • id string
    • country string
    • name string
    • city string
    • region string
    • manager string
    • status string
    • routing object
      • label string
      • code string
    • createdAt string
    • updatedAt string
  • todays_checklist object

    BranchChecklist

    • id string
    • branch_id string
    • country string
    • date string
    • items array

      array of:

      • item_id string
      • label string
      • category string
      • status string
      • completed_by string
      • completed_at string
    • overall_status string
    • createdAt string
    • updatedAt string
  • pending_approvals array

    array of:

    BranchApproval

    • id string
    • branch_id string
    • country string
    • type string
    • requested_by string
    • customer_id string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • decision_reason string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • open_escalations array

    array of:

    Escalation

    • id string
    • branch_id string
    • country string
    • category string
    • severity string
    • status string
    • owner string
    • summary string
    • linked_ref stringOptional reference to a fraud case / complaint / incident id
    • raised_at string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • operational_risks_due_today array

    array of:

    OperationalRisk

    • id string
    • branch_id string
    • country string
    • risk_type string
    • severity string
    • status string
    • due_today boolean
    • mitigation_plan string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
404
Branch not found

GET /api/purple-suite/bank-ops/branch_checklists

List daily branch-opening checklists

Branch-opening checklists in Purple Bank Ops — one per branch per date, each holding line items (cash count, vault, ATM, …) in pending | done | blocked plus a rolled-up overall_status. Tick individual items off with the checklist complete-item tool rather than patching the record. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
branch_idquerystringnoFilter by branch id
overall_statusquerystringnoFilter by overall status

Responses

200
Paginated list

application/json

  • data array

    array of:

    BranchChecklist

    • id string
    • branch_id string
    • country string
    • date string
    • items array

      array of:

      • item_id string
      • label string
      • category string
      • status string
      • completed_by string
      • completed_at string
    • overall_status string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/branch_checklists

Create branch checklist

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/branch_checklists/{id}

Get branch checklist

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/branch_checklists/{id}

Delete branch checklist

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/branch_checklists/{id}

Update branch checklist

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/bank-ops/branch_checklists/{id}/complete-item

Complete (or block) a checklist item

Sets a checklist item to done | blocked | pending and recomputes overall_status.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • item_id string required
  • status string required
  • completed_by string

Responses

200
Updated

application/json

BranchChecklist

  • id string
  • branch_id string
  • country string
  • date string
  • items array

    array of:

    • item_id string
    • label string
    • category string
    • status string
    • completed_by string
    • completed_at string
  • overall_status string
  • createdAt string
  • updatedAt string
400
Invalid body
404
Not found

GET /api/purple-suite/bank-ops/branch_approvals

List branch approval requests

Decisions a branch needs from an approver in Purple Bank Ops — limit overrides, fee waivers, large withdrawals and loan exceptions, with the requester, amount and status (pending | approved | rejected). These are banking operational approvals, not IT or HR approvals (see the itsm and hrbp apps). Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
branch_idquerystringnoFilter by branch id
typequerystringnoFilter by type
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    BranchApproval

    • id string
    • branch_id string
    • country string
    • type string
    • requested_by string
    • customer_id string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • decision_reason string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/branch_approvals

Create branch approval

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/branch_approvals/{id}

Get branch approval

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/branch_approvals/{id}

Delete branch approval

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/branch_approvals/{id}

Update branch approval

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/bank-ops/branch_approvals/{id}/transition

Approve or reject a pending approval

Sets a pending approval to approved | rejected. Already-decided approvals cannot be changed.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • status string required
  • reason string

Responses

200
Updated

application/json

BranchApproval

  • id string
  • branch_id string
  • country string
  • type string
  • requested_by string
  • customer_id string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • decision_reason string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid status
404
Not found
422
Already decided

GET /api/purple-suite/bank-ops/escalations

List branch escalations

Operational issues raised by a branch in Purple Bank Ops — service, fraud, system_outage or compliance — with severity, owner, a summary, an optional linked fraud/complaint reference, and status open → acknowledged → resolved. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
branch_idquerystringnoFilter by branch id
categoryquerystringnoFilter by category
severityquerystringnoFilter by severity
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    Escalation

    • id string
    • branch_id string
    • country string
    • category string
    • severity string
    • status string
    • owner string
    • summary string
    • linked_ref stringOptional reference to a fraud case / complaint / incident id
    • raised_at string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/escalations

Create escalation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/escalations/{id}

Get escalation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/escalations/{id}

Delete escalation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/escalations/{id}

Update escalation

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/bank-ops/escalations/{id}/transition

Transition an escalation

Moves an escalation through open → acknowledged → resolved. Resolved is terminal.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • status string required
  • owner string

Responses

200
Updated

application/json

Escalation

  • id string
  • branch_id string
  • country string
  • category string
  • severity string
  • status string
  • owner string
  • summary string
  • linked_ref stringOptional reference to a fraud case / complaint / incident id
  • raised_at string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid status
404
Not found
422
Already resolved

GET /api/purple-suite/bank-ops/operational_risks

List the branch operational-risk register

Branch-level op-risk entries in Purple Bank Ops — cash_shortage, sla_breach, staffing or control_gap — with severity, mitigation plan, a due_today flag and status open → mitigating → closed. This is day-to-day branch risk, distinct from the enterprise risk-compliance app. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
branch_idquerystringnoFilter by branch id
risk_typequerystringnoFilter by risk type
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    OperationalRisk

    • id string
    • branch_id string
    • country string
    • risk_type string
    • severity string
    • status string
    • due_today boolean
    • mitigation_plan string
    • status_history array

      array of:

      • status string
      • note string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/operational_risks

Create operational risk

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/operational_risks/{id}

Get operational risk

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/operational_risks/{id}

Delete operational risk

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/operational_risks/{id}

Update operational risk

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/bank-ops/operational_risks/{id}/transition

Transition an operational risk

Moves a risk through open → mitigating → closed. Closing clears due_today. Closed is terminal.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • status string required
  • mitigation_plan string

Responses

200
Updated

application/json

OperationalRisk

  • id string
  • branch_id string
  • country string
  • risk_type string
  • severity string
  • status string
  • due_today boolean
  • mitigation_plan string
  • status_history array

    array of:

    • status string
    • note string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid status
404
Not found
422
Already closed

GET /api/purple-suite/bank-ops/letters_of_credit

List trade-finance letters of credit

Letters of credit issued for a bank customer in Purple Bank Ops — applicant, beneficiary, amount, incoterm, expiry — each carrying a milestone chain (application → issuance → shipment → doc_presentation → payment) with bottleneck notes, and a status from issued through settled. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
customer_idquerystringnoFilter by customer id
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    LetterOfCredit

    • id string
    • customer_id string
    • country string
    • applicant string
    • beneficiary string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • incoterm string
    • status string
    • expiry_date string
    • milestones array

      array of:

      • milestone string
      • status string
      • date string
      • bottleneck_note string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/letters_of_credit

Create letter of credit

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/letters_of_credit/{id}

Get letter of credit

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/letters_of_credit/{id}

Delete letter of credit

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/letters_of_credit/{id}

Update letter of credit

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/bank-ops/letters_of_credit/{id}/advance-milestone

Advance a letter-of-credit milestone

Updates a milestone (application | issuance | shipment | doc_presentation | payment), optionally recording a bottleneck_note, and optionally advances the LC status. A settled LC is terminal.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • milestone string required
  • status string
  • bottleneck_note string
  • lc_status string

Responses

200
Updated

application/json

LetterOfCredit

  • id string
  • customer_id string
  • country string
  • applicant string
  • beneficiary string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • incoterm string
  • status string
  • expiry_date string
  • milestones array

    array of:

    • milestone string
    • status string
    • date string
    • bottleneck_note string
  • createdAt string
  • updatedAt string
400
Invalid milestone/status
404
Not found
422
LC already settled

GET /api/purple-suite/bank-ops/bank_guarantees

List trade-finance bank guarantees

Guarantees the bank has issued on behalf of a customer in Purple Bank Ops — performance, financial or bid_bond — with amount, expiry date and status (active | invoked | expired | released). Guarantees back a customer's obligation; letters of credit settle a trade shipment. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
limitqueryintegernoMax items per page (default 50)
cursorquerystringnoPass the previous response's nextCursor to fetch the next page
$filterquerystringnoOData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01".
$selectquerystringnoComma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included.
$orderbyquerystringnoSort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last.
$searchquerystringnoFree-text, case-insensitive substring match across the resource's searchable fields.
$topqueryintegernoMaximum number of items to return (page size).
$skipqueryintegernoNumber of matching items to skip before returning results (offset paging). Combine with $top.
$countquerybooleannoWhen true, include @odata.count (total matches after $filter/$search, before paging) in the response.
countryquerystringnoFilter to a single country (IN | AU | US)
customer_idquerystringnoFilter by customer id
typequerystringnoFilter by type
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    BankGuarantee

    • id string
    • customer_id string
    • country string
    • type string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • expiry_date string
    • createdAt string
    • updatedAt string
  • nextCursor string
  • total integer

POST /api/purple-suite/bank-ops/bank_guarantees

Create bank guarantee

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

BankGuarantee

  • id string
  • customer_id string
  • country string
  • type string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • expiry_date string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

BankGuarantee

  • id string
  • customer_id string
  • country string
  • type string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • expiry_date string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/bank-ops/bank_guarantees/{id}

Get bank guarantee

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

BankGuarantee

  • id string
  • customer_id string
  • country string
  • type string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • expiry_date string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/bank-ops/bank_guarantees/{id}

Delete bank guarantee

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/bank-ops/bank_guarantees/{id}

Update bank guarantee

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

BankGuarantee

  • id string
  • customer_id string
  • country string
  • type string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • expiry_date string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

BankGuarantee

  • id string
  • customer_id string
  • country string
  • type string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • expiry_date string
  • createdAt string
  • updatedAt string
404
Not found