> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsa.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Node.js SDK - All Available Services & Methods

> Complete reference of all services and methods available through the Corsa Node.js SDK - clients, alerts, cases, rules, and more.

The `CorsaClient` exposes the following services:

## Clients

Access via `client.clients`

| Method                                                          | Description                                                          |
| --------------------------------------------------------------- | -------------------------------------------------------------------- |
| `createIndividualClient(requestBody, upsert?)`                  | Create or upsert an individual client.                               |
| `updateIndividualClient(clientId, requestBody)`                 | Update an individual client.                                         |
| `getIndividualClient(clientId, integrationId?)`                 | Get an individual client by ID.                                      |
| `enableIndividualClientAutoModelRisk(clientId, requestBody)`    | Enable automatic model-driven risk scoring for an individual client. |
| `bulkUpdateIndividualClients(requestBody)`                      | Update multiple individual clients with the same fields (max 100).   |
| `createCorporateClient(requestBody, upsert?)`                   | Create or upsert a corporate client.                                 |
| `updateCorporateClient(clientId, requestBody)`                  | Update a corporate client.                                           |
| `getCorporateClient(clientId, includeMembers?, integrationId?)` | Get a corporate client by ID.                                        |
| `enableCorporateClientAutoModelRisk(clientId, requestBody)`     | Enable automatic model-driven risk scoring for a corporate client.   |
| `bulkUpdateCorporateClients(requestBody)`                       | Update multiple corporate clients with the same fields (max 100).    |

## Members

Access via `client.members`

| Method                                                              | Description                                           |
| ------------------------------------------------------------------- | ----------------------------------------------------- |
| `createIndividualMember(requestBody, upsert?)`                      | Create an individual member (UBO/Director/Signatory). |
| `updateIndividualMember(memberId, requestBody)`                     | Update an individual member.                          |
| `getIndividualMember(memberId)`                                     | Get an individual member by ID.                       |
| `addIndividualMemberDocument(memberId, requestBody)`                | Add a document to a member.                           |
| `getIndividualMemberDocuments(memberId)`                            | List member documents.                                |
| `updateIndividualMemberDocument(memberId, documentId, requestBody)` | Update a member document.                             |
| `deleteIndividualMemberDocument(memberId, documentId)`              | Delete a member document.                             |
| `createCorporateMember(requestBody, upsert?)`                       | Create a corporate member.                            |
| `updateCorporateMember(memberId, requestBody)`                      | Update a corporate member.                            |
| `getCorporateMember(memberId)`                                      | Get a corporate member by ID.                         |

## Deposits

Access via `client.deposits`

| Method                                | Description                           |
| ------------------------------------- | ------------------------------------- |
| `createDeposit(requestBody, upsert?)` | Create or upsert a deposit operation. |
| `getDeposit(id)`                      | Get a deposit by ID or referenceId.   |

## Withdrawals

Access via `client.withdrawals`

| Method                                   | Description                              |
| ---------------------------------------- | ---------------------------------------- |
| `createWithdrawal(requestBody, upsert?)` | Create or upsert a withdrawal operation. |
| `getWithdrawal(id)`                      | Get a withdrawal by ID or referenceId.   |

## Transfers

Access via `client.transfers`

| Method                                 | Description                                                                                                             |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `createTransfer(requestBody, upsert?)` | Create or upsert a peer-to-peer transfer operation. Both `from.client` and `to.client` are required on the transaction. |
| `getTransfer(id)`                      | Get a transfer by ID or referenceId.                                                                                    |

## Trades

Access via `client.trades`

| Method                                                            | Description                                          |
| ----------------------------------------------------------------- | ---------------------------------------------------- |
| `createTrade(requestBody, shouldAppendToExistingTrade?, upsert?)` | Create a trade or append fills to an existing trade. |
| `updateTradeStatus(id, requestBody)`                              | Update a trade's status.                             |
| `getTrade(id)`                                                    | Get a trade by ID or referenceId.                    |
| `addTransaction(id, requestBody)`                                 | Add a transaction to an existing trade.              |

## Transactions

Access via `client.transactions`

| Method                                     | Description                                                  |
| ------------------------------------------ | ------------------------------------------------------------ |
| `getTransactionById(id, integrationId?)`   | Get a transaction by ID or referenceId.                      |
| `updateTransaction(id, requestBody)`       | Update a transaction.                                        |
| `updateTransactionStatus(id, requestBody)` | Update a transaction's status.                               |
| `bulkUpdateTransactions(requestBody)`      | Update multiple transactions with the same fields (max 100). |
| `lookupByHash(requestBody)`                | Look up transactions by blockchain transaction hash.         |

## Alerts

Access via `client.alerts`

| Method                                                      | Description                                                             |
| ----------------------------------------------------------- | ----------------------------------------------------------------------- |
| `createAlert(requestBody, failOnAssociation?)`              | Create an alert.                                                        |
| `createAlertsBatch(requestBody, failOnAssociation?)`        | Batch create alerts (max 50).                                           |
| `getAlert(alertId)`                                         | Get an alert by ID.                                                     |
| `getAlertsByEntity(entityType, entityId)`                   | Get all alerts linked to a specific entity (client, transaction, etc.). |
| `updateAlert(alertId, requestBody)`                         | Update an alert.                                                        |
| `bulkUpdateAlert(requestBody)`                              | Update multiple alerts with the same fields (max 100).                  |
| `bulkUpdateAlertStatus(requestBody)`                        | Bulk update alert statuses (max 100).                                   |
| `bulkAssignAlert(requestBody)`                              | Bulk assign alerts (max 100).                                           |
| `bulkEscalateAlert(requestBody)`                            | Bulk escalate alerts (max 100).                                         |
| `associateAlertWithTransactions(alertId, requestBody)`      | Associate an alert with transactions.                                   |
| `associateAlertWithClients(alertId, requestBody)`           | Associate an alert with clients.                                        |
| `addScreeningMatches(alertId, requestBody)`                 | Attach 1–100 screening matches to an existing screening alert.          |
| `updateScreeningMatch(alertId, matchId, requestBody)`       | Update a pending screening match before a decision is recorded.         |
| `deleteScreeningMatch(alertId, matchId)`                    | Delete a pending screening match (recomputes client screening status).  |
| `makeScreeningMatchDecision(alertId, matchId, requestBody)` | Record a decision on a single screening match.                          |
| `bulkDecisionOnScreeningMatches(alertId, requestBody)`      | Record decisions on multiple screening matches at once.                 |

## Cases

Access via `client.cases`

| Method                                               | Description                                           |
| ---------------------------------------------------- | ----------------------------------------------------- |
| `createCase(requestBody)`                            | Create a case.                                        |
| `createCasesBatch(requestBody)`                      | Batch create multiple cases in a single request.      |
| `getCase(caseId)`                                    | Get a case by ID.                                     |
| `updateCase(caseId, requestBody)`                    | Update a case.                                        |
| `bulkUpdateCase(requestBody)`                        | Update multiple cases with the same fields (max 100). |
| `bulkUpdateCaseStatus(requestBody)`                  | Bulk update case statuses (max 100).                  |
| `bulkAssignCase(requestBody)`                        | Bulk assign cases (max 100).                          |
| `bulkUpdateCaseReviewers(requestBody)`               | Bulk update case reviewers (max 100).                 |
| `associateCaseWithTransactions(caseId, requestBody)` | Associate a case with transactions.                   |
| `associateCaseWithClients(caseId, requestBody)`      | Associate a case with clients.                        |
| `associateCaseWithAlerts(caseId, requestBody)`       | Associate a case with alerts.                         |

## Bank Accounts

Access via `client.bankAccounts`

| Method                                                        | Description                              |
| ------------------------------------------------------------- | ---------------------------------------- |
| `createBankAccount(requestBody, upsert?)`                     | Create or upsert a bank account.         |
| `getBankAccount(bankAccountId)`                               | Get a bank account by ID or referenceId. |
| `updateBankAccount(bankAccountId, requestBody)`               | Update a bank account.                   |
| `associateBankAccountWithClients(bankAccountId, requestBody)` | Associate with clients.                  |

## Blockchain Wallets

Access via `client.blockchainWallets`

| Method                                                                  | Description                           |
| ----------------------------------------------------------------------- | ------------------------------------- |
| `createBlockchainWallet(requestBody, upsert?)`                          | Create or upsert a blockchain wallet. |
| `getBlockchainWallet(blockchainWalletId)`                               | Get by ID, referenceId, or address.   |
| `updateBlockchainWallet(blockchainWalletId, requestBody)`               | Update a wallet.                      |
| `associateBlockchainWalletWithClients(blockchainWalletId, requestBody)` | Associate with clients.               |

## Sessions

Access via `client.sessions`

| Method                           | Description                 |
| -------------------------------- | --------------------------- |
| `createSession(requestBody)`     | Create a session.           |
| `getSession(id)`                 | Get by ID or referenceId.   |
| `updateSession(id, requestBody)` | Update a session.           |
| `getClientSessions(clientId)`    | List sessions for a client. |

## Rules

Access via `client.rules`

| Method                           | Description                               |
| -------------------------------- | ----------------------------------------- |
| `createRule(requestBody)`        | Create a rule (draft).                    |
| `listRules(page?, limit?, ...)`  | List rules with filtering and pagination. |
| `getRule(id, version?)`          | Get a rule by ID.                         |
| `updateRule(id, requestBody)`    | Update a rule.                            |
| `activateRule(id, requestBody?)` | Activate a rule.                          |
| `disableRule(id, requestBody?)`  | Disable a rule.                           |
| `deleteRule(id, reason?)`        | Soft delete a rule.                       |

## Rule Templates

Access via `client.ruleTemplates`

| Method                                  | Description                                        |
| --------------------------------------- | -------------------------------------------------- |
| `listRuleTemplates(page?, limit?, ...)` | List rule templates with filtering.                |
| `getRuleTemplate(id)`                   | Get a rule template by ID.                         |
| `copyRuleTemplate(id)`                  | Copy a template to your workspace as a draft rule. |

## Evaluation

Access via `client.evaluation`

| Method                                                       | Description                           |
| ------------------------------------------------------------ | ------------------------------------- |
| `evaluate(requestBody)`                                      | Evaluate rules against a transaction. |
| `getTransactionEvaluations(transactionId, page?, pageSize?)` | Get evaluations for a transaction.    |
| `getRuleEvaluations(ruleId, page?, pageSize?)`               | Get evaluations for a rule.           |

## Checklists

Access via `client.checklists`

| Method                                                     | Description                                    |
| ---------------------------------------------------------- | ---------------------------------------------- |
| `getEntityChecklist(entityId)`                             | Get the newest active checklist for an entity. |
| `updateChecklistItem(checklistId, itemId, requestBody)`    | Update a checklist item.                       |
| `createChecklistTemplate(requestBody)`                     | Create a checklist template.                   |
| `getChecklistTemplatesByPlatform(platformId, entityType?)` | List checklist templates.                      |
| `getChecklistTemplateById(id)`                             | Get a template by ID.                          |
| `updateChecklistTemplate(id, requestBody)`                 | Update a template.                             |
| `deleteChecklistTemplate(id)`                              | Delete a template.                             |
| `addItemToTemplate(id, requestBody)`                       | Add an item to a template.                     |
| `updateTemplateItem(itemId, requestBody)`                  | Update a template item.                        |
| `deleteTemplateItem(itemId)`                               | Delete a template item.                        |

## Attachments

Access via `client.attachments`

| Method                                              | Description                             |
| --------------------------------------------------- | --------------------------------------- |
| `getAttachmentsByEntity(entityType, entityId)`      | Get attachments for an entity.          |
| `uploadAttachments(entityType, entityId, formData)` | Upload files.                           |
| `getDownloadUrlsByIds(ids)`                         | Get download URLs.                      |
| `updateAttachment(attachmentId, requestBody)`       | Update attachment metadata.             |
| `deleteAttachment(attachmentId)`                    | Delete an attachment.                   |
| `relateAttachments(requestBody)`                    | Relate attachments to an entity.        |
| `createExternalDocument(requestBody)`               | Create an external document attachment. |

## Payment Accounts

Access via `client.paymentAccounts`

| Method                                                              | Description                                                          |
| ------------------------------------------------------------------- | -------------------------------------------------------------------- |
| `createPaymentAccount(requestBody, upsert?)`                        | Create or upsert a payment account (PIX, mobile money, CLABE, etc.). |
| `getPaymentAccount(paymentAccountId)`                               | Get a payment account by ID or referenceId.                          |
| `updatePaymentAccount(paymentAccountId, requestBody)`               | Update a payment account.                                            |
| `associatePaymentAccountWithClients(paymentAccountId, requestBody)` | Associate with clients.                                              |

## Sub-Dispositions

Access via `client.subDispositions`

| Method                                  | Description                                                     |
| --------------------------------------- | --------------------------------------------------------------- |
| `listSubDispositions()`                 | List all sub-dispositions (preset and custom) for the platform. |
| `createSubDisposition(requestBody)`     | Create a custom sub-disposition.                                |
| `getSubDisposition(id)`                 | Get a sub-disposition by ID.                                    |
| `updateSubDisposition(id, requestBody)` | Update a sub-disposition's display name or active state.        |
| `deleteSubDisposition(id)`              | Soft-delete a custom sub-disposition.                           |

## External Rules

Access via `client.externalRules`

| Method                                | Description                                                   |
| ------------------------------------- | ------------------------------------------------------------- |
| `createExternalRule(requestBody)`     | Register a vendor rule (e.g. Chainalysis, TRM Labs) in Corsa. |
| `listExternalRules(params?)`          | List external rules with pagination.                          |
| `getExternalRule(id)`                 | Get an external rule by ID.                                   |
| `updateExternalRule(id, requestBody)` | Update an external rule.                                      |
| `deleteExternalRule(id)`              | Soft-delete an external rule.                                 |
| `checkRuleNameExists(name)`           | Check whether a rule name is already taken in your workspace. |
| `getExternalRuleVendors()`            | Get distinct vendor names from registered external rules.     |

## Verifications

Access via `client.verifications`

| Method                                                      | Description                                          |
| ----------------------------------------------------------- | ---------------------------------------------------- |
| `createVerification(clientId, requestBody)`                 | Create a KYC/KYB verification for a client.          |
| `updateVerification(clientId, verificationId, requestBody)` | Update an existing verification's status or details. |
| `getVerification(clientId, provider, providerId)`           | Look up a verification by provider and provider ID.  |

## Platform

Access via `client.platform`

| Method                         | Description                                  |
| ------------------------------ | -------------------------------------------- |
| `getEncryptionConfiguration()` | Get the platform's encryption configuration. |

***

Refer to the type definitions exported from `@corsa-labs/sdk` for detailed request and response structures.
