Grantex can POST a signed JSON payload to your server whenever key events occur — grant created, grant revoked, or token issued. Use webhooks to keep your application in sync with the authorization lifecycle without polling.
Supported Events
Registering an Endpoint
Response:
The secret is returned only once. Store it securely — you need it to verify incoming payloads.
Event Payload Shape
Every webhook POST has the same envelope:
grant.created
grant.revoked
cascade: true means descendant grants were also revoked.
token.issued
Verifying Signatures
Every request carries a timestamped signature over <timestamp>.<raw body>:
Verify against X-Grantex-Signature-V2 and reject deliveries older than your
tolerance (300 seconds by default). Both halves matter: the timestamp is inside
the signed material, so it cannot be rewritten, and without it a captured
delivery would stay valid forever.
Each delivery attempt is signed at the moment it is sent, so a retry arriving
after backoff carries a fresh timestamp rather than the time the event was
queued.
Always verify against the raw request body. A body that has been parsed and
re-serialized will not hash to the same value.
TypeScript:
Python:
Go:
Legacy X-Grantex-Signature
The original header signs the body alone. Because it commits to nothing
time-bound, a delivery captured once stays valid forever and can be replayed at
any time. It is still sent so existing receivers keep working, and
verifyWebhookSignature / verify_webhook_signature /
VerifyWebhookSignature still verify it — but they are deprecated. Move to the
timestamped header; the legacy one will be withdrawn.
SDK Usage
Delivery Behaviour
- Grantex delivers webhooks with a 10-second timeout per request.
- Your endpoint should return any 2xx status to be considered successful.
- Respond quickly (under 5s) and do heavy processing asynchronously.
- Failed deliveries are retried with exponential backoff.
Local Development
Use a tunnel tool to expose your local server:
Ownership
Grantex is owned by Orchestrum Technologies LLP. Inventor and owner: Sanjeev Kumar. Ownership contact: sanjeev@orchestrum.in or mishra.sanjeev@gmail.com.