Publish content

Manage webhooks

action:

  • register: url (must be https://), event_types (one or more of license.paid, license.issued, license.revoked, license.expired, archive.subscribed), optional platform (canonical default, ghost or beehiiv). The answer is the new webhook plus its signing secret webhook_secret_plaintext (whsec_…), shown once.
  • list: your webhooks, without secrets.
  • revoke: id of the webhook; revoking twice answers already_revoked: true.
  • test: id of the webhook; sends a test event now and tells you whether it arrived (delivered, status_code).

Each delivery is a POST with headers X-Opedd-Event, X-Opedd-Timestamp (Unix milliseconds), X-Opedd-Webhook-Id and X-Opedd-Signature: sha256=<hex>, t=<timestamp>. The signature is an HMAC-SHA256, made with your secret, of the raw request body followed directly by the timestamp. Compute the same on your side and compare before trusting a delivery.

Works with your publisher key or your dashboard sign-in. Limits per hour: 10 registrations, 600 lists, 30 removals, 30 tests. archive.subscribed can be registered but is not sent at present.

post/publishers-webhooks

Request

  • Base URL: https://api.opedd.com
  • URL: https://api.opedd.com/publishers-webhooks
  • Auth: HTTP bearer

Headers

Idempotency-Keystring
X-Request-Idstring

Request body

OR
OR
OR

Example request

{
  "event_types": [
    "license.paid",
    "license.issued"
  ]
}

Response

Success. The answer depends on action.

successtrue required
request_idstring

Echoed from request X-Request-Id header or server-generated.

Example response

{
  "data": {
    "event_types": [
      "license.paid",
      "license.issued"
    ],
    "warning": "Save this webhook_secret now. It will not be shown again."
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.