SuperAPI AI 工具集

klaviyo-sdk-patterns

编程与开发

查看项目

更新于 10-15 23:26

技能介绍

用途:为 klaviyo-api Node.js SDK 提供一套生产级代码模式,把散落各处的 new ApiKeySession(...) 调用收敛为统一、可重试的调用层。

主要能力:六个模式。1)单例会话 session.ts:惰性创建并复用 ApiKeySession,从环境变量读取密钥,缺失即报错,并提供 resetSession 供测试使用。2)类型安全封装 api.ts:为全部 11 个 API 客户端提供惰性 getter,未使用的客户端不会被构造。3)错误封装 errors.ts:parseKlaviyoError 规范化原始错误,safeCall 返回 { data, error } 而不抛异常。4)重试 retry.ts:withRetry 仅对 429/5xx 重试,优先遵循 Retry-After 响应头,否则使用带抖动的指数退避。5)分页 pagination.ts:paginate 把任意游标列表端点转为 AsyncGenerator,自动提取 page[cursor]。6)多租户 multi-tenant.ts:getApisForTenant 按租户 id 缓存客户端集合,隔离各客户的 API 密钥。

使用方式:先安装 klaviyo-api 并完成 klaviyo-install-auth 配置,使 KLAVIYO_PRIVATE_KEY 可用;项目需为启用 strict 模式的 TypeScript。随后按 references/implementation.md 将对应文件写入 src/klaviyo/,调用方即可写成 const { data, error } = await safeCall(() => apis.profiles.getProfiles(...))。

约定与限制:属性用 firstName 而非 first_name;响应取 response.body.data;载荷为 { data: { type: 'profile', attributes: {...} } };过滤用 equals(email,"user@example.com");排序用 '-datetime' 降序、'datetime' 升序;关联用 { include: ['lists'] }。401/403/400/409 不可重试,429 与 500/503 可重试。完整实现与示例见 references/implementation.md 与 references/examples.md。后续可配合 klaviyo-core-workflow-a 使用。