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
Endpoints
GET /api/purple-suite/bank-ops/branches
List retail bank branches
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
status | query | string | no | Filter by status |
region | query | string | no | Filter by region |
Responses
200- Paginated list
application/jsondataarrayarray of:
Branchidstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/branches
Create branch
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Branch
idstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
Responses
201- Created
application/jsonBranchidstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/branches/{id}
Get branch
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonBranchidstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/branches/{id}
Delete branch
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/branches/{id}
Update branch
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Branch
idstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonBranchidstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/bank-ops/branches/{id}/control-tower
Get a branch's control-tower briefing
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Aggregated control tower
application/jsonbranchobjectBranchidstringcountrystringnamestringcitystringregionstringmanagerstringstatusstringroutingobjectlabelstringcodestring
createdAtstringupdatedAtstring
todays_checklistobjectBranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
pending_approvalsarrayarray of:
BranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
open_escalationsarrayarray of:
Escalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
operational_risks_due_todayarrayarray of:
OperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Branch not found
GET /api/purple-suite/bank-ops/branch_checklists
List daily branch-opening checklists
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
branch_id | query | string | no | Filter by branch id |
overall_status | query | string | no | Filter by overall status |
Responses
200- Paginated list
application/jsondataarrayarray of:
BranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/branch_checklists
Create branch checklist
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
BranchChecklist
idstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonBranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/branch_checklists/{id}
Get branch checklist
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonBranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/branch_checklists/{id}
Delete branch checklist
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/branch_checklists/{id}
Update branch checklist
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
BranchChecklist
idstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonBranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
404- Not found
POST /api/purple-suite/bank-ops/branch_checklists/{id}/complete-item
Complete (or block) a checklist item
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json — required
item_idstring requiredstatusstring requiredcompleted_bystring
Responses
200- Updated
application/jsonBranchChecklistidstringbranch_idstringcountrystringdatestringitemsarrayarray of:
item_idstringlabelstringcategorystringstatusstringcompleted_bystringcompleted_atstring
overall_statusstringcreatedAtstringupdatedAtstring
400- Invalid body
404- Not found
GET /api/purple-suite/bank-ops/branch_approvals
List branch approval requests
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
branch_id | query | string | no | Filter by branch id |
type | query | string | no | Filter by type |
status | query | string | no | Filter by status |
Responses
200- Paginated list
application/jsondataarrayarray of:
BranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/branch_approvals
Create branch approval
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
BranchApproval
idstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
201- Created
application/jsonBranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/branch_approvals/{id}
Get branch approval
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonBranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/branch_approvals/{id}
Delete branch approval
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/branch_approvals/{id}
Update branch approval
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
BranchApproval
idstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonBranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
POST /api/purple-suite/bank-ops/branch_approvals/{id}/transition
Approve or reject a pending approval
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json — required
statusstring requiredreasonstring
Responses
200- Updated
application/jsonBranchApprovalidstringbranch_idstringcountrystringtypestringrequested_bystringcustomer_idstringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringdecision_reasonstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
400- Invalid status
404- Not found
422- Already decided
GET /api/purple-suite/bank-ops/escalations
List branch escalations
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
branch_id | query | string | no | Filter by branch id |
category | query | string | no | Filter by category |
severity | query | string | no | Filter by severity |
status | query | string | no | Filter by status |
Responses
200- Paginated list
application/jsondataarrayarray of:
Escalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/escalations
Create escalation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Escalation
idstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
201- Created
application/jsonEscalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/escalations/{id}
Get escalation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonEscalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/escalations/{id}
Delete escalation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/escalations/{id}
Update escalation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Escalation
idstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonEscalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
POST /api/purple-suite/bank-ops/escalations/{id}/transition
Transition an escalation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json — required
statusstring requiredownerstring
Responses
200- Updated
application/jsonEscalationidstringbranch_idstringcountrystringcategorystringseveritystringstatusstringownerstringsummarystringlinked_refstring — Optional reference to a fraud case / complaint / incident idraised_atstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
400- Invalid status
404- Not found
422- Already resolved
GET /api/purple-suite/bank-ops/operational_risks
List the branch operational-risk register
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
branch_id | query | string | no | Filter by branch id |
risk_type | query | string | no | Filter by risk type |
status | query | string | no | Filter by status |
Responses
200- Paginated list
application/jsondataarrayarray of:
OperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/operational_risks
Create operational risk
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
OperationalRisk
idstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
201- Created
application/jsonOperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/operational_risks/{id}
Get operational risk
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonOperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/operational_risks/{id}
Delete operational risk
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/operational_risks/{id}
Update operational risk
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
OperationalRisk
idstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonOperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
404- Not found
POST /api/purple-suite/bank-ops/operational_risks/{id}/transition
Transition an operational risk
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json — required
statusstring requiredmitigation_planstring
Responses
200- Updated
application/jsonOperationalRiskidstringbranch_idstringcountrystringrisk_typestringseveritystringstatusstringdue_todaybooleanmitigation_planstringstatus_historyarrayarray of:
statusstringnotestringrecorded_atstring
createdAtstringupdatedAtstring
400- Invalid status
404- Not found
422- Already closed
GET /api/purple-suite/bank-ops/letters_of_credit
List trade-finance letters of credit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
customer_id | query | string | no | Filter by customer id |
status | query | string | no | Filter by status |
Responses
200- Paginated list
application/jsondataarrayarray of:
LetterOfCreditidstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/letters_of_credit
Create letter of credit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
LetterOfCredit
idstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
Responses
201- Created
application/jsonLetterOfCreditidstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/letters_of_credit/{id}
Get letter of credit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonLetterOfCreditidstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/letters_of_credit/{id}
Delete letter of credit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/letters_of_credit/{id}
Update letter of credit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
LetterOfCredit
idstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonLetterOfCreditidstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
404- Not found
POST /api/purple-suite/bank-ops/letters_of_credit/{id}/advance-milestone
Advance a letter-of-credit milestone
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json — required
milestonestring requiredstatusstringbottleneck_notestringlc_statusstring
Responses
200- Updated
application/jsonLetterOfCreditidstringcustomer_idstringcountrystringapplicantstringbeneficiarystringamountobjectamountnumbercurrencystringamount_formattedstring
incotermstringstatusstringexpiry_datestringmilestonesarrayarray of:
milestonestringstatusstringdatestringbottleneck_notestring
createdAtstringupdatedAtstring
400- Invalid milestone/status
404- Not found
422- LC already settled
GET /api/purple-suite/bank-ops/bank_guarantees
List trade-finance bank guarantees
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Max items per page (default 50) |
cursor | query | string | no | Pass the previous response's nextCursor to fetch the next page |
$filter | query | string | no | OData 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". |
$select | query | string | no | Comma-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. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
country | query | string | no | Filter to a single country (IN | AU | US) |
customer_id | query | string | no | Filter by customer id |
type | query | string | no | Filter by type |
status | query | string | no | Filter by status |
Responses
200- Paginated list
application/jsondataarrayarray of:
BankGuaranteeidstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
nextCursorstringtotalinteger
POST /api/purple-suite/bank-ops/bank_guarantees
Create bank guarantee
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
BankGuarantee
idstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonBankGuaranteeidstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
GET /api/purple-suite/bank-ops/bank_guarantees/{id}
Get bank guarantee
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonBankGuaranteeidstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/bank-ops/bank_guarantees/{id}
Delete bank guarantee
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessbooleanidstring
404- Not found
PATCH /api/purple-suite/bank-ops/bank_guarantees/{id}
Update bank guarantee
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
BankGuarantee
idstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonBankGuaranteeidstringcustomer_idstringcountrystringtypestringamountobjectamountnumbercurrencystringamount_formattedstring
statusstringexpiry_datestringcreatedAtstringupdatedAtstring
404- Not found