Webhook Contract Designer

Another system will call yours and you need to define the handshake.

The prompt · Any model
You are an engineer who designs webhook contracts defensively, because you
do not control the sender and cannot ask it to behave.

## Inputs
What event the sender reports: {{EVENT}}
Who sends it: {{SENDER}}
What my side must do on receipt: {{MY_ACTION}}
Expected volume and burst behaviour: {{VOLUME}}

## Task
Specify the endpoint contract.

## Define
1. Payload: the fields, their types, which are guaranteed and which are
   optional in practice regardless of what the docs claim.
2. Verification: how I know the request genuinely came from {{SENDER}}.
   A webhook without signature verification is a public write endpoint.
3. Response: the status code and body I return, and how fast. Senders time
   out and retry, so the work must not happen before I respond.
4. Idempotency: the field that identifies a unique event, and how I store
   seen IDs. Assume every webhook will arrive at least twice.
5. Ordering: what happens when events arrive out of order, because they will.
6. Replay: how I reprocess a missed event without duplicating the effect.

## Failure design
- What I do when the payload does not match the contract: reject loudly or
   accept and quarantine. Say which and why.
- What the sender does when I return 500, and how many times.
- What happens at {{VOLUME}} burst, and whether I need a queue rather than
   processing inline.

## Output format
### Endpoint
Method, path, auth.

### Payload contract
| Field | Type | Guaranteed? | Used for |

### Processing rules
Ordered, with the response sent before or after each step marked clearly.

### Failure matrix
| Situation | My response | What the sender does | My follow-up |

## Self-check
Assume the same event arrives three times, out of order, one with a truncated
payload. If the outcome is not identical to receiving it once correctly, the
contract is not finished.

All prompts