@corsa-labs/sdk

中文文档
5.0.1发布于 2026/10/20MITTypeScriptCommonJS近 30 天下载 1.7万

官方Node.js SDK for Corsa (cosa.finance),代理合规OS:AML交易监测,提醒,案例,KYC/KYB和风险API.

中文使用文档
文档目录15 节
  1. 目录
  2. 安装
  3. API 客户端使用
  4. 配置
  5. 可用服务
  6. API 请求的工作示例
  7. Webhook 处理
  8. Webhook 页眉
  9. 正在验证签名
  10. 事件类型
  11. 发展
  12. 大楼
  13. 测试
  14. 捐款
  15. 许可证

@corsa-labs/ sdk (英语)

npm version

官方节点.js SDK 科萨银行、金融机构和金融技术的代理遵守操作系统。 利用它向克萨发送客户端,账户和交易,管理警报,案件和监测规则,并处理webhooks.

联合国 财务

目录

安装

您可以使用 npm 或纱线安装软件包 :

npm install @corsa-labs/sdk
# or
yarn add @corsa-labs/sdk

API 客户端使用

本节涵盖如何使用SDK与遵守API端点交互.

配置

首先导入 ComplianceClient 并配置您的 API 细节 :

import { ComplianceClient, OpenAPI } from '@corsa-labs/sdk';

// Configure API key (or other authentication methods) via Headers
// OpenAPI.TOKEN = 'YOUR_API_KEY'; // Deprecated: Use HEADERS instead

// Configure the base URL
OpenAPI.BASE = 'https://api.corsa.finance'; 

// Configure Headers for Authentication (Recommended)
OpenAPI.HEADERS = {
  "Authorization": `Bearer ${process.env.API_TOKEN}` 
};

const client = new ComplianceClient();

// Or configure directly in the constructor
const clientWithConfig = new ComplianceClient({
    BASE: "https://api.corsa.finance",
    HEADERS: {
        "Authorization": `Bearer ${process.env.API_TOKEN}`
    }
});

可用服务

SDK提供以下服务: ComplianceClient 实例:

  • client.alerts:管理合规提示.
  • client.clients:管理个人和公司客户.
  • client.health:检查API的健康状况.
  • client.operations:管理财务业务(存款、提款、交易).
  • client.transactions: 管理交易.

每个服务都暴露出对应API端点的方法. 参考类型定义(从 index.ts 内部 models/ 财务报告和审定财务报表 services/ 详细请求和响应结构目录).

API 请求的工作示例

import { ClientRiskDto, ComplianceClient, CreateIndividualClientDto, IndividualClientCustomFieldDataDto, IndividualClientGeneralInformationDto } from "@corsa-labs/sdk";
import { v4 as uuidv4 } from 'uuid';

async function main() {
    const client = new ComplianceClient({
        BASE: "https://api.corsa.finance",
        HEADERS: {
            "Authorization": `Bearer ${process.env.API_TOKEN}` // Use Authorization header
        }
    });

    const referenceId = uuidv4();
    const { id } = await client.clients.createIndividualClient({
        referenceId,
        activityStatus: CreateIndividualClientDto.activityStatus.ACTIVE,
        accountStatus: CreateIndividualClientDto.accountStatus.APPROVED,
        currentRisk: {
            score: 75,
            level: ClientRiskDto.level.HIGH,
            reason: "Multiple high-value transactions in high-risk jurisdictions",
            calculatedAt: "2023-08-15T14:30:00Z"
        },
        tags: ["high-value", "vip-client"],
        controls: ["enhanced-due-diligence", "quarterly-review"],
        address: {
            addressLine1: "123 Main Street",
            addressLine2: "Apt 4B",
            city: "New York",
            country: "USA",
            postalCode: "10001"
        },
        adverseMedia: {
            isAdverseMedia: false
        },
        application: {
            submittedAt: "2023-08-15T10:30:00Z",
            onboardedAt: "2023-08-20T14:00:00Z",
            onboardingRisk: {
                score: 75,
                level: ClientRiskDto.level.HIGH,
                reason: "Multiple high-value transactions in high-risk jurisdictions",
                calculatedAt: "2023-08-15T14:30:00Z"
            },
            nextPeriodicReview: "2024-08-20T14:00:00Z"
        },
        riskHistory: [{
            score: 75,
            level: ClientRiskDto.level.HIGH,
            reason: "Multiple high-value transactions in high-risk jurisdictions",
            calculatedAt: "2023-08-15T14:30:00Z"
        }],
        contact: {
            emailAddress: "[email protected]",
            phoneNumber: "+1-555-123-4567"
        },
        customFields: {
            additionalProp1: {
                label: "Preferred Contact Time",
                value: "Morning",
                category: IndividualClientCustomFieldDataDto.category.GENERAL
            },
            additionalProp2: {
                label: "Preferred Contact Time",
                value: "Morning",
                category: IndividualClientCustomFieldDataDto.category.GENERAL
            },
            additionalProp3: {
                label: "Preferred Contact Time",
                value: "Morning",
                category: IndividualClientCustomFieldDataDto.category.GENERAL
            }
        },
        financial: {
            annualDepositEstimate: "100000"
        },
        general: {
            firstName: "Yarin SDK",
            lastName: "Test",
            gender: IndividualClientGeneralInformationDto.gender.MALE,
            dateOfBirth: "1980-01-15",
            citizenship: "USA",
            personalId: "123-45-6789"
        },
        politicalExposure: {
            isPoliticallyExposed: false
        },
        sanctions: {
            isSanctioned: false
        },
        work: {
            occupation: "Software Engineer"
        }
    });

    console.log(id);
    await client.clients.updateIndividualClient(id, {
        activityStatus: CreateIndividualClientDto.activityStatus.NOT_ACTIVE,
    });
}

main();

Webhook 处理

SDK为处理来自遵守API的webhooks提供公用事业.

Webhook 页眉

在接收webhooks时,检查以下 HTTP 标题 :

  • x-hub-signature-256: HMAC SHA256 请求有效载荷的签名. 用于验证"网络呼克"的真实性. (见下文核查签字).
  • x-hook-event:引发webhook的事件类型(如, individual_client.created) (中文(简体) ).
  • x-hook-id:发送此请求的 Webhook 配置的独特标识符 .
  • x-hook-delivery: 此特定送出尝试的独特标识符 .
  • x-request-id: 生成 Webhook 的请求的独特标识符 .
  • x-request-origin: 生成 Webhook 的请求的出处( 或 API 或者说 WEB(中文(简体) )

正在验证签名

关键是验证进入的网络呼声的签名,以确保它们源于遵守API,不被篡改. 使用 verifyWebhookSignature 从 SDK 导出函数.

import { verifyWebhookSignature } from '@corsa-labs/sdk';

async function verifyWebhookRequest(request: Request) { // Assuming a standard Request object
  const signature = request.headers.get('x-hub-signature-256'); 
  const payload = await request.text(); // Raw request body
  const secret = process.env.WEBHOOK_SECRET; // Your webhook secret

  if (!signature || !secret) {
      console.error("Missing signature or secret");
      // Return an error response (e.g., HTTP 400 Bad Request)
      return false; 
  }

  const isValid = await verifyWebhookSignature(secret, payload, signature);

  if (!isValid) {
    console.error('Invalid webhook signature');
    // Return an error response (e.g., HTTP 401 Unauthorized)
    return false;
  }

  console.log("Webhook signature verified successfully!");
  // Signature is valid, proceed with processing the webhook payload
  // const webhookEvent = JSON.parse(payload);
  // console.log('Received valid webhook:', webhookEvent.type);
  // ... process event ...
  return true;
}

事件类型

以下 Webhook 事件类型可供使用(定义于 WebhookEventType:

  • individual_client.created: 创建单个客户端时触发.
  • individual_client.updated: 单个客户端更新时触发.
  • corporate_client.created: 创建公司客户端时触发.
  • corporate_client.updated:公司客户端更新后触发.
  • alert.created: 当创建提醒时触发 .
  • alert.updated: 当警报更新时触发 .
  • case.created:当一个案件被创建时触发.
  • case.updated: 当案件更新时触发.

每个事件类型的有效载荷结构(WebhookEvent, (中文(简体) ), EntityCreatedPayload, (中文(简体) ), EntityUpdatedPayload)和 WebhookEventType enum 可以从 @corsa-labs/sdk。 。 。 .

关于如何设置网页处理器的实际例子,请参见: Webhook 示例。 。 。 .


发展

大楼

为在当地建设该项目:

yarn install
yarn build

测试

使用 :

yarn test

捐款

欢迎捐款! 请遵循拖取请求的标准做法 .

许可证

麻省理工学院

版本与发布记录

@corsa-labs/sdk 共发布 96 个版本,首次发布于 2025/05/27;过去 12 个月发布了 56 个版本。

版本发布日期距今
5.0.1latest2026/10/2021 天前
5.0.02026/10/1130 天前
4.53.02026/10/061 个月前
4.52.02026/08/182 个月前
4.51.12026/08/182 个月前
4.51.02026/08/182 个月前

关于 @corsa-labs/sdk 的常见问题

@corsa-labs/sdk 是什么?

官方Node.js SDK for Corsa (cosa.finance),代理合规OS:AML交易监测,提醒,案例,KYC/KYB和风险API.

如何安装 @corsa-labs/sdk?

在项目目录运行 npm install @corsa-labs/sdk,或使用 pnpm add / yarn add / bun add。

@corsa-labs/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@corsa-labs/sdk 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@corsa-labs/sdk 可以商用吗?

@corsa-labs/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@corsa-labs/sdk 的下载量有多少?

根据 npm 官方下载统计,@corsa-labs/sdk 在 2026/10/11 – 2026/11/09 这 30 天内被下载 16,594 次,日均约 553 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@corsa-labs/sdk 还在维护吗?

最新版本 5.0.1 发布于 2026/10/20(21 天前);至今共发布 96 个版本,其中过去 12 个月发布了 56 个;首次发布于 2025/05/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。