Procurement API
Procurement Events
React to order, fulfilment, invoice and procurement status changes through event-driven integrations.
Delivery
Signed webhooks
Retries
Exponential retry policy
Verification
Signature required
Idempotency
Event IDs
Event model
| Field | Purpose |
|---|---|
| id | Globally unique event identifier |
| type | Event name |
| created_at | Event creation timestamp |
| tenant_id | Tenant context |
| data | Resource snapshot / event payload |
| version | Event contract version |
Order events
| Event | When emitted |
|---|---|
| procurement.order.submitted | Purchase order submitted |
| procurement.order.acknowledged | Supplier acknowledges order |
| procurement.order.cancelled | Order cancelled |
| procurement.order.fulfilled | Fulfilment completed |
Fulfilment events
| Event | When emitted |
|---|---|
| procurement.delivery.dispatched | Shipment dispatched |
| procurement.delivery.delayed | Delivery delay reported |
| procurement.delivery.delivered | Delivery completed |
| procurement.return.updated | Return state changes |
Invoice events
| Event | When emitted |
|---|---|
| procurement.invoice.issued | Supplier invoice registered |
| procurement.invoice.reconciled | Invoice matched to order/delivery |
| procurement.payment.settled | Payment settlement completed |
Webhook delivery
Verify the Mediloop signature before processing the request, return a 2xx response quickly, and move longer processing to an internal queue. Delivery attempts may be retried.
Idempotent consumers
Persist the event
id before applying side effects. If the same event arrives more than once, acknowledge it without repeating the business operation.Example event
cURLJavaScriptPython
{
"id": "evt_01J...",
"type": "procurement.order.acknowledged",
"created_at": "2026-08-18T15:42:10Z",
"tenant_id": "tenant_123",
"data": { "purchase_order_id": "po_42", "supplier_id": "sup_42", "status": "acknowledged" }
}procurement.order.acknowledged