@productcraft/rally 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { makeClient, PCClientConfig } from '@productcraft/core';
6
6
  */
7
7
 
8
8
  interface paths {
9
- "/v1/waitlists/{workspaceSlug}/{waitlistSlug}": {
9
+ "/v1/waitlists/{workspace_slug}/{waitlist_slug}": {
10
10
  parameters: {
11
11
  query?: never;
12
12
  header?: never;
@@ -23,7 +23,7 @@ interface paths {
23
23
  patch?: never;
24
24
  trace?: never;
25
25
  };
26
- "/v1/waitlists/{workspaceSlug}/{waitlistSlug}/entries": {
26
+ "/v1/waitlists/{workspace_slug}/{waitlist_slug}/entries": {
27
27
  parameters: {
28
28
  query?: never;
29
29
  header?: never;
@@ -40,7 +40,7 @@ interface paths {
40
40
  patch?: never;
41
41
  trace?: never;
42
42
  };
43
- "/v1/waitlists/{workspaceSlug}/{waitlistSlug}/leaderboard": {
43
+ "/v1/waitlists/{workspace_slug}/{waitlist_slug}/leaderboard": {
44
44
  parameters: {
45
45
  query?: never;
46
46
  header?: never;
@@ -57,7 +57,7 @@ interface paths {
57
57
  patch?: never;
58
58
  trace?: never;
59
59
  };
60
- "/v1/workspaces/{workspaceId}/rally/settings": {
60
+ "/v1/workspaces/{workspace_id}/rally/settings": {
61
61
  parameters: {
62
62
  query?: never;
63
63
  header?: never;
@@ -75,7 +75,7 @@ interface paths {
75
75
  patch?: never;
76
76
  trace?: never;
77
77
  };
78
- "/v1/workspaces/{workspaceId}/waitlists": {
78
+ "/v1/workspaces/{workspace_id}/waitlists": {
79
79
  parameters: {
80
80
  query?: never;
81
81
  header?: never;
@@ -93,7 +93,7 @@ interface paths {
93
93
  patch?: never;
94
94
  trace?: never;
95
95
  };
96
- "/v1/workspaces/{workspaceId}/waitlists/{id}": {
96
+ "/v1/workspaces/{workspace_id}/waitlists/{id}": {
97
97
  parameters: {
98
98
  query?: never;
99
99
  header?: never;
@@ -112,7 +112,7 @@ interface paths {
112
112
  patch: operations["WaitlistController_update"];
113
113
  trace?: never;
114
114
  };
115
- "/v1/workspaces/{workspaceId}/waitlists/{id}/status": {
115
+ "/v1/workspaces/{workspace_id}/waitlists/{id}/status": {
116
116
  parameters: {
117
117
  query?: never;
118
118
  header?: never;
@@ -129,7 +129,7 @@ interface paths {
129
129
  patch: operations["WaitlistController_updateStatus"];
130
130
  trace?: never;
131
131
  };
132
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/analytics": {
132
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/analytics": {
133
133
  parameters: {
134
134
  query?: never;
135
135
  header?: never;
@@ -146,7 +146,7 @@ interface paths {
146
146
  patch?: never;
147
147
  trace?: never;
148
148
  };
149
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/analytics/timeline": {
149
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/analytics/timeline": {
150
150
  parameters: {
151
151
  query?: never;
152
152
  header?: never;
@@ -163,7 +163,7 @@ interface paths {
163
163
  patch?: never;
164
164
  trace?: never;
165
165
  };
166
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries": {
166
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries": {
167
167
  parameters: {
168
168
  query?: never;
169
169
  header?: never;
@@ -180,7 +180,7 @@ interface paths {
180
180
  patch?: never;
181
181
  trace?: never;
182
182
  };
183
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries/bulk": {
183
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries/bulk": {
184
184
  parameters: {
185
185
  query?: never;
186
186
  header?: never;
@@ -197,7 +197,7 @@ interface paths {
197
197
  patch?: never;
198
198
  trace?: never;
199
199
  };
200
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries/count": {
200
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries/count": {
201
201
  parameters: {
202
202
  query?: never;
203
203
  header?: never;
@@ -214,7 +214,7 @@ interface paths {
214
214
  patch?: never;
215
215
  trace?: never;
216
216
  };
217
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries/export.csv": {
217
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries/export.csv": {
218
218
  parameters: {
219
219
  query?: never;
220
220
  header?: never;
@@ -231,7 +231,7 @@ interface paths {
231
231
  patch?: never;
232
232
  trace?: never;
233
233
  };
234
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries/{entryId}": {
234
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries/{entry_id}": {
235
235
  parameters: {
236
236
  query?: never;
237
237
  header?: never;
@@ -250,7 +250,7 @@ interface paths {
250
250
  patch: operations["EntryController_updateStatus"];
251
251
  trace?: never;
252
252
  };
253
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/entries/{entryId}/invite-to-app": {
253
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/entries/{entry_id}/invite-to-app": {
254
254
  parameters: {
255
255
  query?: never;
256
256
  header?: never;
@@ -267,7 +267,7 @@ interface paths {
267
267
  patch?: never;
268
268
  trace?: never;
269
269
  };
270
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/variants": {
270
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/variants": {
271
271
  parameters: {
272
272
  query?: never;
273
273
  header?: never;
@@ -285,7 +285,7 @@ interface paths {
285
285
  patch?: never;
286
286
  trace?: never;
287
287
  };
288
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/variants/{id}": {
288
+ "/v1/workspaces/{workspace_id}/waitlists/{waitlist_id}/variants/{id}": {
289
289
  parameters: {
290
290
  query?: never;
291
291
  header?: never;
@@ -303,17 +303,17 @@ interface paths {
303
303
  patch: operations["VariantController_update"];
304
304
  trace?: never;
305
305
  };
306
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/webhooks": {
306
+ "/v1/workspaces/{workspace_id}/webhooks": {
307
307
  parameters: {
308
308
  query?: never;
309
309
  header?: never;
310
310
  path?: never;
311
311
  cookie?: never;
312
312
  };
313
- /** List webhooks for a waitlist (secrets masked) */
313
+ /** List webhooks for the workspace (secrets masked) */
314
314
  get: operations["WebhookController_list"];
315
315
  put?: never;
316
- /** Create a webhook. The response includes the per-row signing secret in clear EXACTLY ONCE — copy it now. */
316
+ /** Create a workspace webhook. The response includes the per-row signing secret in clear EXACTLY ONCE — copy it now. */
317
317
  post: operations["WebhookController_create"];
318
318
  delete?: never;
319
319
  options?: never;
@@ -321,7 +321,7 @@ interface paths {
321
321
  patch?: never;
322
322
  trace?: never;
323
323
  };
324
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/webhooks/{id}": {
324
+ "/v1/workspaces/{workspace_id}/webhooks/{id}": {
325
325
  parameters: {
326
326
  query?: never;
327
327
  header?: never;
@@ -340,7 +340,7 @@ interface paths {
340
340
  patch: operations["WebhookController_update"];
341
341
  trace?: never;
342
342
  };
343
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/webhooks/{id}/deliveries": {
343
+ "/v1/workspaces/{workspace_id}/webhooks/{id}/deliveries": {
344
344
  parameters: {
345
345
  query?: never;
346
346
  header?: never;
@@ -357,7 +357,7 @@ interface paths {
357
357
  patch?: never;
358
358
  trace?: never;
359
359
  };
360
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/webhooks/{id}/rotate-secret": {
360
+ "/v1/workspaces/{workspace_id}/webhooks/{id}/rotate-secret": {
361
361
  parameters: {
362
362
  query?: never;
363
363
  header?: never;
@@ -374,7 +374,7 @@ interface paths {
374
374
  patch?: never;
375
375
  trace?: never;
376
376
  };
377
- "/v1/workspaces/{workspaceId}/waitlists/{waitlistId}/webhooks/{id}/test": {
377
+ "/v1/workspaces/{workspace_id}/webhooks/{id}/test": {
378
378
  parameters: {
379
379
  query?: never;
380
380
  header?: never;
@@ -405,7 +405,7 @@ interface components {
405
405
  * @description Heimdall app slug override for `action: invite-to-app`. When omitted, falls back to `rally_settings.default_heimdall_app_slug`. Ignored for approve/reject.
406
406
  * @example acme-product
407
407
  */
408
- appSlug?: string;
408
+ app_slug?: string;
409
409
  /**
410
410
  * @description Entry UUIDs to act on in this batch. Capped at 100 per call; the request is processed serially and per-row results are returned. De-duped server-side.
411
411
  * @example [
@@ -418,7 +418,7 @@ interface components {
418
418
  * @description Whether to send the rally/approved email with the invite link baked in. Defaults to `true`. Ignored for approve/reject.
419
419
  * @default true
420
420
  */
421
- sendEmail: boolean;
421
+ send_email: boolean;
422
422
  };
423
423
  CreateEntryDto: {
424
424
  /**
@@ -436,16 +436,16 @@ interface components {
436
436
  */
437
437
  name: string;
438
438
  /** @description reCAPTCHA v3 token; verified server-side when the waitlist has settings.recaptcha_site_key */
439
- recaptchaToken?: string;
439
+ recaptcha_token?: string;
440
440
  /** @description Referral code from a prior signup; bumps that signup’s position when honoured */
441
- referralCode?: string;
441
+ referral_code?: string;
442
442
  /** @description How they heard about it */
443
443
  referrer?: string;
444
444
  /**
445
445
  * Format: uuid
446
- * @description Variant id this submission was attributed to. The hosted public page resolves this server-side and the embeddable widget reads it from the public payload — both round-trip it here so per-variant conversion can be computed without a separate impressions table.
446
+ * @description Variant id this submission was attributed to. Customer frontends fetch the active variant from `GET /v1/waitlists/:workspaceSlug/:waitlistSlug` and round-trip it here on POST so per-variant conversion can be computed without a separate impressions table.
447
447
  */
448
- variantId?: string;
448
+ variant_id?: string;
449
449
  };
450
450
  CreateVariantDto: {
451
451
  /** @default true */
@@ -466,13 +466,13 @@ interface components {
466
466
  weight: number;
467
467
  };
468
468
  CreateWaitlistDto: {
469
- /** @description Description shown on the public page */
469
+ /** @description Description returned in the public waitlist payload — customer frontends typically render it under the display name on their signup form. */
470
470
  description?: string;
471
471
  /**
472
472
  * @description Display name
473
473
  * @example Early Access Program
474
474
  */
475
- displayName: string;
475
+ display_name: string;
476
476
  /** @description Waitlist settings (max_entries, approval_required, custom_fields, confirmation_message, referral_boost) */
477
477
  settings?: Record<string, never>;
478
478
  /**
@@ -495,14 +495,42 @@ interface components {
495
495
  /** @description Destination URL (must be https in prod) */
496
496
  url: string;
497
497
  };
498
+ EntryListPaginationDto: {
499
+ has_more: boolean;
500
+ next_cursor: string | null;
501
+ };
502
+ EntryListResponseDto: {
503
+ data: components["schemas"]["EntryResponseDto"][];
504
+ pagination: components["schemas"]["EntryListPaginationDto"];
505
+ };
506
+ EntryResponseDto: {
507
+ created_at: string;
508
+ email: string;
509
+ id: string;
510
+ interest: string | null;
511
+ invited_at: string | null;
512
+ invited_to_app_slug: string | null;
513
+ metadata: Record<string, never>;
514
+ name: string;
515
+ position: number;
516
+ referral_code: string;
517
+ referral_count: number;
518
+ referred_by_entry_id: string | null;
519
+ referrer: string | null;
520
+ /** @enum {string} */
521
+ status: "pending" | "approved" | "rejected";
522
+ updated_at: string;
523
+ waitlist_id: string;
524
+ workspace_id: string;
525
+ };
498
526
  InviteToAppDto: {
499
527
  /** @description Heimdall app slug to invite into; defaults to rally_settings.default_heimdall_app_slug */
500
- appSlug?: string;
528
+ app_slug?: string;
501
529
  /**
502
530
  * @description Send the rally/approved email with the Heimdall invite link baked in
503
531
  * @default true
504
532
  */
505
- sendEmail: boolean;
533
+ send_email: boolean;
506
534
  };
507
535
  TestWebhookDto: {
508
536
  /**
@@ -510,6 +538,8 @@ interface components {
510
538
  * @enum {string}
511
539
  */
512
540
  event: "entry.created" | "entry.approved" | "entry.rejected";
541
+ /** @description Waitlist UUID to reference in the synthetic payload. Defaults to a placeholder UUID when omitted. */
542
+ waitlist_id?: string;
513
543
  };
514
544
  UpdateEntryStatusDto: {
515
545
  /**
@@ -519,16 +549,26 @@ interface components {
519
549
  status: "approved" | "rejected";
520
550
  };
521
551
  UpdateSettingsDto: {
522
- /** @description Logo URL shown on public pages */
523
- brandLogoUrl?: string;
524
- /** @description Brand name shown on public pages */
525
- brandName?: string;
552
+ /** @description Envoi template name used for entry.approved notifications. Must already exist in the workspace template store. */
553
+ approved_template_name?: string | null;
554
+ /** @description Logo URL returned in the public waitlist payload. Customer frontends render it on their own signup form. */
555
+ brand_logo_url?: string;
556
+ /** @description Brand name returned in the public waitlist payload. Customer frontends render it on their own signup form. */
557
+ brand_name?: string;
526
558
  /** @description Heimdall consumer-app slug to invite approved entries into. null clears the link. */
527
- defaultHeimdallAppSlug?: string | null;
559
+ default_heimdall_app_slug?: string | null;
560
+ /** @description Verified sender address used as the From envelope on Rally notifications. Must belong to default_sender_domain_id. null clears the override. */
561
+ default_sender_address?: string | null;
528
562
  /** @description Envoi (mailbox-api) domain UUID to use as default sender for Rally notifications. null clears the override. */
529
- defaultSenderDomainId?: string | null;
563
+ default_sender_domain_id?: string | null;
564
+ /** @description Route Rally notifications via Envoi (workspace sender domain + per-event template selection) instead of staying silent. Requires default_sender_domain_id, default_sender_address, and a template name for every supported event. Default false; when off, Rally sends no notification emails and the customer is expected to handle email via the webhook lane. */
565
+ notifications_via_envoi?: boolean;
530
566
  /** @description Primary brand colour as #RRGGBB */
531
- primaryColor?: string;
567
+ primary_color?: string;
568
+ /** @description Envoi template name used for entry.rejected notifications. Must already exist in the workspace template store. */
569
+ rejected_template_name?: string | null;
570
+ /** @description Envoi template name used for entry.created notifications. Must already exist in the workspace template store. */
571
+ welcome_template_name?: string | null;
532
572
  };
533
573
  UpdateVariantDto: {
534
574
  active?: boolean;
@@ -540,7 +580,7 @@ interface components {
540
580
  /** @description New description */
541
581
  description?: string;
542
582
  /** @description New display name */
543
- displayName?: string;
583
+ display_name?: string;
544
584
  /** @description Updated settings (merged shallow) */
545
585
  settings?: Record<string, never>;
546
586
  };
@@ -564,6 +604,80 @@ interface components {
564
604
  description?: string;
565
605
  display_name?: string;
566
606
  };
607
+ VariantListResponseDto: {
608
+ data: components["schemas"]["VariantResponseDto"][];
609
+ };
610
+ VariantResponseDto: {
611
+ active: boolean;
612
+ copy: Record<string, never>;
613
+ created_at: string;
614
+ id: string;
615
+ /** @enum {string} */
616
+ kind: "ab" | "locale";
617
+ locale: string;
618
+ waitlist_id: string;
619
+ weight: number;
620
+ };
621
+ WaitlistListPaginationDto: {
622
+ has_more: boolean;
623
+ next_cursor: string | null;
624
+ };
625
+ WaitlistListResponseDto: {
626
+ data: components["schemas"]["WaitlistResponseDto"][];
627
+ pagination: components["schemas"]["WaitlistListPaginationDto"];
628
+ };
629
+ WaitlistResponseDto: {
630
+ created_at: string;
631
+ created_by: string;
632
+ description: string | null;
633
+ /** @example Early Access Program */
634
+ display_name: string;
635
+ /** @example b1a4... */
636
+ id: string;
637
+ previous_workspace_slug: string | null;
638
+ /** @description Waitlist settings (max_entries, approval_required, custom_fields, confirmation_message, referral_boost). */
639
+ settings: Record<string, never>;
640
+ /** @example early-access */
641
+ slug: string;
642
+ /** @enum {string} */
643
+ status: "draft" | "active" | "paused" | "closed";
644
+ updated_at: string;
645
+ /** @example b1a4... */
646
+ workspace_id: string;
647
+ /** @example acme */
648
+ workspace_slug: string;
649
+ };
650
+ WebhookCreateResponseDto: {
651
+ active: boolean;
652
+ auto_disabled_at: string | null;
653
+ created_at: string;
654
+ events: ("entry.created" | "entry.approved" | "entry.rejected")[];
655
+ failure_count: number;
656
+ first_failure_at: string | null;
657
+ id: string;
658
+ last_attempt_at: string | null;
659
+ last_status_code: number | null;
660
+ /** @description Plaintext signing secret returned EXACTLY ONCE on create + rotate. Persist immediately — it does not appear on subsequent GETs. */
661
+ signing_secret: string;
662
+ url: string;
663
+ workspace_id: string;
664
+ };
665
+ WebhookListResponseDto: {
666
+ data: components["schemas"]["WebhookResponseDto"][];
667
+ };
668
+ WebhookResponseDto: {
669
+ active: boolean;
670
+ auto_disabled_at: string | null;
671
+ created_at: string;
672
+ events: ("entry.created" | "entry.approved" | "entry.rejected")[];
673
+ failure_count: number;
674
+ first_failure_at: string | null;
675
+ id: string;
676
+ last_attempt_at: string | null;
677
+ last_status_code: number | null;
678
+ url: string;
679
+ workspace_id: string;
680
+ };
567
681
  };
568
682
  responses: never;
569
683
  parameters: never;
@@ -580,8 +694,8 @@ interface operations {
580
694
  };
581
695
  header?: never;
582
696
  path: {
583
- workspaceSlug: string;
584
- waitlistSlug: string;
697
+ workspace_slug: string;
698
+ waitlist_slug: string;
585
699
  };
586
700
  cookie?: never;
587
701
  };
@@ -608,8 +722,8 @@ interface operations {
608
722
  query?: never;
609
723
  header?: never;
610
724
  path: {
611
- workspaceSlug: string;
612
- waitlistSlug: string;
725
+ workspace_slug: string;
726
+ waitlist_slug: string;
613
727
  };
614
728
  cookie?: never;
615
729
  };
@@ -671,8 +785,8 @@ interface operations {
671
785
  };
672
786
  header?: never;
673
787
  path: {
674
- workspaceSlug: string;
675
- waitlistSlug: string;
788
+ workspace_slug: string;
789
+ waitlist_slug: string;
676
790
  };
677
791
  cookie?: never;
678
792
  };
@@ -699,18 +813,33 @@ interface operations {
699
813
  query?: never;
700
814
  header?: never;
701
815
  path: {
702
- workspaceId: string;
816
+ workspace_id: string;
703
817
  };
704
818
  cookie?: never;
705
819
  };
706
820
  requestBody?: never;
707
821
  responses: {
822
+ /** @description Workspace Rally settings. */
708
823
  200: {
709
824
  headers: {
710
825
  [name: string]: unknown;
711
826
  };
712
827
  content?: never;
713
828
  };
829
+ /** @description Caller lacks `rally.settings.read` on the workspace. */
830
+ 403: {
831
+ headers: {
832
+ [name: string]: unknown;
833
+ };
834
+ content?: never;
835
+ };
836
+ /** @description Workspace does not exist or is not Rally-enabled. */
837
+ 404: {
838
+ headers: {
839
+ [name: string]: unknown;
840
+ };
841
+ content?: never;
842
+ };
714
843
  };
715
844
  };
716
845
  SettingsController_update: {
@@ -718,7 +847,7 @@ interface operations {
718
847
  query?: never;
719
848
  header?: never;
720
849
  path: {
721
- workspaceId: string;
850
+ workspace_id: string;
722
851
  };
723
852
  cookie?: never;
724
853
  };
@@ -728,12 +857,34 @@ interface operations {
728
857
  };
729
858
  };
730
859
  responses: {
860
+ /** @description Updated workspace Rally settings. */
731
861
  200: {
732
862
  headers: {
733
863
  [name: string]: unknown;
734
864
  };
735
865
  content?: never;
736
866
  };
867
+ /** @description Validation failure on the patch body (per `UpdateSettingsDto`). */
868
+ 400: {
869
+ headers: {
870
+ [name: string]: unknown;
871
+ };
872
+ content?: never;
873
+ };
874
+ /** @description Caller lacks `rally.settings.update` on the workspace. */
875
+ 403: {
876
+ headers: {
877
+ [name: string]: unknown;
878
+ };
879
+ content?: never;
880
+ };
881
+ /** @description Workspace does not exist or is not Rally-enabled. */
882
+ 404: {
883
+ headers: {
884
+ [name: string]: unknown;
885
+ };
886
+ content?: never;
887
+ };
737
888
  };
738
889
  };
739
890
  WaitlistController_list: {
@@ -747,26 +898,32 @@ interface operations {
747
898
  };
748
899
  header?: never;
749
900
  path: {
750
- workspaceId: string;
901
+ workspace_id: string;
751
902
  };
752
903
  cookie?: never;
753
904
  };
754
905
  requestBody?: never;
755
906
  responses: {
907
+ /** @description Page of waitlists. */
756
908
  200: {
757
909
  headers: {
758
910
  [name: string]: unknown;
759
911
  };
760
- content?: never;
912
+ content: {
913
+ "application/json": components["schemas"]["WaitlistListResponseDto"];
914
+ };
761
915
  };
762
916
  };
763
917
  };
764
918
  WaitlistController_create: {
765
919
  parameters: {
766
920
  query?: never;
767
- header?: never;
921
+ header?: {
922
+ /** @description Stripe-style idempotency key. Waitlist creation provisions a non-trivial sub-tree (variant, default referral settings, etc.); a retry without this header creates a second waitlist sharing the same name slug. 24h TTL. */
923
+ "Idempotency-Key"?: string;
924
+ };
768
925
  path: {
769
- workspaceId: string;
926
+ workspace_id: string;
770
927
  };
771
928
  cookie?: never;
772
929
  };
@@ -781,7 +938,9 @@ interface operations {
781
938
  headers: {
782
939
  [name: string]: unknown;
783
940
  };
784
- content?: never;
941
+ content: {
942
+ "application/json": components["schemas"]["WaitlistResponseDto"];
943
+ };
785
944
  };
786
945
  /** @description Validation failure. */
787
946
  400: {
@@ -817,7 +976,17 @@ interface operations {
817
976
  };
818
977
  requestBody?: never;
819
978
  responses: {
979
+ /** @description Waitlist row. */
820
980
  200: {
981
+ headers: {
982
+ [name: string]: unknown;
983
+ };
984
+ content: {
985
+ "application/json": components["schemas"]["WaitlistResponseDto"];
986
+ };
987
+ };
988
+ /** @description Waitlist not found. */
989
+ 404: {
821
990
  headers: {
822
991
  [name: string]: unknown;
823
992
  };
@@ -879,7 +1048,9 @@ interface operations {
879
1048
  headers: {
880
1049
  [name: string]: unknown;
881
1050
  };
882
- content?: never;
1051
+ content: {
1052
+ "application/json": components["schemas"]["WaitlistResponseDto"];
1053
+ };
883
1054
  };
884
1055
  /** @description Validation failure. */
885
1056
  400: {
@@ -917,7 +1088,9 @@ interface operations {
917
1088
  headers: {
918
1089
  [name: string]: unknown;
919
1090
  };
920
- content?: never;
1091
+ content: {
1092
+ "application/json": components["schemas"]["WaitlistResponseDto"];
1093
+ };
921
1094
  };
922
1095
  /** @description Invalid status transition. */
923
1096
  400: {
@@ -940,19 +1113,34 @@ interface operations {
940
1113
  query?: never;
941
1114
  header?: never;
942
1115
  path: {
943
- workspaceId: string;
944
- waitlistId: string;
1116
+ workspace_id: string;
1117
+ waitlist_id: string;
945
1118
  };
946
1119
  cookie?: never;
947
1120
  };
948
1121
  requestBody?: never;
949
1122
  responses: {
1123
+ /** @description Aggregated analytics payload for the waitlist. */
950
1124
  200: {
951
1125
  headers: {
952
1126
  [name: string]: unknown;
953
1127
  };
954
1128
  content?: never;
955
1129
  };
1130
+ /** @description Caller lacks `rally.read` on the workspace. */
1131
+ 403: {
1132
+ headers: {
1133
+ [name: string]: unknown;
1134
+ };
1135
+ content?: never;
1136
+ };
1137
+ /** @description Waitlist does not exist or is not in the path workspace. */
1138
+ 404: {
1139
+ headers: {
1140
+ [name: string]: unknown;
1141
+ };
1142
+ content?: never;
1143
+ };
956
1144
  };
957
1145
  };
958
1146
  AnalyticsController_timeline: {
@@ -965,19 +1153,41 @@ interface operations {
965
1153
  };
966
1154
  header?: never;
967
1155
  path: {
968
- workspaceId: string;
969
- waitlistId: string;
1156
+ workspace_id: string;
1157
+ waitlist_id: string;
970
1158
  };
971
1159
  cookie?: never;
972
1160
  };
973
1161
  requestBody?: never;
974
1162
  responses: {
1163
+ /** @description Daily timeline array, oldest first, zero-count days included. */
975
1164
  200: {
976
1165
  headers: {
977
1166
  [name: string]: unknown;
978
1167
  };
979
1168
  content?: never;
980
1169
  };
1170
+ /** @description `since` / `until` missing, malformed, or `until <= since`. */
1171
+ 400: {
1172
+ headers: {
1173
+ [name: string]: unknown;
1174
+ };
1175
+ content?: never;
1176
+ };
1177
+ /** @description Caller lacks `rally.read` on the workspace. */
1178
+ 403: {
1179
+ headers: {
1180
+ [name: string]: unknown;
1181
+ };
1182
+ content?: never;
1183
+ };
1184
+ /** @description Waitlist does not exist or is not in the path workspace. */
1185
+ 404: {
1186
+ headers: {
1187
+ [name: string]: unknown;
1188
+ };
1189
+ content?: never;
1190
+ };
981
1191
  };
982
1192
  };
983
1193
  EntryController_list: {
@@ -991,8 +1201,8 @@ interface operations {
991
1201
  };
992
1202
  header?: never;
993
1203
  path: {
994
- workspaceId: string;
995
- waitlistId: string;
1204
+ workspace_id: string;
1205
+ waitlist_id: string;
996
1206
  };
997
1207
  cookie?: never;
998
1208
  };
@@ -1003,7 +1213,9 @@ interface operations {
1003
1213
  headers: {
1004
1214
  [name: string]: unknown;
1005
1215
  };
1006
- content?: never;
1216
+ content: {
1217
+ "application/json": components["schemas"]["EntryListResponseDto"];
1218
+ };
1007
1219
  };
1008
1220
  /** @description Caller lacks `entry.read`, or workspace has not enabled the `rally` service. */
1009
1221
  403: {
@@ -1026,8 +1238,8 @@ interface operations {
1026
1238
  query?: never;
1027
1239
  header?: never;
1028
1240
  path: {
1029
- workspaceId: string;
1030
- waitlistId: string;
1241
+ workspace_id: string;
1242
+ waitlist_id: string;
1031
1243
  };
1032
1244
  cookie?: never;
1033
1245
  };
@@ -1072,8 +1284,8 @@ interface operations {
1072
1284
  query?: never;
1073
1285
  header?: never;
1074
1286
  path: {
1075
- workspaceId: string;
1076
- waitlistId: string;
1287
+ workspace_id: string;
1288
+ waitlist_id: string;
1077
1289
  };
1078
1290
  cookie?: never;
1079
1291
  };
@@ -1092,8 +1304,8 @@ interface operations {
1092
1304
  query?: never;
1093
1305
  header?: never;
1094
1306
  path: {
1095
- workspaceId: string;
1096
- waitlistId: string;
1307
+ workspace_id: string;
1308
+ waitlist_id: string;
1097
1309
  };
1098
1310
  cookie?: never;
1099
1311
  };
@@ -1113,15 +1325,25 @@ interface operations {
1113
1325
  query?: never;
1114
1326
  header?: never;
1115
1327
  path: {
1116
- workspaceId: string;
1117
- waitlistId: string;
1118
- entryId: string;
1328
+ workspace_id: string;
1329
+ waitlist_id: string;
1330
+ entry_id: string;
1119
1331
  };
1120
1332
  cookie?: never;
1121
1333
  };
1122
1334
  requestBody?: never;
1123
1335
  responses: {
1336
+ /** @description Entry row. */
1124
1337
  200: {
1338
+ headers: {
1339
+ [name: string]: unknown;
1340
+ };
1341
+ content: {
1342
+ "application/json": components["schemas"]["EntryResponseDto"];
1343
+ };
1344
+ };
1345
+ /** @description Entry not found. */
1346
+ 404: {
1125
1347
  headers: {
1126
1348
  [name: string]: unknown;
1127
1349
  };
@@ -1134,9 +1356,9 @@ interface operations {
1134
1356
  query?: never;
1135
1357
  header?: never;
1136
1358
  path: {
1137
- workspaceId: string;
1138
- waitlistId: string;
1139
- entryId: string;
1359
+ workspace_id: string;
1360
+ waitlist_id: string;
1361
+ entry_id: string;
1140
1362
  };
1141
1363
  cookie?: never;
1142
1364
  };
@@ -1170,9 +1392,9 @@ interface operations {
1170
1392
  query?: never;
1171
1393
  header?: never;
1172
1394
  path: {
1173
- workspaceId: string;
1174
- waitlistId: string;
1175
- entryId: string;
1395
+ workspace_id: string;
1396
+ waitlist_id: string;
1397
+ entry_id: string;
1176
1398
  };
1177
1399
  cookie?: never;
1178
1400
  };
@@ -1187,7 +1409,9 @@ interface operations {
1187
1409
  headers: {
1188
1410
  [name: string]: unknown;
1189
1411
  };
1190
- content?: never;
1412
+ content: {
1413
+ "application/json": components["schemas"]["EntryResponseDto"];
1414
+ };
1191
1415
  };
1192
1416
  /** @description Invalid status transition. */
1193
1417
  400: {
@@ -1217,9 +1441,9 @@ interface operations {
1217
1441
  query?: never;
1218
1442
  header?: never;
1219
1443
  path: {
1220
- workspaceId: string;
1221
- waitlistId: string;
1222
- entryId: string;
1444
+ workspace_id: string;
1445
+ waitlist_id: string;
1446
+ entry_id: string;
1223
1447
  };
1224
1448
  cookie?: never;
1225
1449
  };
@@ -1250,8 +1474,8 @@ interface operations {
1250
1474
  query?: never;
1251
1475
  header?: never;
1252
1476
  path: {
1253
- workspaceId: string;
1254
- waitlistId: string;
1477
+ workspace_id: string;
1478
+ waitlist_id: string;
1255
1479
  };
1256
1480
  cookie?: never;
1257
1481
  };
@@ -1262,7 +1486,9 @@ interface operations {
1262
1486
  headers: {
1263
1487
  [name: string]: unknown;
1264
1488
  };
1265
- content?: never;
1489
+ content: {
1490
+ "application/json": components["schemas"]["VariantListResponseDto"];
1491
+ };
1266
1492
  };
1267
1493
  };
1268
1494
  };
@@ -1271,8 +1497,8 @@ interface operations {
1271
1497
  query?: never;
1272
1498
  header?: never;
1273
1499
  path: {
1274
- workspaceId: string;
1275
- waitlistId: string;
1500
+ workspace_id: string;
1501
+ waitlist_id: string;
1276
1502
  };
1277
1503
  cookie?: never;
1278
1504
  };
@@ -1287,7 +1513,9 @@ interface operations {
1287
1513
  headers: {
1288
1514
  [name: string]: unknown;
1289
1515
  };
1290
- content?: never;
1516
+ content: {
1517
+ "application/json": components["schemas"]["VariantResponseDto"];
1518
+ };
1291
1519
  };
1292
1520
  /** @description Validation failure */
1293
1521
  400: {
@@ -1310,8 +1538,8 @@ interface operations {
1310
1538
  query?: never;
1311
1539
  header?: never;
1312
1540
  path: {
1313
- workspaceId: string;
1314
- waitlistId: string;
1541
+ workspace_id: string;
1542
+ waitlist_id: string;
1315
1543
  id: string;
1316
1544
  };
1317
1545
  cookie?: never;
@@ -1339,8 +1567,8 @@ interface operations {
1339
1567
  query?: never;
1340
1568
  header?: never;
1341
1569
  path: {
1342
- workspaceId: string;
1343
- waitlistId: string;
1570
+ workspace_id: string;
1571
+ waitlist_id: string;
1344
1572
  id: string;
1345
1573
  };
1346
1574
  cookie?: never;
@@ -1356,7 +1584,9 @@ interface operations {
1356
1584
  headers: {
1357
1585
  [name: string]: unknown;
1358
1586
  };
1359
- content?: never;
1587
+ content: {
1588
+ "application/json": components["schemas"]["VariantResponseDto"];
1589
+ };
1360
1590
  };
1361
1591
  /** @description Variant not found */
1362
1592
  404: {
@@ -1372,28 +1602,32 @@ interface operations {
1372
1602
  query?: never;
1373
1603
  header?: never;
1374
1604
  path: {
1375
- workspaceId: string;
1376
- waitlistId: string;
1605
+ workspace_id: string;
1377
1606
  };
1378
1607
  cookie?: never;
1379
1608
  };
1380
1609
  requestBody?: never;
1381
1610
  responses: {
1611
+ /** @description Webhooks for the workspace. */
1382
1612
  200: {
1383
1613
  headers: {
1384
1614
  [name: string]: unknown;
1385
1615
  };
1386
- content?: never;
1616
+ content: {
1617
+ "application/json": components["schemas"]["WebhookListResponseDto"];
1618
+ };
1387
1619
  };
1388
1620
  };
1389
1621
  };
1390
1622
  WebhookController_create: {
1391
1623
  parameters: {
1392
1624
  query?: never;
1393
- header?: never;
1625
+ header?: {
1626
+ /** @description Stripe-style idempotency key. The signing secret is returned exactly once; a retry without this header creates a second webhook + secret you never see the plaintext for. 24h TTL. */
1627
+ "Idempotency-Key"?: string;
1628
+ };
1394
1629
  path: {
1395
- workspaceId: string;
1396
- waitlistId: string;
1630
+ workspace_id: string;
1397
1631
  };
1398
1632
  cookie?: never;
1399
1633
  };
@@ -1403,12 +1637,14 @@ interface operations {
1403
1637
  };
1404
1638
  };
1405
1639
  responses: {
1406
- /** @description Webhook created */
1640
+ /** @description Webhook created. Includes plaintext `signing_secret` exactly once. */
1407
1641
  201: {
1408
1642
  headers: {
1409
1643
  [name: string]: unknown;
1410
1644
  };
1411
- content?: never;
1645
+ content: {
1646
+ "application/json": components["schemas"]["WebhookCreateResponseDto"];
1647
+ };
1412
1648
  };
1413
1649
  };
1414
1650
  };
@@ -1417,15 +1653,24 @@ interface operations {
1417
1653
  query?: never;
1418
1654
  header?: never;
1419
1655
  path: {
1420
- workspaceId: string;
1421
- waitlistId: string;
1656
+ workspace_id: string;
1422
1657
  id: string;
1423
1658
  };
1424
1659
  cookie?: never;
1425
1660
  };
1426
1661
  requestBody?: never;
1427
1662
  responses: {
1663
+ /** @description Webhook row. */
1428
1664
  200: {
1665
+ headers: {
1666
+ [name: string]: unknown;
1667
+ };
1668
+ content: {
1669
+ "application/json": components["schemas"]["WebhookResponseDto"];
1670
+ };
1671
+ };
1672
+ /** @description Webhook not found. */
1673
+ 404: {
1429
1674
  headers: {
1430
1675
  [name: string]: unknown;
1431
1676
  };
@@ -1438,8 +1683,7 @@ interface operations {
1438
1683
  query?: never;
1439
1684
  header?: never;
1440
1685
  path: {
1441
- workspaceId: string;
1442
- waitlistId: string;
1686
+ workspace_id: string;
1443
1687
  id: string;
1444
1688
  };
1445
1689
  cookie?: never;
@@ -1459,8 +1703,7 @@ interface operations {
1459
1703
  query?: never;
1460
1704
  header?: never;
1461
1705
  path: {
1462
- workspaceId: string;
1463
- waitlistId: string;
1706
+ workspace_id: string;
1464
1707
  id: string;
1465
1708
  };
1466
1709
  cookie?: never;
@@ -1484,8 +1727,7 @@ interface operations {
1484
1727
  query?: never;
1485
1728
  header?: never;
1486
1729
  path: {
1487
- workspaceId: string;
1488
- waitlistId: string;
1730
+ workspace_id: string;
1489
1731
  id: string;
1490
1732
  };
1491
1733
  cookie?: never;
@@ -1506,8 +1748,7 @@ interface operations {
1506
1748
  query?: never;
1507
1749
  header?: never;
1508
1750
  path: {
1509
- workspaceId: string;
1510
- waitlistId: string;
1751
+ workspace_id: string;
1511
1752
  id: string;
1512
1753
  };
1513
1754
  cookie?: never;
@@ -1527,8 +1768,7 @@ interface operations {
1527
1768
  query?: never;
1528
1769
  header?: never;
1529
1770
  path: {
1530
- workspaceId: string;
1531
- waitlistId: string;
1771
+ workspace_id: string;
1532
1772
  id: string;
1533
1773
  };
1534
1774
  cookie?: never;