协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
flexport-webhooks-events【开发与工程】Verify Flexport webhook signatures on the raw request body and reconcile real event types. Use when building a receiver, rotating webhook secrets, processing shipment or purchase-order events, or recovering delivery gaps. Trigger with: "verify Flexport webhook", "handle Flexport event", "reconcile webhook gap".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: flexport-webhooks-events description: >- Verify Flexport webhook signatures on the raw request body and reconcile real event types. Use when building a receiver, rotating webhook secrets, processing shipment or purchase-order events, or recovering delivery gaps. Trigger with: "verify Flexport webhook", "handle Flexport event", "reconcile webhook gap". allowed-tools: Read, Grep, Write, Edit version: 2.0.0 argument-hint: '[receiver-event-types-and-secret-alias]' model: inherit effort: high license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Authenticate before parsing. Flexport documents both SHA-1 and SHA-256 signatures, with SHA-256 recommended in X-Hub-Signature-256; compare against the raw UTF-8 body and treat webhook delivery as a notification that may require API reconciliation.
Configure the callback and secret in Flexport account Settings. Record the intended event types and owner.
Read the exact request body before middleware transforms encoding or JSON layout.
Compute HMAC-SHA256 with the stored secret, parse X-Hub-Signature-256, reject malformed or unequal-length inputs, and use constant-time comparison.
After authentication and durable enqueue, return HTTP 200 promptly. Keep business processing out of the request path.
Use provider event identity when present or a stable payload digest. Allow only documented names such as /shipment#created or /purchase_order#updated.
Use authorized REST /events or resource reads when evidence indicates a delivery gap; do not invent a webhook replay endpoint or retry schedule.
REST calls authenticate with a cached OAuth 2.0 client-credentials Bearer token using audience https://api.flexport.com, or an explicitly accepted broad API key. Use distinct credentials per workload and never log credentials or tokens. MCP calls use the authenticated connection to https://mcp.flexport.com/mcp and remain subject to each tool's documented account permissions.
Use Read and Grep for discovery and evidence. Use Write or Edit only for the approved artifact, code, configuration, test, or receipt described by this workflow; do not make an unapproved Flexport-side change.
Return a machine-reviewable receipt in this shape; adapt the operation values, but never place credentials or provider payloads in it:
surface: rest-v3
operation: shipment-read
decision: approved
outcome: verified
evidence:
release_sha: recorded-out-of-band
provider_reference: redacted
rollback_owner: logistics-platform
The receiver verifies X-Hub-Signature-256 over untouched bytes, durably enqueues /shipment_leg#departed, returns 200, and lets a worker reconcile the referenced shipment before updating local state.
| Failure | Response |
|---|---|
| Signature missing or malformed | Return an authentication failure and store no payload. |
| Digest lengths differ | Reject before constant-time comparison rather than throwing. |
| Unknown event type | Quarantine metadata and compare with current event documentation. |
| Duplicate delivery | Return success after confirming the prior durable operation. |