Skip to content

Commit b72de49

Browse files
chore(webhooks): fix spelling mistakes
1 parent 6f40c38 commit b72de49

1 file changed

Lines changed: 4 additions & 11 deletions

File tree

docs/webhooks/security.md

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,33 +30,26 @@ Every webhook request from epilot includes three signature headers:
3030
|--------|-------------|
3131
| `webhook-id` | Unique message identifier (e.g. `msg_2a4f8b...`) |
3232
| `webhook-timestamp` | Unix timestamp (seconds) when the request was signed |
33-
| `webhook-signature` | Space-separated signatures: `v1a,<asymmetric> v1s,<symmetric>` |
33+
| `webhook-signature` | Space-separated signatures: `v1a,<asymmetric> v1,<symmetric>` |
3434

3535
## Two Signatures, Two Purposes
3636

3737
epilot sends **two** signatures with each webhook request:
3838

3939
- **`v1a`** (asymmetric, Ed25519) — Proves the request came from your organization. Verified using your organization's public key, which is specific to your tenant and never shared across organizations.
40-
- **`v1s`** (symmetric, HMAC-SHA256) — Proves the request is intended for your specific webhook. Verified using the `whsec_...` signing secret you received when the webhook was created.
40+
- **`v1`** (symmetric, HMAC-SHA256) — Proves the request is intended for your specific webhook. Verified using the `whsec_...` signing secret you received when the webhook was created.
4141

4242
Both signatures are computed over the same content:
4343

4444
```
4545
signed_content = ${webhook-id}.${webhook-timestamp}.${request_body}
4646
```
4747

48-
## Signed Payload Fields
49-
50-
Every webhook payload includes two system-injected fields that are **always set by epilot after any payload transformations** (including JSONata). These fields cannot be modified or spoofed:
51-
52-
- `_org_id` — The epilot organization ID that owns the webhook
53-
- `_webhook_event_id` — The unique event ID for this webhook invocation
54-
5548
## Verification
5649

5750
### Option 1: Symmetric Verification (recommended for most use cases)
5851

59-
Use the [`standardwebhooks`](https://www.npmjs.com/package/standardwebhooks) npm package to verify the `v1s` signature with your webhook's signing secret.
52+
Use the [`standardwebhooks`](https://www.npmjs.com/package/standardwebhooks) npm package to verify the `v1` signature with your webhook's signing secret.
6053

6154
```typescript
6255
import { Webhook } from "standardwebhooks";
@@ -100,7 +93,7 @@ import crypto from "node:crypto";
10093
// Requires org_id query parameter
10194
async function getOrgPublicKey(orgId: string): Promise<string> {
10295
const response = await fetch(
103-
`https://webhooks.sls.epilot.cloud/v1/webhooks/.well-known/public-key?org_id=${orgId}`
96+
`https://webhooks.sls.epilot.cloud/v1/webhooks/.well-known/public-key?orgId=${orgId}`
10497
);
10598
const data = await response.json();
10699
return data.publicKey;

0 commit comments

Comments
 (0)