Commit 5f54fb2
feat(webapp,core): webhook response contracts, GET verification and verify tokens
## Summary
Hosted webhook sources can now describe how the provider expects to be
answered, and the ingress honors it. This is the server side for
providers like Discord and WhatsApp, whose SDK sources follow in a later
release.
- A verifier artifact can declare a response contract as data: the
status code for a handshake answer (`respondStatus`), and the codes
returned for accepted deliveries and rejected signatures
(`response.acceptedStatus`, `response.rejectedStatus`). The ingress and
the dashboard's send action map every outcome through the same helper,
so a source that needs 204 on success and 401 on a bad signature gets
exactly that.
- A verifier artifact can declare a GET verification flow
(`getHandshake`) for providers that confirm a callback URL with a
challenge, such as Meta's `hub.challenge`. The ingress answers GET on
the endpoint URL against a dedicated verify token, which you generate
and reveal from the endpoint's Connect panel. The token is its own
credential, separate from the signing secret.
- HMAC verifiers can read the signed timestamp from a body field. The
Linear provider uses it for a 60 second replay window on
`webhookTimestamp`; deliveries are deduplicated on the signed request
itself, so a replay with a different unsigned delivery header is still
recognised as a duplicate.
- The dashboard's test-send re-signs a recorded sample with the current
timestamp, so sources with a body-timestamp replay window accept it.
- An admin API action bootstraps delivery partitions in the configured
webhook database before enablement. It is safe to repeat and preserves
existing partitions. Bootstrap and daily maintenance can use
`WEBHOOK_DATABASE_DIRECT_URL` with separate owner credentials while
application queries use `WEBHOOK_DATABASE_URL`. When the direct URL is
unset, partition operations reuse the webhook writer.
- The index worker protocol gains a message for duplicate webhook ids,
so the CLI can report which files define the same id. The CLI side of
this ships with the SDK release that adds `webhook()`.
Mono-RevId: 54862ef81ec5adc311aa42783020fedc4b8c3ba91 parent dbe29cc commit 5f54fb2
42 files changed
Lines changed: 2065 additions & 139 deletions
File tree
- .changeset
- apps/webapp
- app
- components/webhookConsole
- routes
- _app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam
- services/realtime
- v3
- test
- internal-packages
- webhook-engine
- src
- engine
- signing
- webhook-sources
- catalog
- src
- handAuthored
- registry
- packages/core/src/v3
- schemas
- webhooks
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
Lines changed: 17 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
36 | | - | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
369 | 370 | | |
370 | 371 | | |
371 | 372 | | |
372 | | - | |
| 373 | + | |
373 | 374 | | |
374 | 375 | | |
375 | 376 | | |
| |||
477 | 478 | | |
478 | 479 | | |
479 | 480 | | |
480 | | - | |
| 481 | + | |
481 | 482 | | |
482 | 483 | | |
483 | 484 | | |
484 | 485 | | |
485 | | - | |
| 486 | + | |
486 | 487 | | |
487 | 488 | | |
488 | 489 | | |
| |||
542 | 543 | | |
543 | 544 | | |
544 | 545 | | |
545 | | - | |
| 546 | + | |
| 547 | + | |
546 | 548 | | |
547 | 549 | | |
548 | 550 | | |
| |||
562 | 564 | | |
563 | 565 | | |
564 | 566 | | |
565 | | - | |
| 567 | + | |
566 | 568 | | |
567 | 569 | | |
568 | 570 | | |
| |||
584 | 586 | | |
585 | 587 | | |
586 | 588 | | |
587 | | - | |
588 | | - | |
589 | | - | |
590 | | - | |
591 | | - | |
592 | | - | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
593 | 598 | | |
594 | 599 | | |
595 | 600 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
| 175 | + | |
175 | 176 | | |
176 | 177 | | |
177 | 178 | | |
| |||
256 | 257 | | |
257 | 258 | | |
258 | 259 | | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
259 | 280 | | |
260 | 281 | | |
261 | 282 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
376 | 376 | | |
377 | 377 | | |
378 | 378 | | |
| 379 | + | |
| 380 | + | |
379 | 381 | | |
380 | 382 | | |
381 | 383 | | |
| |||
Lines changed: 165 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
112 | 113 | | |
113 | 114 | | |
114 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
115 | 129 | | |
116 | 130 | | |
117 | 131 | | |
| |||
142 | 156 | | |
143 | 157 | | |
144 | 158 | | |
| 159 | + | |
145 | 160 | | |
146 | 161 | | |
147 | 162 | | |
| |||
151 | 166 | | |
152 | 167 | | |
153 | 168 | | |
| 169 | + | |
| 170 | + | |
154 | 171 | | |
155 | 172 | | |
156 | 173 | | |
| |||
197 | 214 | | |
198 | 215 | | |
199 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
200 | 232 | | |
201 | 233 | | |
202 | 234 | | |
| |||
212 | 244 | | |
213 | 245 | | |
214 | 246 | | |
215 | | - | |
| 247 | + | |
216 | 248 | | |
217 | 249 | | |
218 | 250 | | |
| |||
297 | 329 | | |
298 | 330 | | |
299 | 331 | | |
| 332 | + | |
300 | 333 | | |
301 | 334 | | |
302 | 335 | | |
| |||
313 | 346 | | |
314 | 347 | | |
315 | 348 | | |
| 349 | + | |
316 | 350 | | |
317 | 351 | | |
318 | 352 | | |
319 | 353 | | |
| 354 | + | |
320 | 355 | | |
321 | 356 | | |
322 | 357 | | |
| |||
336 | 371 | | |
337 | 372 | | |
338 | 373 | | |
| 374 | + | |
| 375 | + | |
339 | 376 | | |
340 | 377 | | |
341 | 378 | | |
| |||
381 | 418 | | |
382 | 419 | | |
383 | 420 | | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
384 | 445 | | |
385 | 446 | | |
386 | 447 | | |
| |||
732 | 793 | | |
733 | 794 | | |
734 | 795 | | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
735 | 899 | | |
736 | 900 | | |
737 | 901 | | |
| |||
0 commit comments