This reference is the skmtc/api-change-webhooks API on Hub. Star it to see each revision, and add a pipeline to get its changes.

Star

API change event

A pipeline delivery. Delivery is at least once and in no fixed order.

Request

Method
POSTto the HTTPS destination of the webhook action
content-type
application/cloudevents+json; charset=utf-8
user-agent
SKMTC-Hub-Webhooks/1header, required

Hub's webhook client; the 1 matches the v1 of the event types.

skmtc-signature
stringheader, requiredVerify the signature

t=<unix seconds>,v1=<hex HMAC-SHA256>. The HMAC key is the webhook's whole secret as UTF-8, whsec_ prefix included; the signed content is <t>.<raw body>. Compute it from the raw body before parsing it, compare in constant time, and refuse a t more than five minutes from your clock. Each attempt signs again with a new t and the current secret.

Event data

object

One structured-mode CloudEvent 1.0: the pipeline delivery event.

specversionenumrequired1.0
idstringrequired

The same on every attempt of a delivery. Use it to find duplicates. A pipeline delivery that Run now starts again sends a new id.

sourcestringrequired

The Hub site that sent the event, e.g. https://skmtc.dev.

subjectstringrequired

The API, as {owner}/{slug}.

timestringrequired

When Hub captured the event; for a pipeline delivery event, when the delivery started. This is not the publisher's time.

datacontenttypeenumrequiredapplication/json
typeenumrequireddev.skmtc.pipeline.delivery.v1
dataobjectrequired

The data of a delivery event.

Example event
{
  "specversion": "1.0",
  "id": "string",
  "source": "https://example.com",
  "subject": "string",
  "time": "2026-10-30T12:00:00Z",
  "datacontenttype": "application/json",
  "type": "dev.skmtc.pipeline.delivery.v1",
  "data": {
    "deliveryId": "string",
    "pipeline": {
      "owner": "string",
      "name": "string",
      "url": "https://example.com"
    },
    "api": {
      "id": "string",
      "owner": "string",
      "slug": "string",
      "name": "string",
      "url": "https://example.com"
    },
    "revision": {
      "id": "string",
      "contentHash": "string",
      "version": "string",
      "publishedAt": "2026-10-30T12:00:00Z",
      "retrievedAt": "2026-10-30T12:00:00Z",
      "url": "https://example.com"
    },
    "results": [
      {
        "type": "generate",
        "outcome": "succeeded",
        "reasonCode": "string",
        "detail": "string",
        "durationMs": 0
      }
    ]
  }
}

Response

2XX

Any 2xx: the delivery succeeded. Hub does not read the body.

307

Hub sends the same request to location, for not more than 3 redirects.

308

Hub sends the same request to location, for not more than 3 redirects.

3XX

Any other 3xx or 4xx: the delivery fails and Hub does not try again.

408

Hub tries again later with the same event id, for not more than 24 hours from the first attempt. Hub also tries again after a timeout of 10 seconds or a network error.

429

Hub tries again later with the same event id, for not more than 24 hours from the first attempt. Hub also tries again after a timeout of 10 seconds or a network error.

4XX

Any other 3xx or 4xx: the delivery fails and Hub does not try again.

5XX

Hub tries again later, as for 408 and 429.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.