Chift 节点js 图书馆
Chift 节点JS 库提供方便访问 Chift API 从 用节点JS语言(Javascript/Typescript)编写的应用程序.
文档
见 API 文件。 。 。 .
所需资源
节点18以上.
安装
以 :
npm install @chift/chift-nodejs
# or
yarn add @chift/chift-nodejs
示例
const chift = require('@chift/chift-nodejs');
const client = new chift.API({
clientId: process.env.CHIFT_TESTING_CLIENTID,
clientSecret: process.env.CHIFT_TESTING_CLIENTSECRET,
accountId: process.env.CHIFT_TESTING_ACCOUNTID,
});
const consumers = await client.Consumers.getConsumers();
// my first consumer has a POS connection
const locations = await consumers[0].pos.getLocations();
特征
客户端申请身份证明是否充分
SDK 支持使用 : x-chift-client-requestid 头曰. 这有助于防止重复创造资源。 见 开发者指南
// Create a client with idempotency
const client = await consumer.accounting.createClient({ name: 'Acme Corp' }, undefined, {
clientRequestId: 'unique-request-id-123',
});
// Update a client with idempotency
const updatedClient = await consumer.accounting.updateClient(
'client-id',
{ name: 'Acme Corporation' },
undefined,
{ clientRequestId: 'unique-update-id-456' }
);
原始数据访问
SDK 支持使用 rawData 参数 :
// Get raw data from invoices
const rawInvoices = await consumer.accounting.getInvoicesByType(
'customer_invoice',
{},
{ rawData: true }
);
// Get raw data from orders
const rawOrders = await consumer.ecommerce.getOrders({}, { rawData: true });
发展
重新生成 OpenAPI 计划
npx openapi-typescript https://api.chift.eu/openapi.json -o src/types/public-api/schema.d.ts
npx prettier --write src/types/public-api/schema.d.ts
将结果与已有文件相比较 。 如果没有变化,就停止.
Schema 同步工作流程
重新生成后 schema.d.ts,在编辑模块前对 diff 进行分类:
- 需要更新模块 当添加了新的终点时, 现有的终点将被移除或重新命名, 或者在其中引用的策略类型
src/modules编号 :test/变化. - 仅更新一个计划就够了 当修改仅限于类型、enums或没有模块引用的字段,或仅是文档/格式化.
npm run build 通过并不证明模块覆盖完成,但也并不意味着模块必须总是改变。 检查 diff 和 现有 模块 覆盖 以决定 .
在添加了新的公用端点后,在SDK中曝光. 当只有非破解的图案改进了土地和模块中没有任何内容引用已改变的符号时,跳过模块编辑.
用补丁版本来完成 package.json,一个匹配 package-lock.json 更新(npm install --package-lock-only页:1 CHANGELOG.md 条目( 单独) 模块 财务报告和审定财务报表 司马 和成功的 npm run build。 。 。 .
模块布局
检查 src/modules/ 以学习当前结构。 总的来说:
- 垂直 API( E)
accounting, (中文(简体) ),banking, (中文(简体) ),ecommerce, (中文(简体) ),invoicing, (中文(简体) ),payment, (中文(简体) ),pms, (中文(简体) ),pos, (中文(简体) ),custom使用 a*Factory模式并暴露在consumer.<api>。 。 。 . - 消费者范围管理 API(连接、每个消费者同步、数据显示)
consumer.ts。 。 。 . - 同步级别 API 已存在
syncs.ts。 。 。 . - 其他顶级 API 有匹配文件在
src/modules/。 。 。 .
新的顶级模块也必须接入 src/modules/api.ts (进口、财产和建筑商转让) client.<api>。 。 。 .
遵循目标模块中的现有方法. 从方案复制精确路径 paths 区域 —— 不要从操作名称中猜测 URL.
添加路径
图书馆处理活页. 如果图中的路由参数包含 page 财务报告和审定财务报表 size,使用时 AutoPaginatedParams<T> 用于模块中的路由参数.
如果 query 参数在策略中是可选的,声明 params 作为模块中的可选选项。 如果需要的话,请 params 所需经费.
例如,在 accounting.ts,则 parameters['query'] 页:1 operations['accounting_get_analytic_plans'] 应替换为 AutoPaginatedParams<operations['accounting_get_analytic_plans']['parameters']['query']>。 。 。 .
自兹 query 是可选的, getAnalyticPlans 应宣布为 getAnalyticPlans(params?: GetAnalyticPlansParams)。 。 。 .
返回类型
不要盲目复制 OpenAPI 响应类型 。 SDK运行时的形状取决于方法的接线方式:
- 工厂方法 (单位:千美元)
*Factory,打开consumer.<api>(通过)createApiFor→makeRequest。用于标注GET列表终点,makeRequest获取每页并返回 a 平面阵列 (b) 与项目有关的其他事项。 键入为RequestData<Item[]>使用页面图中的元素类型(例如).ContactItem[], (中文(简体) ), 没有ChiftPage_ContactItem_。与同一模块中的兄弟姐妹列表方法相比,例如getClients或者说getPayments。 。 。 . - 直接
InternalAPI方法 (单位:千美元)consumer.ts, (中文(简体) ),syncs.ts,...) 打电话_internalApi直接返回原始 API 响应。 输入它们以匹配同一文件中的兄弟姐妹方法.
工厂方法返回 RequestData<...> 与 method, (中文(简体) ), url,可选择 params, (中文(简体) ), body, (中文(简体) ), rawData,或 clientRequestId。 。 。 .
当为新操作添加方法时, 在 src/types/public-api/mappings.ts。 。 。 .
综合测试 test/modules/ 取决于现场证书和测试环境数据。 在 schema 中断编译时将类型引用固定在那里,但不作为 schema 同步的一部分添加或运行集成测试——失败测试不是一个阻塞器.
对于之前的策略同步公关实例,请查看最近发生的触摸 schema.d.ts 财务报告和审定财务报表 src/modules/。 。 。 .