Create an endpoint
SendPOST /workspaces/{workspace_id}/webhook-endpoints.
Select the event types and the content mode.
Verify the signature
Read the exact request body bytes before you parse JSON. Read the timestamp and signatures fromOpenPMM-Signature.
Calculate HMAC-SHA256 over <timestamp>.<raw request body>.
Reject a timestamp outside your replay tolerance.
Secret rotation can add two v1 signatures to the header.
Accept a signature from either active secret during the overlap period.
The CLI can verify a saved body without an API request:
Handle retries and order
UseOpenPMM-Event-Id to deduplicate event processing.
Use OpenPMM-Delivery-Id to correlate delivery attempts.
Do not assume global event order.
Your endpoint can receive the same event more than once.
OpenPMM retries HTTP 408, 425, 429, and 5xx responses.
Other HTTP 4xx responses stop delivery attempts.
These retries start only after OpenPMM creates the delivery task.
They do not recover an event that fails before task creation.
Return a successful HTTP status only after you store the event safely.
Then get the Post when your workflow needs its current state.
Test the endpoint
UsePOST /workspaces/{workspace_id}/webhook-endpoints/{endpoint_id}/test.
The test uses the endpoint configuration and signing contract.
The public API does not provide durable event history, delivery history, or manual redelivery.
Keep your own event IDs and request IDs for support.