通过API进行操作
(部分: 业务和管理)
1)任命和原则
API是生态系统的"运营层":任何没有通过合同自动化的东西都会变成手工操作和风险。
原则:- 合同第一:首先是规范(OpenAPI/JSON Schema/AsyncAPI),然后是实现。
- 安全默认:最小跳跃,短TTL, mutual-TLS/签名。
- 观察:终端跟踪和SLA度量。
- Idempotent:重播是安全的。
- Backwards兼容:没有"破裂"变化的进化。
- 可听性:经加密确认的事实(收据)。
2)合同和模型(参考)
用于同步查询的OpenAPI;用于事件/webhook的AsyncAPI。
每个资源中的必填字段为"id"、"version"、"created_at"、"updated_at"、"tenant"、"region"、"trace_id"。
合同部分的示例
yaml paths:
/payments/payouts:
post:
operationId: createPayout requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PayoutRequest'
responses:
"202": { $ref: '#/components/responses/AcceptedWithReceipt' }
headers:
Idempotency-Key:
schema: { type: string }
required: true components:
responses:
AcceptedWithReceipt:
description: Accepted, processing asynchronously headers:
Receipt-Hash: { schema: { type: string } }
3)认证,授权,漏洞
面向用户/合作伙伴的OAuth2/OIDC;client-credentials/JWT для S2S.
Scopes/资源角色: 'payments。write`, `catalog.read`, `audit.export`.
ReBAC:"通过拥有"访问(tenant/帐户/sab帐户)。
JIT秘密:短寿命令牌,绑定到设备/子网/区域。
用于关键操作(付款、密钥)的Device posture&mTLS。
4)相似性和"正好有一天"
Idempotency-Key(标题)+TTL窗口上的'(密钥、帐户、路线)'。
发布事件的Outbox/CDC-保证交付。
Exactly-once-effects:副作用通过事务日志固定;重复产生相同的"收据"("receipt_hash")。
Retry Policy:指数后退、挤压、最大窗口。
5)限制,配额,优先级
Rate limits: per-key/tenant/route/region;"软"(429)和"硬"(截止)。
配额/预算:每月/每日配额,webhooks "CotaCapReached"。
公平使用:服务级别的tenant优先级(黄金/银/青铜)。
爆破缓冲区:短暂的爆发,没有邻居降级。
6)分离,过滤器,样本
Cursor-based (stable ordering по `created_at,id`), `page_size` ≤ 1000.
杂志/交易的抽样时间("from","to","watermark")。
Filtering DSL: whitelisted поля, `?status=...&tenant=...®ion=...`.
Consistency hints: "snapshot_at'/'as_of"用于报告API。
7)转化与兼容性
SemVer: `v1`, `v1.1'(扩展),'v2' 仅通过新路径/nijspace。
进化规则:仅通过窗口添加"deprecate → remove"字段/值。
兼容性测试:"合同即测试"(消费者驾驶)。
8)事件,网络手册和收据
AsyncAPI 描述主题/payload/签名。
标题:HMAC/EdDSA,标题"X-Signature","X-Nonce","X-Timestamp"(窄窗口)。
收据(receipts): "receipt_hash"和DSSE签名在关键事件(付款、RTP/限制更改、价格表)上。
Retrai和dedup:通过"idempotency_key"/"event_id"的幂等。
DLQ/检疫:有原因的非验证/重复消息。
9)可观察性和质量
Traces: 通过网关/业务事件/webhooks强制性的"trace_id/span_id"。
Metrics:可用性,p50/p95/p99, error-rate, retry-rate, cost per 1k。
Logs:结构化,无秘密/PII;"tenant/region/version"标签。
SLO/Alerts:面向SLO的条件和自动符文(pause/re-route/rollback)。
10)状态的错误和语义
2 xx-成功(异步操作202个)。
4xx-客户的过错(422-验证,409-冲突/平均值,429-限制)。
5xx-时间问题。
错误主体:"code","message","trace_id","hint","retry_after?"。
合作伙伴的UX:每个错误的"该怎么做"表。
11)策略作为代码(OPA/ABAC)
集中授权:"谁/什么/何时/为什么"。
Git、Code review、CI测试(飞行前: "政策会允许吗?»).
SoD支票:"创建付款"≠"批准"。
12)安全、隐私、合规性
PII最小化:令牌/口罩,仅通过批准的乔巴访问初级。
秘密:Vault/KMS,TTL短,轮换;禁止共享秘密。
加密:mTLS/TLS 1。3、AES-GCM at rest, HSTS/PKP在适当时。
Jurisdiction-aware:按区域本地化数据/密钥。
审计日志:WORM,Merkle切片,DSSE签名。
13)运营: SLI/SLO和dashbords
SLI(示例):- 每个路线/地区的可用性。
- 潜伏期p95(阅读/写作)。
- Webhook(收据)的成功率,交付时间差。
- Error-rate/Retry-rate.
- 1k查询和egress的成本。
SLO(示例):99。95%的可用性;p95 ≤ 120/250毫秒;webhooks ≥ 99。5%/5分钟;P1 MTTR ≤ 60分钟。
14)变更管理(发行/回扣)
蓝绿色/金丝雀用于锁和关键路线。
Ficheflagi用于不发布行为。
Expand→Migrate→Contract用于电路和付费。
Руны: Rollback Release, Disable Flag, Re-route, Flush Cache.
文物:签名的图像/清单,版本注册表。
15) SDK,客户,"沙箱"
具有相同错误和后缀语义的官方SDK(TS/Java/Python/Go)。
带有测试密钥/证书和PSP/KYC/内容提供商模拟器的 Sandbox环境。
合同测试包含在SDK CI(夜间兼容性)中。
16)数据模型(简化)
`api_key` `{id, tenant, scopes[], ttl, created_by}`
`rate_plan` `{tenant, quotas{route→cap}, burst, priority}`
`request_log` `{trace_id, route, actor, idempotency_key?, status, latency_ms, region, cost_unit}`
`webhook_receipt` `{event_id, endpoint, status, attempts, receipt_hash, signature}`
`policy` `{version, rules, signer, dsse}`
17) RACI
18)质量指标
Contract Drift:0"打破"更改而无需删除。
Idempotency Error Rate: ≤ 0.01%.
Webhook Success: ≥ 99.5%,p95 ≤ 60秒差。
Auth Fail vs Abuse:恶意块的份额,噪音≤目标级别。
Cost/1k:路线和区域监测(预算/上限)。
SDK Adoption:通过官方SDK的流量份额。
19)事件花花公子
Spike 429/限值:提高黄金的帽子,trottling"嘈杂"的钥匙,与合作伙伴的联系。
WebhookLag:增加锻炼者/训练营,优先排队,暂时关闭可选的webhook。
PriceMismatch(目录/FX/Tax):版本匹配,高速缓存强制失效,工件回滚,补偿。
PSP外观:切换路线,隔离"灰色"交易,反射。
Compromise API密钥:立即召回,轮换,审核过去30天。
20) iGaming/fintech特点
RTP/Limits API:仅聚合和配置文件版本;更改-收据。
付款/付款:202多个带有签名的webhooks;订单密钥的等效性。
附属机构:转换的厄运,争议代管,签名报告。
负责任的游戏:展示限值和RG事件的"guardrails API"。
21)实施支票
- 描述了合同(OpenAPI/AsyncAPI),CI验证和消费者测试。
- 针对关键路由配置OAuth2/OIDC、漏洞、JIT秘密和mTLS。
- 引入了Idementity、retrai、DLQ和检疫。
- 限制/配额/优先级和差额。
- 游标分段,一致性样本"as_of"。
- 验证和处置政策。
- Webhooks带有签名/收据,继电器和dedup。
- 跟踪/度量/标志,SLO和符文。
- WORM日志、DSSE签名、Merkle切片。
- SDK、sandbox、模拟器、代码示例和"如何"。
22) FAQ
为什么202用于长途手术?
为了避免保持连接并通过webhook提供可靠的转发/收据。
是否需要两者:OpenAPI和AsyncAPI?
是:用于命令/查询的同步;用于事件/状态匹配的async。
如何避免破裂的变化?
"仅添加"规则,deprecate → observe → remove,客户合同测试。
收据在哪里?
在带签名的WORM区域中,"receipt_hash"返回给客户端,并根据请求进行验证。
摘要:通过API进行的操作是合同和运营的学科:严格的访问模式和等效性,限制和版本,可观察性和SLO,签名和收据。添加沙盒和SDK-合作伙伴将快速、安全和可预测地集成,业务将扩展而不会损失质量和合规性。