Convelio · AsyncAPI Specification

Convelio Webhooks

Version

View Spec View on GitHub CompanyLogisticsShippingFine ArtFreightE-CommerceQuotesWebhookCustomsInsuranceAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-09'
method: derived
source: openapi/convelio-shipping-openapi.yml
docs: https://developers.convelio.com/#tag/webhook
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Convelio publishes NO AsyncAPI document. It does, however, do something better than
  most webhook providers in the catalog: it declares its five events in the OpenAPI
  3.1.0 top-level `webhooks` object with a typed request-body schema per event, so the
  event surface IS machine-readable — it just is not expressed in AsyncAPI. This
  artifact catalogues that surface as-declared. Nothing here is invented; every event
  name, payload field and enum below is lifted from the published spec.
subscription:
  model: self-service via the REST API
  operations:
  - {operationId: listWebhooks, method: GET, path: /webhook, summary: List registered webhooks}
  - {operationId: createWebhook, method: POST, path: /webhook, summary: Create webhook}
  - {operationId: getWebhook, method: GET, path: '/webhook/{webhookId}', summary: Get webhook}
  - {operationId: updateWebhook, method: PUT, path: '/webhook/{webhookId}', summary: Update webhook}
  - {operationId: deleteWebhook, method: DELETE, path: '/webhook/{webhookId}', summary: Delete webhook}
  registration_shape:
    schema: webhook
    fields:
    - {name: id, type: string, format: uuid, readOnly: true}
    - {name: url, type: string, required: true, description: subscriber endpoint Convelio POSTs to}
    - {name: triggering_event_name, type: enum, required: true}
    - {name: creation_date, type: string, format: date-time, readOnly: true}
  one_event_per_subscription: true
  note: >-
    A webhook registration binds exactly one triggering_event_name, so a partner wanting
    all five events registers five webhooks.
delivery:
  transport: HTTP POST
  content_type: application/json
  expected_response: 204 No Content
  signature:
    header: X-Convelio-signature
    algorithm: HMAC-SHA256
    signed_over: the request body
    key: the account's API secret token
    scheme_name: convelio_signature
  retries: not documented
  ordering: not documented
  replay: not documented
envelope:
  fields:
  - {name: event, type: string, description: the event name, constrained by enum on each event schema}
  - {name: created, type: string, format: date-time}
  - {name: payload, type: object, description: event-specific body}
events:
- name: custom_quote_ready
  channel: custom-quote-ready
  operationId: customQuoteReadyEvent
  summary: Custom Quote Ready Event
  description: Sent when a price is available for a custom quote.
  schema: custom-quote-ready-event
  payload:
  - {field: quote_id, type: string, format: uuid, description: The Quote ID}
  significance: >-
    This is the event that closes the loop on the API's most important asynchronous
    branch. createShippingQuote can return a quote in status `processing` when Convelio
    cannot price instantly (geography, oversized item, high commercial value); the
    operations team produces a custom quote within 24h and this event announces it.
- name: quote_paid
  channel: quote-paid
  operationId: quotePaidEvent
  summary: Quote Paid Event
  description: Sent when a quote was paid.
  schema: quote-paid-event
  payload:
  - {field: quote_id, type: string, format: uuid, description: The Quote ID}
  - {field: tracking_link, type: string, description: Link to follow the progress of the shipping order}
- name: order_created
  channel: order-created
  operationId: orderCreatedEvent
  summary: Order Created Event
  description: Sent when an order is created through the API.
  schema: orde-created-event
  payload:
  - {field: quote_id, type: string, format: uuid, description: The Quote ID}
  - {field: order_id, type: string, format: uuid, description: The Order ID}
  note: >-
    The backing component schema is named `orde-created-event` in the published
    document — a typo Convelio ships. Recorded verbatim, not corrected.
- name: shipment_status_changed
  channel: shipment-status-changed
  operationId: shipmentStatusChangedEvent
  summary: Shipment Status Changed Event
  description: Sent when a new shipment status is published.
  schema: shipment-status-changed-event
  payload:
  - {field: order_id, type: string, format: uuid, description: The Order ID}
  - {field: status, type: enum, ref: shipment-status}
  status_values:
  - {value: shipment_created, meaning: The Order has been booked and our team is planning collection at the pickup location}
  - {value: picked_up, meaning: The items have been collected at the pickup location}
  - {value: packing_in_progress, meaning: The items are being packed at one of our crating centers}
  - {value: export_in_progress, meaning: The shipment has left our crating center to be sent abroad}
  - {value: freight_in_transit, meaning: The shipment is on its way to the delivery location}
  - {value: import_in_progress, meaning: The shipment has arrived at country of destination}
  - {value: out_for_delivery, meaning: The carrier is about to deliver the shipment}
  - {value: shipment_completed, meaning: The shipment has been delivered to the delivery location}
  - {value: on_hold, meaning: The shipment has temporarily been paused}
  - {value: canceled, meaning: The shipment has been canceled}
- name: document_ready
  channel: document-ready
  operationId: documentReadyEvent
  summary: Document Ready Event
  description: Sent when a new document is available.
  schema: document-ready-event
  payload:
  - {field: order_id, type: string, format: uuid, description: The Order ID}
  - {field: document_type, type: string, description: The type of document}
  - {field: dashboard_order_link, type: string, description: link to the order in the Convelio dashboard}
coverage:
  events_declared: 5
  events_with_typed_schema: 5
  subscription_operations: 5
gaps:
- No AsyncAPI document — the event surface is discoverable only by reading the OpenAPI webhooks block.
- No documented retry policy, backoff, or delivery guarantee.
- No replay/redelivery endpoint and no delivery-log surface.
- No signature-verification worked example or signing-secret rotation procedure.
- No event catalogue page in the help centre; the spec is the only description.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/convelio-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.