Skip to main content
POST
/
api
/
auth
/
github
/
webhook
GitHub Marketplace webhook receiver
curl --request POST \
  --url https://pria.praxislxp.com/api/auth/github/webhook \
  --header 'Content-Type: application/json' \
  --header 'X-Hub-Signature-256: <x-hub-signature-256>' \
  --data '
{
  "action": "purchased",
  "effective_date": "2023-11-07T05:31:56Z",
  "sender": {
    "login": "<string>",
    "id": 123,
    "type": "<string>",
    "email": "<string>",
    "avatar_url": "<string>"
  },
  "marketplace_purchase": {
    "account": {},
    "plan": {},
    "billing_cycle": "<string>",
    "unit_count": 123,
    "on_free_trial": true,
    "free_trial_ends_on": "<string>",
    "next_billing_date": "<string>"
  }
}
'
{
  "received": true,
  "error": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://docs.praxis-ai.com/llms.txt

Use this file to discover all available pages before exploring further.

Headers

X-Hub-Signature-256
string
required

HMAC-SHA256 of the raw request body, prefixed with sha256=.

X-GitHub-Event
string

GitHub event type. Only marketplace_purchase is acted on; everything else is logged and acknowledged.

X-GitHub-Delivery
string

Per-delivery UUID assigned by GitHub (for log correlation).

Body

application/json

Raw GitHub Marketplace payload. The handler reads req.body as a Buffer and JSON-parses after signature verification. See GitHub's marketplace_purchase documentation for the full shape.

action
enum<string>
Available options:
purchased,
changed,
cancelled,
pending_change,
pending_change_cancelled
Example:

"purchased"

effective_date
string<date-time>
sender
object
marketplace_purchase
object

Response

Webhook accepted. The handler always returns 200 once the signature passes — even if the downstream business logic threw — so GitHub does not retry. On internal failures the response includes error.

received
boolean
Example:

true

error
string

Present only when post-signature processing threw.