@crvouga/mockingbird-service-brevo (英语)
本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .
WIP Brevo v3 接触周期,基于官方联系参考. 没有发送信件 .
安装
bun add @crvouga/mockingbird-service-brevo
使用量
import { BrevoClient } from "@getbrevo/brevo"
import { createRuntime } from "@crvouga/mockingbird-service-brevo"
// The Brevo SDK your application already uses. Only its fetch changes: requests reach the
// emulator in this process instead of api.brevo.com.
const emulator = createRuntime()
const brevo = new BrevoClient({
apiKey: "mock_brevo_key",
fetch: ((url: RequestInfo | URL, init?: RequestInit) =>
emulator.fetch(new Request(url, init))) as typeof fetch,
})
const created = await brevo.contacts.createContact({
email: "[email protected]",
ext_id: "mock-contact",
listIds: [1],
updateEnabled: false,
})
console.log(created) // { id: 1 }
运行 mockingbird-brevo serve --port 12124 并设置
SDK的车 baseUrl 改为 http://localhost:12124/v3 (单位:千美元)@getbrevo/brevo; 一个原始的 HTTP 客户端替换
联合国 https://api.brevo.com 来源)。 消费者必须使该基础URL可注入(
供应商没有定义标准环境变量).
使用合成器 api-key: mock_brevo_key,或配置 apiKeys 内 createRuntime。 。 。 .
路线
POST /v3/contacts: 与数字id(201)建立联系. 复制电子邮件或 外部编号为updateEnabled: false返回 400duplicate_parameter没有变异.updateEnabled: true更新现有联系人(204).PUT /v3/contacts/{identifier}?identifierType=ext_id: 更新属性,包括attributes.EMAIL,而不改变联系人的数字代号或现有列表成员 (204) (英语).listIds增加成员;unlinkListIds把他们带走.DELETE /v3/contacts/{encoded-email}?identifierType=email_id:删除该联系人(204).GET /v3/contacts/{identifier}:读取联系人. 明确identifierType支持email_id, (中文(简体) ),contact_id,以及ext_id;默认识别电子邮件或数字 id.
失去的联系人返回 404 document_not_found无效的识别器, 畸形的身体,
无效的电子邮件和相冲突的更新返回 400; 缺少或无效的 API 密钥返回 401.
错误使用 {code, message}。这里没有网路.
管制和核查
通过合成 contacts 以种子模拟器; 重置还原这些固定装置。 共享管理员
路径包括 /__admin/state/contacts 用于检查/种子, /__admin/reset时间线
检查站, /__admin/clock, (中文(简体) ), /__admin/requests 财务报告和审定财务报表 /__admin/faults。请求已登出日志
作为元数据,从不联系机构或 API 密钥。 设定 adminPrefix 以迁移这棵树.
命名空间载体是 x-mockingbird-namespace, (中文(简体) ), /__admin/ns/{namespace},或 API 密钥
绘制到 PUT /__admin/credentials。每个命名空间都有独立的联系人和ID.
错误预设 : unauthorized, (中文(简体) ), rate_limited (429同后重试), server_error (503个),
财务报告和审定财务报表 connection_drop通用过失规则也支持确定性延迟.
接受测试从第280期的原始请求,命名空间/重置行为,
过失并服务于HTTP. 财产测试涵盖每一项行动并检测出有意的分歧.
bun scripts/parity.ts 需求 BREVO_API_KEY 安全地比较缺失的接触信封;
它不创建、更新或删除真正的联系人。 现场写对等尚未核实 .
故意不模拟
电子邮件/短信发送、运动、清单管理、批量进出口、短信/什么sApp标识、, 强制Morge,属性定义目录,联系人统计和账户级配额. 只支持电子邮件和外部编号创建 。 没有真正的客户固定装置或外出事件.
API 密码
BrevoAPI: 使用fetch, (中文(简体) ),reset, (中文(简体) ),contacts财务报告和审定财务报表counters藏书.BREVO_NAMESPACE: 服务名称 (brevo) (中文(简体) ).createRuntime: 共享管理员、命名空间、时钟、断层和日记表面; 接受apiKeys财务报告和审定财务报表contacts除了共享运行时间选项.BREVO_PRESETS: 命名断层预设.document, (中文(简体) ),operationIds, (中文(简体) ),supportedOperationIds:生成了OpenAPI合同元数据.createServer, (中文(简体) ),serveTarget, (中文(简体) ),DEFAULT_PORT从./server: 节点 HTTP 服务器和 CLI 目标(默认端口12124).
公共类型包括: Contact, (中文(简体) ), BrevoAPIOptions, (中文(简体) ), OperationId 财务报告和审定财务报表 SupportedOperationId。 。 。 .