WebhooksOverview & subscriptions

Webhooks — overview & subscriptions

Webhooks are how you learn about changes. Given the current limits on order list filtering, they are the primary integration mechanism for order intake, not an optimisation.

EndpointDescription
GET /webhooksList your app's subscriptions
POST /webhooksCreate a subscription — returns 201
GET /webhooks/{id}Get one subscription
PUT /webhooks/{id}Update a subscription
DELETE /webhooks/{id}Delete a subscription
POST /webhooks/testSend a synthetic event to an active subscription — returns 202

Creating a subscription

One event type per subscription. eventType is a single value, not a list — to receive five event types, create five subscriptions.

POST /open/v1/webhooks
{
  "eventType":   "order.created",
  "callbackUrl": "https://api.yourcompany.com/hooks/mallplus"
}

Both fields are required, and the body is strict — any other field is rejected with 400 VALIDATION_ERROR. eventType must be one of the values in the event catalog.

Updating a subscription

PUT /open/v1/webhooks/{id}
{
  "callbackUrl": "https://api.yourcompany.com/hooks/mallplus-v2",  // optional
  "isActive":    false                                            // optional — pause without deleting
}

The event type is fixed at creation. To change it, delete the subscription and create a new one.

Callback URL requirements

  • Must be https:// in production, and publicly resolvable.
  • Private, loopback, link-local, carrier-NAT and cloud-metadata addresses are rejected at subscribe time with 400 VALIDATION_ERROR. The hostname is re-resolved and re-checked at delivery time, so a domain that later starts resolving to a private address stops receiving deliveries.
  • If the hostname cannot be resolved, the delivery is not attempted.
  • At most one redirect is followed, and the redirect target is re-validated.
  • Respond within 10 seconds. Acknowledge first, process asynchronously.