Purple Retail Banking API Documentation

Machine-readable OpenAPI 3.0 specification: https://marketplace.moveworks.com/api/purple-suite/retail-banking/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=retail-banking, or combined with other apps comma-separated (e.g. ?apps=retail-banking,itsm).

Overview

Core retail banking source system: customers, accounts, transactions, cards, products, loans & applications, plus the relationship/servicing layer (interactions, opportunities, complaints). Every record carries a `country` (IN | AU | US) and self-describing money; narrow any list with the `country` filter. --- **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/retail-banking/customers

List banking customers

Purple Retail Banking customers are the retail parties (individuals and SMEs) who hold the accounts, cards and loans in this bank, each with a segment, KYC status, risk rating, relationship manager and country (IN | AU | US). Not CRM accounts or contacts (B2B sales) and not internal employees. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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)
segmentquerystringnoFilter by customer segment
kyc_statusquerystringnoFilter by KYC status
risk_ratingquerystringnoFilter by risk rating
relationship_managerquerystringnoFilter by relationship manager email

Responses

200
Paginated list

application/json

  • data array

    array of:

    Customer

    • id string
    • country string
    • firstName string
    • lastName string
    • email string
    • phone string
    • address string
    • city string
    • segment string
    • kyc_status string
    • risk_rating string
    • relationship_manager string
    • home_branch_id string
    • tax_id object
      • type string
      • masked string
    • credit_score object
      • system string
      • value integer
    • onboarded_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/customers

Onboard customer

Create a new retail banking customer record. Seldom the right move during a servicing conversation: look the person up with the list tool first, since duplicate customers orphan accounts and cards.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Customer

  • id string
  • country string
  • firstName string
  • lastName string
  • email string
  • phone string
  • address string
  • city string
  • segment string
  • kyc_status string
  • risk_rating string
  • relationship_manager string
  • home_branch_id string
  • tax_id object
    • type string
    • masked string
  • credit_score object
    • system string
    • value integer
  • onboarded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Customer

  • id string
  • country string
  • firstName string
  • lastName string
  • email string
  • phone string
  • address string
  • city string
  • segment string
  • kyc_status string
  • risk_rating string
  • relationship_manager string
  • home_branch_id string
  • tax_id object
    • type string
    • masked string
  • credit_score object
    • system string
    • value integer
  • onboarded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/customers/{id}

Get banking customer

Fetch one banking customer by id (e.g. CUST-0001) with segment, KYC status, risk rating, credit score, relationship manager and home branch. To get their accounts, cards, loans and open complaints in a single call, use the customer portfolio tool instead.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Customer

  • id string
  • country string
  • firstName string
  • lastName string
  • email string
  • phone string
  • address string
  • city string
  • segment string
  • kyc_status string
  • risk_rating string
  • relationship_manager string
  • home_branch_id string
  • tax_id object
    • type string
    • masked string
  • credit_score object
    • system string
    • value integer
  • onboarded_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/customers/{id}

Delete banking customer

Permanently delete a banking customer record. Destructive and irreversible, and it orphans their accounts, cards, loans and complaints — effectively never correct in a servicing flow.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/customers/{id}

Update banking customer

Partially update a banking customer's profile — contact details, address, segment, relationship manager or risk rating. KYC remediation and watchlist handling live in Purple Risk & Compliance, not here.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Customer

  • id string
  • country string
  • firstName string
  • lastName string
  • email string
  • phone string
  • address string
  • city string
  • segment string
  • kyc_status string
  • risk_rating string
  • relationship_manager string
  • home_branch_id string
  • tax_id object
    • type string
    • masked string
  • credit_score object
    • system string
    • value integer
  • onboarded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Customer

  • id string
  • country string
  • firstName string
  • lastName string
  • email string
  • phone string
  • address string
  • city string
  • segment string
  • kyc_status string
  • risk_rating string
  • relationship_manager string
  • home_branch_id string
  • tax_id object
    • type string
    • masked string
  • credit_score object
    • system string
    • value integer
  • onboarded_at string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/customers/{id}/portfolio

Get customer 360 portfolio

One-call briefing on a single banking customer: the customer record plus their accounts, cards, loans, opportunities, recent interactions and open complaints. Prefer this over five separate list calls whenever the question is about one named customer.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Aggregated customer portfolio

application/json

  • customer object

    Customer

    • id string
    • country string
    • firstName string
    • lastName string
    • email string
    • phone string
    • address string
    • city string
    • segment string
    • kyc_status string
    • risk_rating string
    • relationship_manager string
    • home_branch_id string
    • tax_id object
      • type string
      • masked string
    • credit_score object
      • system string
      • value integer
    • onboarded_at string
    • createdAt string
    • updatedAt string
  • accounts array

    array of:

    Account

    • id string
    • customer_id string
    • country string
    • type string
    • currency string
    • balance object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • freeze_reason string
    • branch_id string
    • routing object
      • label string
      • code string
      • accountNumber string
    • status_history array

      array of:

      • status string
      • reason string
      • recorded_at string
    • opened_at string
    • createdAt string
    • updatedAt string
  • cards array

    array of:

    Card

    • id string
    • customer_id string
    • account_id string
    • country string
    • network string
    • type string
    • status string
    • last_four string
    • block_reason string
    • createdAt string
    • updatedAt string
  • loans array

    array of:

    Loan

    • id string
    • customer_id string
    • product_id string
    • country string
    • type string
    • principal object
      • amount number
      • currency string
      • amount_formatted string
    • outstanding object
      • amount number
      • currency string
      • amount_formatted string
    • interest_rate number
    • term_months integer
    • status string
    • dpd integerDays past due
    • delinquency_bucket string
    • next_due_date string
    • repayment_schedule array

      array of:

      • installment_no integer
      • due_date string
      • amount object
        • amount number
        • currency string
        • amount_formatted string
      • status string
      • paid_at string
    • createdAt string
    • updatedAt string
  • opportunities array

    array of:

    Opportunity

    • id string
    • customer_id string
    • country string
    • name string
    • product_category string
    • stage string
    • recommendation_reason string
    • value object
      • amount number
      • currency string
      • amount_formatted string
    • createdAt string
    • updatedAt string
  • recent_interactions array

    array of:

    Interaction

    • id string
    • customer_id string
    • country string
    • type string
    • subject string
    • summary string
    • rm string
    • occurred_at string
    • createdAt string
    • updatedAt string
  • open_complaints array

    array of:

    Complaint

    • id string
    • customer_id string
    • account_id string
    • country string
    • category string
    • channel string
    • title string
    • status string
    • sla_policy_id string
    • sla_due string
    • known_issue_id string
    • resolution_notes string
    • status_history array

      array of:

      • status string
      • reason string
      • recorded_at string
    • createdAt string
    • updatedAt string
404
Customer not found

GET /api/purple-suite/retail-banking/bank_accounts

List bank accounts

Deposit and current accounts held by Purple Retail Banking customers, with a self-describing balance, status (active | dormant | frozen | closed), branch and routing details. These are real bank accounts, not CRM accounts (companies) or ERP ledger accounts. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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 account type
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    Account

    • id string
    • customer_id string
    • country string
    • type string
    • currency string
    • balance object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • freeze_reason string
    • branch_id string
    • routing object
      • label string
      • code string
      • accountNumber string
    • status_history array

      array of:

      • status string
      • reason string
      • recorded_at string
    • opened_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/bank_accounts

Open bank account

Create a new deposit or current account for an existing banking customer. Use this to open an account, not to record a payment into one.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/bank_accounts/{id}

Get bank account

Fetch one bank account by id (e.g. ACCT-0001) with its balance, status, freeze_reason, routing details and status_history — the record to check before freezing or explaining a decline.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/bank_accounts/{id}

Delete bank account

Permanently delete a bank account record. Destructive and irreversible, and it strands the account's transactions and cards. To stop activity, freeze it; to close it properly, set status to 'closed'.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/bank_accounts/{id}

Update bank account

Partially update an account's mutable fields such as type, branch or routing. Do not change the status field here to stop activity: the freeze and unfreeze tools enforce the transition and write status_history.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/retail-banking/bank_accounts/{id}/freeze

Freeze a bank account

Stop all activity on a bank account: sets status to 'frozen' and records the reason in status_history. Use it for suspected fraud or a customer request covering the whole account; to stop just one card use the card block tool instead. Fails with 422 if the account is already frozen or closed. Reversible via unfreeze.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • reason string

Responses

200
Frozen

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string
404
Not found
422
Invalid state transition

POST /api/purple-suite/retail-banking/bank_accounts/{id}/unfreeze

Unfreeze a bank account

Return a frozen bank account to 'active' and record why, e.g. once a fraud review clears. Fails with 422 if the account is not currently frozen.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • reason string

Responses

200
Unfrozen

application/json

Account

  • id string
  • customer_id string
  • country string
  • type string
  • currency string
  • balance object
    • amount number
    • currency string
    • amount_formatted string
  • status string
  • freeze_reason string
  • branch_id string
  • routing object
    • label string
    • code string
    • accountNumber string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • opened_at string
  • createdAt string
  • updatedAt string
404
Not found
422
Invalid state transition

GET /api/purple-suite/retail-banking/transactions

List account transactions

Money movement on Purple Retail Banking accounts — card, UPI and transfer entries with a self-describing amount, direction (debit | credit), channel, counterparty, status and an is_flagged marker. Customer banking activity, not ERP invoices or employee expenses. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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)
account_idquerystringnoFilter by account id
directionquerystringnoFilter by direction
channelquerystringnoFilter by channel
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    Transaction

    • id string
    • account_id string
    • customer_id string
    • country string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • direction string
    • channel string
    • counterparty string
    • status string
    • is_flagged boolean
    • posted_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/transactions

Create transaction

Write a transaction record against an account. This is a source-system record only: it does not move money and does not recompute the account balance.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Transaction

  • id string
  • account_id string
  • customer_id string
  • country string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • direction string
  • channel string
  • counterparty string
  • status string
  • is_flagged boolean
  • posted_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Transaction

  • id string
  • account_id string
  • customer_id string
  • country string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • direction string
  • channel string
  • counterparty string
  • status string
  • is_flagged boolean
  • posted_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/transactions/{id}

Get transaction

Fetch one transaction by id (e.g. TXN-00001) with its amount, direction, channel, counterparty and status — the entry to cite when a customer queries or disputes a debit.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Transaction

  • id string
  • account_id string
  • customer_id string
  • country string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • direction string
  • channel string
  • counterparty string
  • status string
  • is_flagged boolean
  • posted_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/transactions/{id}

Delete transaction

Permanently delete a transaction record. Destructive and irreversible, and it breaks the account's audit trail — model a real reversal by setting status to 'reversed' instead.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/transactions/{id}

Update transaction

Partially update a transaction, typically to mark it disputed or reversed, or to set is_flagged during a fraud review. The fraud alert and case records themselves live in Purple Risk & Compliance.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Transaction

  • id string
  • account_id string
  • customer_id string
  • country string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • direction string
  • channel string
  • counterparty string
  • status string
  • is_flagged boolean
  • posted_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Transaction

  • id string
  • account_id string
  • customer_id string
  • country string
  • amount object
    • amount number
    • currency string
    • amount_formatted string
  • direction string
  • channel string
  • counterparty string
  • status string
  • is_flagged boolean
  • posted_at string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/cards

List cards

Debit and credit cards issued to Purple Retail Banking customers, with network, type, masked last_four, the account they draw on, limits and status (active | blocked | expired). Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
account_idquerystringnoFilter by account id
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    Card

    • id string
    • customer_id string
    • account_id string
    • country string
    • network string
    • type string
    • status string
    • last_four string
    • block_reason string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/cards

Issue card

Issue a new card to a banking customer and link it to one of their accounts. For a lost card, block the existing card first rather than only issuing a replacement.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/cards/{id}

Get card

Fetch one card by id with its network, type, last_four, linked account, limits and status — the record to check before blocking or explaining a declined payment.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/cards/{id}

Delete card

Permanently delete a card record. Destructive and irreversible — for a lost, stolen or compromised card, block it instead, which is reversible and preserves history.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/cards/{id}

Update card

Partially update card attributes such as limits, linked account or expiry. To stop a card, use the block tool rather than patching status: it enforces the transition and is reversible.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/retail-banking/cards/{id}/block

Block a card

Stop a single card by setting its status to 'blocked' — the usual response to lost, stolen or compromised plastic. Narrower than freezing the account: the account and the customer's other cards keep working. Fails with 422 if the card is already blocked or expired. Reversible via unblock.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json

  • reason string

Responses

200
Blocked

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string
404
Not found
422
Invalid state transition

POST /api/purple-suite/retail-banking/cards/{id}/unblock

Unblock a card

Return a blocked card to 'active', e.g. after the customer finds it or a fraud review clears. Fails with 422 if the card is not currently blocked.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Unblocked

application/json

Card

  • id string
  • customer_id string
  • account_id string
  • country string
  • network string
  • type string
  • status string
  • last_four string
  • block_reason string
  • createdAt string
  • updatedAt string
404
Not found
422
Invalid state transition

GET /api/purple-suite/retail-banking/products

List banking products

The bank's retail product catalogue (deposit | lending | card | investment | insurance) with interest rate, min/max amounts, eligibility summary and per-country availability. Catalogue definitions — nothing here is held by a specific customer. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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)
categoryquerystringnoFilter by category
activequerystringnoFilter by active flag

Responses

200
Paginated list

application/json

  • data array

    array of:

    Product

    • id string
    • country string
    • name string
    • category string
    • interest_rate number
    • min_amount object
      • amount number
      • currency string
      • amount_formatted string
    • eligibility_summary string
    • active boolean
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/products

Create banking product

Add a product to the retail banking catalogue. This is not how a customer gets a product: that means opening an account, issuing a card, or booking a loan.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Product

  • id string
  • country string
  • name string
  • category string
  • interest_rate number
  • min_amount object
    • amount number
    • currency string
    • amount_formatted string
  • eligibility_summary string
  • active boolean
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Product

  • id string
  • country string
  • name string
  • category string
  • interest_rate number
  • min_amount object
    • amount number
    • currency string
    • amount_formatted string
  • eligibility_summary string
  • active boolean
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/products/{id}

Get banking product

Fetch one catalogue product by id with its rate, amount limits, eligibility summary and country availability — the source for 'what does this product require' answers.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Product

  • id string
  • country string
  • name string
  • category string
  • interest_rate number
  • min_amount object
    • amount number
    • currency string
    • amount_formatted string
  • eligibility_summary string
  • active boolean
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/products/{id}

Delete banking product

Permanently delete a product from the catalogue. Destructive — if customers hold it, set active=false instead so existing accounts and loans still resolve.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/products/{id}

Update banking product

Update a catalogue product's commercial terms — rate, limits, eligibility text — or clear its active flag when the product is withdrawn.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Product

  • id string
  • country string
  • name string
  • category string
  • interest_rate number
  • min_amount object
    • amount number
    • currency string
    • amount_formatted string
  • eligibility_summary string
  • active boolean
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Product

  • id string
  • country string
  • name string
  • category string
  • interest_rate number
  • min_amount object
    • amount number
    • currency string
    • amount_formatted string
  • eligibility_summary string
  • active boolean
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/loans

List loans

Disbursed loans held by Purple Retail Banking customers, with principal and outstanding money, EMI, status (active | delinquent | closed | written_off), days past due and delinquency bucket. These are funded loans; applications still in origination are loan applications. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
delinquency_bucketquerystringnoFilter by delinquency bucket

Responses

200
Paginated list

application/json

  • data array

    array of:

    Loan

    • id string
    • customer_id string
    • product_id string
    • country string
    • type string
    • principal object
      • amount number
      • currency string
      • amount_formatted string
    • outstanding object
      • amount number
      • currency string
      • amount_formatted string
    • interest_rate number
    • term_months integer
    • status string
    • dpd integerDays past due
    • delinquency_bucket string
    • next_due_date string
    • repayment_schedule array

      array of:

      • installment_no integer
      • due_date string
      • amount object
        • amount number
        • currency string
        • amount_formatted string
      • status string
      • paid_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/loans

Create loan

Book a loan record for a customer. In the normal flow a loan comes into existence by disbursing an approved loan application, so check that pipeline before creating one directly.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Loan

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • principal object
    • amount number
    • currency string
    • amount_formatted string
  • outstanding object
    • amount number
    • currency string
    • amount_formatted string
  • interest_rate number
  • term_months integer
  • status string
  • dpd integerDays past due
  • delinquency_bucket string
  • next_due_date string
  • repayment_schedule array

    array of:

    • installment_no integer
    • due_date string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • paid_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Loan

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • principal object
    • amount number
    • currency string
    • amount_formatted string
  • outstanding object
    • amount number
    • currency string
    • amount_formatted string
  • interest_rate number
  • term_months integer
  • status string
  • dpd integerDays past due
  • delinquency_bucket string
  • next_due_date string
  • repayment_schedule array

    array of:

    • installment_no integer
    • due_date string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • paid_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/loans/{id}

Get loan

Fetch one loan by id with its outstanding balance, EMI, dpd and delinquency bucket — the record behind payoff, arrears and collections questions.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Loan

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • principal object
    • amount number
    • currency string
    • amount_formatted string
  • outstanding object
    • amount number
    • currency string
    • amount_formatted string
  • interest_rate number
  • term_months integer
  • status string
  • dpd integerDays past due
  • delinquency_bucket string
  • next_due_date string
  • repayment_schedule array

    array of:

    • installment_no integer
    • due_date string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • paid_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/loans/{id}

Delete loan

Permanently delete a loan record. Destructive and irreversible — a settled loan should be status 'closed' and an unrecoverable one 'written_off' so the credit history survives.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/loans/{id}

Update loan

Partially update a loan — record repayment progress, refresh dpd and delinquency bucket, or change status as it cures or deteriorates.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Loan

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • principal object
    • amount number
    • currency string
    • amount_formatted string
  • outstanding object
    • amount number
    • currency string
    • amount_formatted string
  • interest_rate number
  • term_months integer
  • status string
  • dpd integerDays past due
  • delinquency_bucket string
  • next_due_date string
  • repayment_schedule array

    array of:

    • installment_no integer
    • due_date string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • paid_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Loan

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • principal object
    • amount number
    • currency string
    • amount_formatted string
  • outstanding object
    • amount number
    • currency string
    • amount_formatted string
  • interest_rate number
  • term_months integer
  • status string
  • dpd integerDays past due
  • delinquency_bucket string
  • next_due_date string
  • repayment_schedule array

    array of:

    • installment_no integer
    • due_date string
    • amount object
      • amount number
      • currency string
      • amount_formatted string
    • status string
    • paid_at string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/loan_applications

List loan applications

Loan applications in origination, moving through submitted → docs_pending → eligibility → underwriting → approved → disbursed (or rejected), with requested amount, eligibility score and a required-document checklist. Nothing here is money lent yet — that is loans. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
stagequerystringnoFilter by stage

Responses

200
Paginated list

application/json

  • data array

    array of:

    LoanApplication

    • id string
    • customer_id string
    • product_id string
    • country string
    • type string
    • requested_amount object
      • amount number
      • currency string
      • amount_formatted string
    • purpose string
    • stage string
    • required_documents array

      array of:

      • doc_type string
      • status string
    • eligibility_score integer
    • decision_reason string
    • assigned_rm string
    • stage_history array

      array of:

      • stage string
      • reason string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/loan_applications

Submit loan application

Submit a new loan application for a customer against a lending product. It enters at the start of the pipeline; move it forward with the transition tool rather than by creating further applications.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/loan_applications/{id}

Get loan application

Fetch one loan application by id with its current stage, eligibility score and per-document status — the check to run before advancing it or chasing paperwork.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/loan_applications/{id}

Delete loan application

Permanently delete a loan application. Destructive and irreversible — a declined case should be transitioned to 'rejected' so the decision and its reason survive.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/loan_applications/{id}

Update loan application

Partially update application details such as requested amount, product or assigned underwriter. Do not set the stage field here: the transition tool enforces the pipeline, and document status has its own tool.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string
404
Not found

POST /api/purple-suite/retail-banking/loan_applications/{id}/documents

Set loan application document status

Mark one required document on a loan application as missing, received or verified, adding it to the checklist if it is not already listed. This is the paperwork step that clears the docs_pending stage; it does not itself advance the application — use the transition tool for that.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • doc_type string required
  • status string required

Responses

200
Updated

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid body
404
Not found

POST /api/purple-suite/retail-banking/loan_applications/{id}/transition

Advance a loan application

Move a loan application along the origination pipeline: submitted → docs_pending → eligibility → underwriting → approved → disbursed, with 'rejected' allowed from any pre-decision stage. Use this rather than patching the stage field: skipping or reversing stages is rejected with 422, and 'rejected' and 'disbursed' are terminal credit decisions that cannot be undone.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • stage string required
  • reason string

Responses

200
Updated

application/json

LoanApplication

  • id string
  • customer_id string
  • product_id string
  • country string
  • type string
  • requested_amount object
    • amount number
    • currency string
    • amount_formatted string
  • purpose string
  • stage string
  • required_documents array

    array of:

    • doc_type string
    • status string
  • eligibility_score integer
  • decision_reason string
  • assigned_rm string
  • stage_history array

    array of:

    • stage string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid stage
404
Not found
422
Invalid state transition

GET /api/purple-suite/retail-banking/interactions

List customer interactions

Servicing touchpoints logged with a banking customer — calls, meetings, notes and branch visits — with subject, channel and who handled it. Relationship history inside the bank; distinct from CRM activities (B2B sales) and from complaints. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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

Responses

200
Paginated list

application/json

  • data array

    array of:

    Interaction

    • id string
    • customer_id string
    • country string
    • type string
    • subject string
    • summary string
    • rm string
    • occurred_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/interactions

Log customer interaction

Log a servicing touchpoint (call, meeting, note or visit) against a banking customer. Use this for a contact record; if the customer is raising a grievance, log a complaint instead.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Interaction

  • id string
  • customer_id string
  • country string
  • type string
  • subject string
  • summary string
  • rm string
  • occurred_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Interaction

  • id string
  • customer_id string
  • country string
  • type string
  • subject string
  • summary string
  • rm string
  • occurred_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/interactions/{id}

Get customer interaction

Fetch one logged interaction by id with its type, subject, notes, handler and timestamp.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Interaction

  • id string
  • customer_id string
  • country string
  • type string
  • subject string
  • summary string
  • rm string
  • occurred_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/interactions/{id}

Delete customer interaction

Permanently delete a logged interaction, removing it from the customer's contact history. Destructive and irreversible.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/interactions/{id}

Update customer interaction

Correct or extend a logged interaction — its subject, notes or outcome.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Interaction

  • id string
  • customer_id string
  • country string
  • type string
  • subject string
  • summary string
  • rm string
  • occurred_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Interaction

  • id string
  • customer_id string
  • country string
  • type string
  • subject string
  • summary string
  • rm string
  • occurred_at string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/bank_opportunities

List banking opportunities

Next-best-action product opportunities identified for a banking customer (deposit | lending | card | investment | insurance) with expected value, stage and a recommendation reason. Retail cross-sell prompts for a relationship manager, not CRM sales opportunities (B2B deals). Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
product_categoryquerystringnoFilter by product category
stagequerystringnoFilter by stage

Responses

200
Paginated list

application/json

  • data array

    array of:

    Opportunity

    • id string
    • customer_id string
    • country string
    • name string
    • product_category string
    • stage string
    • recommendation_reason string
    • value object
      • amount number
      • currency string
      • amount_formatted string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/bank_opportunities

Create banking opportunity

Record a next-best-action product opportunity for a banking customer, with the product category, expected value and why it is being recommended.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Opportunity

  • id string
  • customer_id string
  • country string
  • name string
  • product_category string
  • stage string
  • recommendation_reason string
  • value object
    • amount number
    • currency string
    • amount_formatted string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Opportunity

  • id string
  • customer_id string
  • country string
  • name string
  • product_category string
  • stage string
  • recommendation_reason string
  • value object
    • amount number
    • currency string
    • amount_formatted string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/bank_opportunities/{id}

Get banking opportunity

Fetch one banking opportunity by id with its product category, value, stage and recommendation reason.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Opportunity

  • id string
  • customer_id string
  • country string
  • name string
  • product_category string
  • stage string
  • recommendation_reason string
  • value object
    • amount number
    • currency string
    • amount_formatted string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/bank_opportunities/{id}

Delete banking opportunity

Permanently delete a banking opportunity. Destructive — when a customer says no, set the stage to 'declined' instead so the outcome is retained.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/bank_opportunities/{id}

Update banking opportunity

Move an opportunity along identified → proposed → accepted | declined, or revise its value and reasoning.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Opportunity

  • id string
  • customer_id string
  • country string
  • name string
  • product_category string
  • stage string
  • recommendation_reason string
  • value object
    • amount number
    • currency string
    • amount_formatted string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Opportunity

  • id string
  • customer_id string
  • country string
  • name string
  • product_category string
  • stage string
  • recommendation_reason string
  • value object
    • amount number
    • currency string
    • amount_formatted string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/complaints

List customer complaints

Grievances customers have raised against the bank (payments, cards, loans, accounts, atm, digital), each with status logged | investigating | resolved | closed and an SLA clock. Regulated banking complaints, not IT incidents and not fraud cases. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
categoryquerystringnoFilter by category
statusquerystringnoFilter by status

Responses

200
Paginated list

application/json

  • data array

    array of:

    Complaint

    • id string
    • customer_id string
    • account_id string
    • country string
    • category string
    • channel string
    • title string
    • status string
    • sla_policy_id string
    • sla_due string
    • known_issue_id string
    • resolution_notes string
    • status_history array

      array of:

      • status string
      • reason string
      • recorded_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/complaints

Log customer complaint

Log a new complaint a customer has raised against the bank, with category and description. It starts at 'logged'; move it on with the transition tool.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/complaints/{id}

Get customer complaint

Fetch one complaint by id with its category, status, resolution notes and SLA timing — the record to check before promising a resolution date.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

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

DELETE /api/purple-suite/retail-banking/complaints/{id}

Delete customer complaint

Permanently delete a complaint. Destructive and irreversible, and it erases regulated complaint history — resolve and close it instead.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/complaints/{id}

Update customer complaint

Partially update complaint details such as category, description, owner or notes. Use the transition tool for the status lifecycle: it enforces the required order.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

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

POST /api/purple-suite/retail-banking/complaints/{id}/transition

Transition a complaint

Move a customer complaint through logged → investigating → resolved → closed, optionally recording resolution notes. Use this rather than patching status: a complaint must be 'resolved' before it can be 'closed', and 'closed' is terminal — a closed complaint cannot be reopened.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

application/json — required

  • status string required
  • resolution_notes string

Responses

200
Updated

application/json

Complaint

  • id string
  • customer_id string
  • account_id string
  • country string
  • category string
  • channel string
  • title string
  • status string
  • sla_policy_id string
  • sla_due string
  • known_issue_id string
  • resolution_notes string
  • status_history array

    array of:

    • status string
    • reason string
    • recorded_at string
  • createdAt string
  • updatedAt string
400
Invalid status
404
Not found
422
Invalid state transition

GET /api/purple-suite/retail-banking/known_issues

List banking known issues

Bank-wide known errors and service outages (e.g. a UPI/NPCI outage) with the affected service, customer-facing workaround and status. Check here before investigating one customer's failed payment — it is often already a known issue. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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
affected_servicequerystringnoFilter by affected service

Responses

200
Paginated list

application/json

  • data array

    array of:

    KnownIssue

    • id string
    • country string
    • title string
    • affected_service string
    • status string
    • workaround string
    • started_at string
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/known_issues

Create banking known issue

Publish a known issue or outage affecting a banking service, including the workaround agents should give customers.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

KnownIssue

  • id string
  • country string
  • title string
  • affected_service string
  • status string
  • workaround string
  • started_at string
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

KnownIssue

  • id string
  • country string
  • title string
  • affected_service string
  • status string
  • workaround string
  • started_at string
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/known_issues/{id}

Get banking known issue

Fetch one known issue by id with the affected service, workaround, status and when it started.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

KnownIssue

  • id string
  • country string
  • title string
  • affected_service string
  • status string
  • workaround string
  • started_at string
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/known_issues/{id}

Delete banking known issue

Permanently delete a known issue record. Destructive — mark it 'resolved' instead so agents can still see that the outage happened.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/known_issues/{id}

Update banking known issue

Update a known issue — refine the workaround, or set status to 'resolved' once the service recovers.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

KnownIssue

  • id string
  • country string
  • title string
  • affected_service string
  • status string
  • workaround string
  • started_at string
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

KnownIssue

  • id string
  • country string
  • title string
  • affected_service string
  • status string
  • workaround string
  • started_at string
  • createdAt string
  • updatedAt string
404
Not found

GET /api/purple-suite/retail-banking/bank_sla_policies

List banking SLA policies

The bank's service-level commitments by country and category (payments, cards, loans, accounts, atm, digital), giving response and resolution hours and whether a regulatory clock applies. Use these to judge whether a complaint is breaching. Not ITSM SLAs. Narrow results server-side with this endpoint's named filter params (country, customer_id, status, …) or with OData $filter, $orderby, $select, $search, $top, $skip and $count (MCP clients send those as _filter, _orderby, …) instead of paging through everything.

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)
categoryquerystringnoFilter by category

Responses

200
Paginated list

application/json

  • data array

    array of:

    SlaPolicy

    • id string
    • country string
    • name string
    • category string
    • response_hours number
    • resolution_hours number
    • regulatory_clock boolean
    • createdAt string
    • updatedAt string
  • nextCursor stringCursor for the next page, or null on the last page
  • total integerTotal documents matching the filter

POST /api/purple-suite/retail-banking/bank_sla_policies

Create banking SLA policy

Define a new banking service-level policy for a country and category, with response/resolution hours and the regulatory-clock flag.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes

Request body

application/json — required

SlaPolicy

  • id string
  • country string
  • name string
  • category string
  • response_hours number
  • resolution_hours number
  • regulatory_clock boolean
  • createdAt string
  • updatedAt string

Responses

201
Created

application/json

SlaPolicy

  • id string
  • country string
  • name string
  • category string
  • response_hours number
  • resolution_hours number
  • regulatory_clock boolean
  • createdAt string
  • updatedAt string

GET /api/purple-suite/retail-banking/bank_sla_policies/{id}

Get banking SLA policy

Fetch one banking SLA policy by id with its response and resolution hours and regulatory-clock flag.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Found

application/json

SlaPolicy

  • id string
  • country string
  • name string
  • category string
  • response_hours number
  • resolution_hours number
  • regulatory_clock boolean
  • createdAt string
  • updatedAt string
404
Not found

DELETE /api/purple-suite/retail-banking/bank_sla_policies/{id}

Delete banking SLA policy

Permanently delete a banking SLA policy. Destructive — complaints in that category then have no target to measure against.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Responses

200
Deleted

application/json

  • success boolean
  • id string
404
Not found

PATCH /api/purple-suite/retail-banking/bank_sla_policies/{id}

Update banking SLA policy

Change a banking SLA policy's response or resolution hours, or its regulatory-clock flag.

Parameters

NameInTypeRequiredDescription
X-Instance-IDheaderstringyes
idpathstringyes

Request body

Fields to update (partial)

application/json

SlaPolicy

  • id string
  • country string
  • name string
  • category string
  • response_hours number
  • resolution_hours number
  • regulatory_clock boolean
  • createdAt string
  • updatedAt string

Responses

200
Updated

application/json

SlaPolicy

  • id string
  • country string
  • name string
  • category string
  • response_hours number
  • resolution_hours number
  • regulatory_clock boolean
  • createdAt string
  • updatedAt string
404
Not found