@cookiemunch/ sdk (英语)
为 Cookie Munch 开发者 API (the /v1 (原始内容存档于2018-10-21). space.
使用 API 密钥进行认证——组织从密钥中衍生出服务器侧,
所以你从不通过 orgId。 。 。 .
import { createCookieMunch, CookieMunchApiError } from '@cookiemunch/sdk';
const fc = createCookieMunch({
apiKey: process.env.COOKIEMUNCH_API_KEY!, // "fck_…"
baseUrl: 'https://api.cookiemunch.net', // "/v1" is appended automatically
});
const sites = await fc.sites.list();
const site = await fc.sites.create({ domain: 'example.com' }); // cbid auto-generated
const stats = await fc.consent.stats(site.cbid, { from: 0, to: Date.now() });
try {
await fc.sites.get('does-not-exist');
} catch (e) {
if (e instanceof CookieMunchApiError) console.error(e.status, e.message);
}
fetch 可通过 createCookieMunch({ ..., fetch }) 测试或定制
运行时间; 它默认为全局 fetch。 。 。 .
方法
me()sites.list() / create(input) / get(cbid) / delete(cbid) / getConfig(cbid) / putConfig(cbid, config)sites.lintConfig(cbid, config, { replace? })——同意-按钮对等:接受所有比拒绝所有更难接受吗? 回返designWarnings, (中文(简体) ),score, (中文(简体) ),suggestedReject; 什么都没有保存。 每个配置读入/写入designWarnings。 。 。 .consent.stats(cbid, {from?,to?}) / log(cbid, {from?,to?,limit?}) / export(cbid, {from?,to?}) / receipt(cbid, stamp)dsar.list() / create(input) / advance(id, toStatus)vendors.list() / create(input)ropa.list() / create(input)webhooks.list() / create(input)rightsPage.get(cbid) / put(cbid, page, {baseUpdatedAt?}) / patch(cbid, patch, {baseUpdatedAt?}) / dryRun(cbid, page, {mode?}) / getPublished(cbid) / publish(cbid, {baseUpdatedAt?}) / versions(cbid) / rollback(cbid, version, {baseUpdatedAt?})- 通过草案updatedAt作为baseUpdatedAt因此,更新的储蓄是409draft_conflict,从不覆盖或未公开;回滚取代草稿rightsPage.listDomains(cbid) / addDomain(cbid, hostname) / verifyDomain(cbid, hostname) / removeDomain(cbid, hostname)——您自己的主机名上的权利页面rightsLinks.create(cbid, { subject, rights?, ttlSeconds? })——签注人单用权页面链接org.mailProvider.get() / set(input) / test(to?) / remove()- 您自己的权利请求邮件提供者
这些是使用最多的;客户端覆盖每个 /v1 操作(见类型) CookieMunchClient) (中文(简体) ).
export() 返回原始 CSV 字符串; 所有其他方法返回已解析的 JSON。 任意
非-2xx 响应抛出 a CookieMunchApiError { status, code?, message }错误 code
数值在 docs/api/error-codes.md。 。 。 .
正在校验webhooks
verifyWebhookSignature(...) 验证输入的 webhook 的 X-CookieMunch-Signature
(HMAC-SHA256 完毕) `${timestamp}.${rawBody}`和它的新鲜。 这是权威
验证器——总是匹配服务器. 未关闭; 返回布尔值 .
import { verifyWebhookSignature } from '@cookiemunch/sdk';
const ok = verifyWebhookSignature({
payload: rawBody, // exact request body bytes (a string)
signature: headers['x-cookiemunch-signature'],
timestamp: headers['x-cookiemunch-timestamp'],
secret: process.env.CM_WEBHOOK_SECRET!, // the whsec_… shown once on create
});
全食谱( Express, 边缘/ WebCrypto, 重放保护) : docs/api/webhook-signing.md。 。 。 .
答复权利请求
createRightsHandlers(...) 从 @cookiemunch/sdk/rights 服务于
cm-标准v2执行合同 获取 API
处理器从您的召回。 Cookie Munch随后发现,输出并抹去你产品中的人.
import { createRightsHandlers } from '@cookiemunch/sdk/rights';
export const { GET, POST } = createRightsHandlers({
key: process.env.CM_EXECUTOR_KEY!, // the secretKey you registered
idSecret: process.env.CM_REQUEST_ID_SECRET!, // signs request ids; 32+ characters
lookup: ({ emails, identity }) => findUserId(emails, identity),
access: async (r) => ({ status: 'completed', result: await exportUser(r.subjectId) }),
erase: async (r) => { await deleteUser(r.subjectId); },
store: fileStore('/var/lib/myapp/rights'), // import it too; or sqlStore({ query }) / redisStore(client)
});
默认商店在记忆中. 预定的去除过程没有定时器 : erase 运行
Cookie Munch的下一场民调之后 executeAfter (每10分钟),所以生产需要耐用
store数字 : fileStore(dir), (中文(简体) ), sqlStore({ query }) (表: RIGHTS_STORE_TABLE_SQL)或(或)
redisStore(client)。 。 。 .
添加 completion: { url, secret } (连接是) completionsUrl 财务报告和审定财务报表 completionSecret和每个
cookie Munch作为签名的完成器被推到最后状态的请求中,然后关闭
秒数。 关闭 a pending 或者说 processing 稍后请求 await handlers.complete(requestId, outcome)。 。 。 .