@domino-sdk/relay 1.56.0 → 1.60.0

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.
Files changed (65) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/{accounts-DRPENuZe.d.ts → accounts-DoabriBX.d.ts} +21 -7
  3. package/dist/{attempt-captures-CxxO7DeD.d.ts → attempt-captures-W2dgzGqE.d.ts} +1 -1
  4. package/dist/authoring.d.ts +323 -39
  5. package/dist/authoring.js +312 -18
  6. package/dist/{automatic-outcomes-DxW_v5Wc.d.ts → automatic-outcomes-Cmou89IS.d.ts} +1 -1
  7. package/dist/avatar.d.ts +1 -2
  8. package/dist/browser.d.ts +19 -11
  9. package/dist/browser.js +12 -10
  10. package/dist/{capability-error-DSd8EMQC.d.ts → capability-error-DufwG3G0.d.ts} +21 -7
  11. package/dist/{chunk-OTITLABX.js → chunk-2FHNY52R.js} +8 -2
  12. package/dist/{chunk-QNQNKIAA.js → chunk-422J3QRW.js} +12 -2
  13. package/dist/{chunk-INSWI2VZ.js → chunk-4OFH4BNX.js} +1 -1
  14. package/dist/{chunk-KBVH4XZC.js → chunk-6ZG7WNYX.js} +1 -1
  15. package/dist/{chunk-BHHUSBSD.js → chunk-GBSDAD3N.js} +1627 -887
  16. package/dist/{chunk-W5U2WXG3.js → chunk-KUPVQXUJ.js} +2 -2
  17. package/dist/{chunk-G6XVBYH7.js → chunk-KWFY7L7X.js} +4 -4
  18. package/dist/{chunk-BJYMTCWG.js → chunk-MJEJQH5A.js} +18 -6
  19. package/dist/{chunk-ULQU7KC4.js → chunk-N3LJ6GFK.js} +1 -5
  20. package/dist/{chunk-ABJ4G47X.js → chunk-N7YOS4ZU.js} +1 -1
  21. package/dist/{chunk-MNU6UPXY.js → chunk-OTEUP2SG.js} +1 -1
  22. package/dist/{chunk-NK6EER33.js → chunk-VVRQQRMQ.js} +12 -12
  23. package/dist/{chunk-H2MD6E7Z.js → chunk-VWMIA2TT.js} +8 -2
  24. package/dist/{chunk-RBPMT53S.js → chunk-XQKUJL7H.js} +25 -5
  25. package/dist/{chunk-CXKXPB7K.js → chunk-Y2IGFLD2.js} +36 -11
  26. package/dist/{chunk-VSHV7FEA.js → chunk-YNW2ZUUP.js} +56 -153
  27. package/dist/{chunk-CK7HO32Z.js → chunk-YOAPPIWN.js} +2 -2
  28. package/dist/{client-bX3oTpRu.d.ts → client-Cw1pB5sv.d.ts} +121 -117
  29. package/dist/{deployments-D3lxfQMB.d.ts → deployments-DI-W7fBq.d.ts} +1105 -182
  30. package/dist/{groups-DPE004_V.d.ts → groups-9Jm3peq3.d.ts} +14 -7
  31. package/dist/index.d.ts +10 -11
  32. package/dist/index.js +9 -9
  33. package/dist/{integrations-CcD5NPEA.d.ts → integrations-CmIkP1Gi.d.ts} +48 -32
  34. package/dist/internal.d.ts +10 -10
  35. package/dist/internal.js +8 -8
  36. package/dist/{offers-CtzMeB7O.d.ts → offers-CqXfMIxq.d.ts} +7 -2
  37. package/dist/{pages-BlLqB8ZQ.d.ts → pages-Bti7g5mX.d.ts} +184 -10
  38. package/dist/{participant-activity-iciCEs_8.d.ts → participant-activity-DHL8QYks.d.ts} +4 -0
  39. package/dist/portal-proxy.js +3 -3
  40. package/dist/react/index.d.ts +74 -74
  41. package/dist/react/index.js +10 -10
  42. package/dist/runtime/authoring.js +1 -1
  43. package/dist/runtime/chunks/ADUMK6CR.js +1 -0
  44. package/dist/runtime/chunks/EWU4OKSY.js +62 -0
  45. package/dist/runtime/manifest.json +5 -5
  46. package/dist/runtime/schema.js +1 -1
  47. package/dist/runtime/zod.js +1 -1
  48. package/dist/{schema-C4m9RhCR.d.ts → schema-CwbRkmlr.d.ts} +324 -35
  49. package/dist/schema.d.ts +854 -437
  50. package/dist/schema.js +103 -25
  51. package/dist/server/index.d.ts +10 -10
  52. package/dist/server/index.js +711 -81
  53. package/dist/{submission-input-wTiYGdgA.d.ts → submission-input-D9EGH_yb.d.ts} +2 -2
  54. package/dist/{telegram-browser-Bh3i0HiH.d.ts → telegram-browser-CTJh4Ro_.d.ts} +4 -4
  55. package/dist/testing.d.ts +89 -9
  56. package/dist/testing.js +218 -13
  57. package/dist/{transport-CnKA-_RL.d.ts → transport-B8Ss5lcz.d.ts} +9189 -2009
  58. package/dist/wallet-DZWL7lJH.d.ts +972 -0
  59. package/dist/{x-1czZFVUW.d.ts → x-KFJD2x8y.d.ts} +3 -3
  60. package/package.json +2 -2
  61. package/dist/profiles-BoOK03cR.d.ts +0 -299
  62. package/dist/runtime/chunks/IDOMZWRY.js +0 -40
  63. package/dist/runtime/chunks/NDB42VFF.js +0 -1
  64. package/dist/util.d-w9f9t3ua.d.ts +0 -5
  65. package/dist/wallet-Ac7OFpOr.d.ts +0 -228
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  attemptCaptureSchema,
3
3
  capturedFactSchema
4
- } from "../chunk-MNU6UPXY.js";
4
+ } from "../chunk-OTEUP2SG.js";
5
5
  import {
6
6
  activityTypeSchema,
7
7
  activityTypes,
@@ -27,7 +27,7 @@ import {
27
27
  publishDeploymentSchema,
28
28
  rejectDeploymentSchema,
29
29
  submitDeploymentSchema
30
- } from "../chunk-CXKXPB7K.js";
30
+ } from "../chunk-Y2IGFLD2.js";
31
31
  import {
32
32
  analyticsBreakdowns,
33
33
  analyticsCatalog,
@@ -42,7 +42,7 @@ import {
42
42
  analyticsRanges,
43
43
  analyticsReadSchema,
44
44
  dashboardDefinitionSchema
45
- } from "../chunk-ULQU7KC4.js";
45
+ } from "../chunk-N3LJ6GFK.js";
46
46
  import "../chunk-4OC7REYX.js";
47
47
  import {
48
48
  DEFAULT_MANAGEMENT_TIMEOUT,
@@ -63,22 +63,22 @@ import {
63
63
  participantExchangeSchema,
64
64
  questConfiguration,
65
65
  sequenceCursorSchema
66
- } from "../chunk-G6XVBYH7.js";
66
+ } from "../chunk-KWFY7L7X.js";
67
67
  import {
68
68
  parseImageExtraction,
69
69
  parseImageResult
70
- } from "../chunk-W5U2WXG3.js";
70
+ } from "../chunk-KUPVQXUJ.js";
71
71
  import {
72
72
  imageAssetArtifactSchema,
73
73
  xUserLookupInputSchema,
74
74
  xUserSchema,
75
75
  xUsernameSchema
76
- } from "../chunk-CK7HO32Z.js";
76
+ } from "../chunk-YOAPPIWN.js";
77
77
  import {
78
78
  sourceDataSchema,
79
79
  sourceRoles,
80
80
  validateQuestShape
81
- } from "../chunk-H2MD6E7Z.js";
81
+ } from "../chunk-VWMIA2TT.js";
82
82
  import {
83
83
  isIntegrationParticipantPath,
84
84
  isParticipantRoute,
@@ -87,7 +87,7 @@ import {
87
87
  } from "../chunk-MHPKEVEW.js";
88
88
  import {
89
89
  withActionId
90
- } from "../chunk-INSWI2VZ.js";
90
+ } from "../chunk-4OFH4BNX.js";
91
91
  import {
92
92
  allocateQuestSchema,
93
93
  allocatedQuestSchema,
@@ -97,6 +97,7 @@ import {
97
97
  collectionPreviewSchema,
98
98
  collectionResolveSchema,
99
99
  creatorAccountProviderSchema,
100
+ discordRoleRewardsSchema,
100
101
  memberEnrollmentInputSchema,
101
102
  publishQuestDraftSchema,
102
103
  questCatalogSchema,
@@ -107,7 +108,7 @@ import {
107
108
  rewardDeliveryQuerySchema,
108
109
  rewardDeliverySchema,
109
110
  saveQuestDraftSchema
110
- } from "../chunk-RBPMT53S.js";
111
+ } from "../chunk-XQKUJL7H.js";
111
112
  import {
112
113
  badgeMutationResultSchema,
113
114
  badgeMutationSchema,
@@ -155,7 +156,7 @@ import {
155
156
  referralQualificationSchema,
156
157
  referralRewardResolutionSchema,
157
158
  referralSuspensionSchema
158
- } from "../chunk-BJYMTCWG.js";
159
+ } from "../chunk-MJEJQH5A.js";
159
160
  import {
160
161
  createPointLedgerSchema,
161
162
  managedPointLedgerSchema,
@@ -164,16 +165,14 @@ import {
164
165
  pointLedgerSchema,
165
166
  profileModerationSchema,
166
167
  profileSettingsInputSchema,
167
- profileSettingsSchema,
168
- telegramChatConnectionSchema,
169
- telegramChatIdSchema,
170
- telegramChatsSchema
171
- } from "../chunk-VSHV7FEA.js";
172
- import "../chunk-KBVH4XZC.js";
173
- import "../chunk-ABJ4G47X.js";
174
- import "../chunk-QNQNKIAA.js";
168
+ profileSettingsSchema
169
+ } from "../chunk-YNW2ZUUP.js";
170
+ import "../chunk-6ZG7WNYX.js";
171
+ import "../chunk-N7YOS4ZU.js";
172
+ import "../chunk-422J3QRW.js";
175
173
  import {
176
174
  CompletionSourceKind,
175
+ acceptAnywaySchema,
177
176
  addGroupMemberSchema,
178
177
  appIdentityKindSchema,
179
178
  attemptSchema,
@@ -201,6 +200,7 @@ import {
201
200
  eventSchema,
202
201
  evmAddressSchema,
203
202
  evmChainIdSchema,
203
+ groupArchiveInputSchema,
204
204
  groupMemberPageSchema,
205
205
  groupMemberSchema,
206
206
  groupPageQuerySchema,
@@ -208,13 +208,16 @@ import {
208
208
  identifier,
209
209
  knownResponse,
210
210
  lazyResponseReaders,
211
+ lifecycleReasonSchema,
211
212
  linkedWalletSchema,
212
213
  managedGroupSchema,
214
+ managedTrackerCreateSchema,
213
215
  managementStateQuerySchema,
214
216
  memberCampaignEnrollmentInputSchema,
215
217
  memberCampaignWithdrawalInputSchema,
216
218
  memberIdentitySchema,
217
219
  memberProgressSchema,
220
+ offsetDateTimeSchema,
218
221
  pageCursorSchema,
219
222
  pageQuerySchema,
220
223
  pickupAvailabilitySchema,
@@ -234,10 +237,12 @@ import {
234
237
  stockItemSchema,
235
238
  streakProgressSchema,
236
239
  submitSchema,
240
+ telegramChatConnectionSchema,
241
+ telegramChatIdSchema,
242
+ telegramChatsSchema,
237
243
  trackerContentReadSchema,
238
244
  trackerContentSchema,
239
245
  trackerControlSchema,
240
- trackerCreateSchema,
241
246
  trackerDataIssue,
242
247
  trackerDataIssues,
243
248
  trackerIngestResultSchema,
@@ -261,7 +266,7 @@ import {
261
266
  walletSignInNetworksSchema,
262
267
  walletUnlinkInputSchema,
263
268
  whereSchemaIssue
264
- } from "../chunk-BHHUSBSD.js";
269
+ } from "../chunk-GBSDAD3N.js";
265
270
 
266
271
  // src/server/identity-links.ts
267
272
  import * as z from "zod";
@@ -357,10 +362,18 @@ var state2 = {
357
362
  */
358
363
  signIn: z2.boolean().nullable()
359
364
  };
365
+ var account = {
366
+ /**
367
+ * True for an X, Discord or Telegram account a member import attached on the organization's
368
+ * word, until the member links that provider's account through Domino. Absent from Relay
369
+ * versions without it.
370
+ */
371
+ imported: z2.boolean().optional()
372
+ };
360
373
  var memberIdentityStateSchema = z2.discriminatedUnion("kind", [
361
374
  walletIdentitySelectorSchema.strip().extend(state2),
362
- oauthIdentitySelectorSchema.strip().extend(state2),
363
- telegramIdentitySelectorSchema.strip().extend(state2),
375
+ oauthIdentitySelectorSchema.strip().extend({ ...state2, ...account }),
376
+ telegramIdentitySelectorSchema.strip().extend({ ...state2, ...account }),
364
377
  appIdentitySelectorSchema.strip().extend(state2)
365
378
  ]);
366
379
  var memberIdentityStatePageSchema = z2.object({
@@ -472,6 +485,25 @@ var leaderboardSettlementExportSchema = z4.object({
472
485
  })
473
486
  )
474
487
  });
488
+ var csvField = (value) => {
489
+ const text = value == null ? "" : String(value);
490
+ return /[",\r\n]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
491
+ };
492
+ function settlementPayoutCsv(exported) {
493
+ const unit = exported.pool === null ? "" : exported.pool.unit === "points" ? "points" : exported.pool.unit.code;
494
+ return [
495
+ ["member", "score", "rank", "share", "amount", "unit", "wallets"],
496
+ ...exported.rows.map((row) => [
497
+ row.member,
498
+ row.score,
499
+ row.rank,
500
+ row.share,
501
+ row.amount,
502
+ row.share === null ? "" : unit,
503
+ row.wallets.map((wallet) => `${wallet.network ?? wallet.chain}:${wallet.address}`).join(" ")
504
+ ])
505
+ ].map((fields) => fields.map(csvField).join(",")).join("\n");
506
+ }
475
507
 
476
508
  // src/server/inventory-items.ts
477
509
  import * as z5 from "zod";
@@ -552,7 +584,10 @@ var testMemberSchema = z7.object({
552
584
  test: z7.literal(true),
553
585
  /** Current project-calendar date (YYYY-MM-DD), computed by the server. */
554
586
  today: z7.iso.date().optional(),
555
- /** Number of calendar days advanced; absent means zero for older servers. */
587
+ /**
588
+ * Number of calendar days advanced with `days`; absent means zero for older servers. Hours,
589
+ * minutes and `to` leave it unchanged, so read the member's date from `today`.
590
+ */
556
591
  offsetDays: z7.number().int().min(0).optional(),
557
592
  /** Linked wallet addresses, by chain then newest first; absent from older servers. */
558
593
  wallets: z7.array(testMemberWalletSchema).optional(),
@@ -590,6 +625,19 @@ var testMemberAdvanceSchema = z7.object({
590
625
  actionId: identifier,
591
626
  days: z7.number().int().min(1).max(30)
592
627
  }).strict();
628
+ var testMemberClockAdvanceSchema = z7.union([
629
+ testMemberAdvanceSchema,
630
+ z7.object({ actionId: identifier, hours: z7.number().int().min(1).max(720) }).strict(),
631
+ z7.object({
632
+ actionId: identifier,
633
+ minutes: z7.number().int().min(1).max(43200)
634
+ }).strict(),
635
+ z7.object({
636
+ actionId: identifier,
637
+ /** An ISO 8601 instant with an offset, such as `2026-10-10T00:00:00+02:00`. */
638
+ to: z7.iso.datetime({ offset: true })
639
+ }).strict()
640
+ ]);
593
641
  var testMemberResetResultSchema = z7.object({
594
642
  member: identifier,
595
643
  deleted: z7.literal(true)
@@ -739,7 +787,7 @@ var testMemberHistorySchema = z7.object({
739
787
  import * as z8 from "zod";
740
788
  var importTimeSchema = z8.union([
741
789
  z8.number().int().nonnegative().safe(),
742
- z8.iso.datetime({ offset: true }).transform((value) => Date.parse(value))
790
+ offsetDateTimeSchema().transform((value) => Date.parse(value))
743
791
  ]);
744
792
  var importWalletSchema = z8.discriminatedUnion("chain", [
745
793
  z8.object({
@@ -763,6 +811,14 @@ var importXSchema = z8.object({
763
811
  kind: z8.literal("x"),
764
812
  subject: z8.string().regex(/^[1-9][0-9]{0,19}$/, "Use the numeric X user ID")
765
813
  }).strict();
814
+ var importTelegramSchema = z8.object({
815
+ kind: z8.literal("telegram"),
816
+ subject: z8.string().regex(/^[1-9][0-9]{0,19}$/, "Use the numeric Telegram user ID")
817
+ }).strict();
818
+ var importDiscordSchema = z8.object({
819
+ kind: z8.literal("discord"),
820
+ subject: z8.string().regex(/^[1-9][0-9]{0,19}$/, "Use the numeric Discord user ID")
821
+ }).strict();
766
822
  var importAppIdentitySchema = z8.object({ kind: appIdentityKindSchema, subject: z8.string().min(1).max(256) }).strict();
767
823
  var memberImportIdentitySchema = z8.union([
768
824
  importAppIdentitySchema,
@@ -773,10 +829,32 @@ var memberImportAccountSchema = z8.union([
773
829
  importWalletSchema,
774
830
  importXSchema
775
831
  ]);
832
+ var memberImportVouchedAccountSchema = z8.union([
833
+ importWalletSchema,
834
+ importXSchema,
835
+ importTelegramSchema,
836
+ importDiscordSchema
837
+ ]);
776
838
  var memberImportActionSchema = z8.object({
777
839
  at: importTimeSchema,
778
840
  key: z8.string().min(1).max(200).optional()
779
841
  }).strict();
842
+ var memberImportReferralSchema = z8.object({
843
+ /**
844
+ * The inviter: the `ref` of another row of this import, or the sign-in identity of a member
845
+ * who already exists in this environment.
846
+ */
847
+ inviter: z8.union([
848
+ z8.string().trim().min(1).max(200),
849
+ memberImportIdentitySchema
850
+ ]),
851
+ /** When the member accepted the invitation. */
852
+ acceptedAt: importTimeSchema,
853
+ /** Referral programs, by authoring key or ID, the member qualified in, and when. */
854
+ qualified: z8.array(
855
+ z8.object({ program: z8.string().min(1).max(200), at: importTimeSchema }).strict()
856
+ ).max(50).default([])
857
+ }).strict();
780
858
  var memberImportRowSchema = z8.object({
781
859
  /** The member's ID on the platform they come from. Unique within an import. */
782
860
  ref: z8.string().trim().min(1).max(200),
@@ -795,7 +873,11 @@ var memberImportRowSchema = z8.object({
795
873
  quest: z8.string().min(1).max(200),
796
874
  actions: z8.array(memberImportActionSchema).min(1).max(3660)
797
875
  }).strict()
798
- ).max(200).default([])
876
+ ).max(200).default([]),
877
+ referral: memberImportReferralSchema.optional()
878
+ }).strict();
879
+ var memberImportFullRowSchema = memberImportRowSchema.extend({
880
+ accounts: z8.array(memberImportVouchedAccountSchema).max(20).default([])
799
881
  }).strict();
800
882
  var memberImportCreateSchema = z8.object({
801
883
  actionId: identifier,
@@ -803,6 +885,7 @@ var memberImportCreateSchema = z8.object({
803
885
  source: z8.string().trim().min(1).max(100)
804
886
  }).strict();
805
887
  var memberImportRowsInputSchema = z8.object({ rows: z8.array(memberImportRowSchema).min(1).max(500) }).strict();
888
+ var memberImportFullRowsInputSchema = z8.object({ rows: z8.array(memberImportFullRowSchema).min(1).max(500) }).strict();
806
889
  var MemberImportRefusalCode = {
807
890
  /** An account or identity belongs to another member in the project. */
808
891
  AccountLinkedElsewhere: "account-linked-elsewhere",
@@ -810,8 +893,12 @@ var MemberImportRefusalCode = {
810
893
  IdentityUnlinked: "identity-unlinked",
811
894
  /** An earlier row of the import names the same account. */
812
895
  DuplicateAccount: "duplicate-account",
813
- /** The member already has another X account selected. */
896
+ /** The row names two X accounts, or the member already has another X account selected. */
814
897
  XAccountSelected: "x-account-selected",
898
+ /** The row names two Telegram accounts, or the member already has another one selected. */
899
+ TelegramAccountSelected: "telegram-account-selected",
900
+ /** The row names two Discord accounts, or the member already has another one selected. */
901
+ DiscordAccountSelected: "discord-account-selected",
815
902
  /** The member would hold more wallets of a chain family than a member can link. */
816
903
  LimitReached: "limit-reached",
817
904
  UnknownLedger: "unknown-ledger",
@@ -826,8 +913,20 @@ var MemberImportRefusalCode = {
826
913
  FutureAction: "future-action",
827
914
  /** The row's sign-in wallet or X account is linked to its member without sign-in. */
828
915
  SignInDisabled: "sign-in-disabled",
829
- /** The row names one point ledger or quest twice, by any of its names. */
830
- DuplicateEntry: "duplicate-entry"
916
+ /** The row names one point ledger, quest or referral program twice, by any of its names. */
917
+ DuplicateEntry: "duplicate-entry",
918
+ /** The inviter is no row of this import, and no member of the environment signs in with it. */
919
+ UnknownInviter: "unknown-inviter",
920
+ /** The row names its own member as the inviter. */
921
+ SelfReferral: "self-referral",
922
+ /** The member already has an inviter. An import never replaces one. */
923
+ InviterAlreadyAccepted: "inviter-already-accepted",
924
+ /** The inviter was invited, directly or through others, by this row's member. */
925
+ ReferralCycle: "referral-cycle",
926
+ /** The row that names the inviter was refused, so the inviter is never imported. */
927
+ InviterRefused: "inviter-refused",
928
+ /** No referral program of that key or ID in this environment, or it is archived. */
929
+ UnknownReferralProgram: "unknown-referral-program"
831
930
  };
832
931
  var refusalCodeSchema = z8.string();
833
932
  var memberImportRefusalSchema = z8.object({
@@ -871,11 +970,79 @@ var memberImportSummarySchema = z8.object({
871
970
  actions: z8.array(
872
971
  z8.object({ quest: z8.string(), total: z8.number().int().nonnegative() })
873
972
  ),
973
+ /**
974
+ * Accepted referrals the ready rows record, and their qualifications by program as the rows
975
+ * name it. Absent from a summary written before imports carried referrals.
976
+ */
977
+ referrals: z8.object({
978
+ accepted: z8.number().int().nonnegative(),
979
+ qualified: z8.array(
980
+ z8.object({
981
+ program: z8.string(),
982
+ total: z8.number().int().nonnegative()
983
+ })
984
+ )
985
+ }).optional(),
874
986
  /** Refused rows, by refusal code. A row can have several. */
875
987
  refusals: z8.array(
876
988
  z8.object({ code: refusalCodeSchema, rows: z8.number().int().nonnegative() })
877
989
  )
878
990
  });
991
+ var memberImportRevertInputSchema = z8.object({
992
+ actionId: identifier,
993
+ reason: z8.string().trim().min(1).max(500)
994
+ }).strict();
995
+ var memberImportRevertOutcomeSchema = z8.object({
996
+ reversed: z8.object({
997
+ /** Applied rows the revert went through. */
998
+ rows: z8.number().int().nonnegative(),
999
+ /** Opening balance entries reversed. */
1000
+ entries: z8.number().int().nonnegative(),
1001
+ /** Imported completions revoked. */
1002
+ completions: z8.number().int().nonnegative(),
1003
+ /** Links the rows created that the revert removed. */
1004
+ links: z8.number().int().nonnegative()
1005
+ }),
1006
+ /**
1007
+ * Imported points the revert could not take back, by member and point ledger: the member had
1008
+ * spent or reserved them. A revert takes only free points, as a completion's revocation does,
1009
+ * so no balance goes below zero and Relay records no debt.
1010
+ */
1011
+ unreversedPoints: z8.array(
1012
+ z8.object({
1013
+ member: identifier,
1014
+ ledger: identifier,
1015
+ amount: z8.number().int().positive()
1016
+ })
1017
+ ),
1018
+ /**
1019
+ * Links the rows created that stay, because the member relied on them since: `signed-in` with
1020
+ * it, or `proved` a vouched wallet. `kind` is `wallet`, the provider (`x`, `telegram`,
1021
+ * `discord`) or `app:<name>`; `account` is the address or subject.
1022
+ */
1023
+ keptLinks: z8.array(
1024
+ z8.object({
1025
+ member: identifier,
1026
+ kind: z8.string(),
1027
+ account: z8.string(),
1028
+ reason: z8.string()
1029
+ })
1030
+ ),
1031
+ /**
1032
+ * True when rows were applied before imports recorded the links they created: those rows'
1033
+ * links all stay, and only their balances and completions were reversed.
1034
+ */
1035
+ linksUntracked: z8.boolean()
1036
+ });
1037
+ var memberImportRevertSchema = z8.object({
1038
+ reason: z8.string(),
1039
+ requestedAt: z8.number().int(),
1040
+ requestedBy: z8.string().nullable(),
1041
+ /** Applied rows reverted so far. */
1042
+ rows: z8.number().int().nonnegative(),
1043
+ revertedAt: z8.number().int().nullable(),
1044
+ outcome: memberImportRevertOutcomeSchema.nullable()
1045
+ });
879
1046
  var memberImportSchema = z8.object({
880
1047
  id: identifier,
881
1048
  source: z8.string(),
@@ -890,7 +1057,7 @@ var memberImportSchema = z8.object({
890
1057
  rows: z8.number().int().nonnegative(),
891
1058
  /** The latest check's summary, or null before the first check and after rows change. */
892
1059
  summary: memberImportSummarySchema.nullable(),
893
- /** While applying and after: rows applied and refused so far. */
1060
+ /** While applying and after, stopped included: rows applied and refused so far. */
894
1061
  progress: z8.object({
895
1062
  applied: z8.number().int().nonnegative(),
896
1063
  refused: z8.number().int().nonnegative()
@@ -901,7 +1068,12 @@ var memberImportSchema = z8.object({
901
1068
  appliedAt: z8.number().int().nullable(),
902
1069
  appliedBy: z8.string().nullable(),
903
1070
  canceledAt: z8.number().int().nullable(),
904
- canceledBy: z8.string().nullable()
1071
+ canceledBy: z8.string().nullable(),
1072
+ /** Set when the import was stopped while applying; it then reads as `applied` with `appliedAt` null. */
1073
+ stoppedAt: z8.number().int().nullish(),
1074
+ stoppedBy: z8.string().nullish(),
1075
+ /** Set once a revert was asked for; the import still reads as `applied`. */
1076
+ revert: memberImportRevertSchema.nullish()
905
1077
  });
906
1078
  var memberImportPageSchema = z8.object({
907
1079
  items: z8.array(memberImportSchema),
@@ -1062,13 +1234,31 @@ var resourceLifecycleInputSchema = z10.object({
1062
1234
  kind: resourceLifecycleKindSchema,
1063
1235
  resource: identifier,
1064
1236
  archived: z10.boolean(),
1065
- reason: z10.string().trim().min(1).max(500),
1237
+ reason: lifecycleReasonSchema,
1066
1238
  expectedArchivedAt: z10.number().int().nonnegative().nullable().optional()
1067
1239
  }).strict();
1068
1240
  var resourceLifecycleResultSchema = z10.object({
1069
1241
  resource: managedResourceSchema,
1070
1242
  changed: z10.boolean()
1071
1243
  });
1244
+ var managedOfferSchema = managedResourceSchema.extend({
1245
+ kind: z10.literal("offer")
1246
+ });
1247
+ var managedResourceListSchema = z10.object({
1248
+ resources: z10.array(managedResourceSchema),
1249
+ offers: z10.array(managedOfferSchema).default([])
1250
+ });
1251
+ var offerLifecycleResultSchema = z10.object({
1252
+ resource: managedOfferSchema,
1253
+ changed: z10.boolean()
1254
+ });
1255
+ var offerLifecycleInputSchema = z10.strictObject({
1256
+ actionId: z10.string().uuid(),
1257
+ offer: identifier,
1258
+ archived: z10.boolean(),
1259
+ reason: z10.string().trim().min(1).max(500),
1260
+ expectedArchivedAt: z10.number().int().nonnegative().nullable().optional()
1261
+ });
1072
1262
  var resourceLifecyclePaths = {
1073
1263
  tracker: "/trackers",
1074
1264
  referral: "/referral-programs",
@@ -1407,6 +1597,10 @@ function nextScheduleRun(schedule, after) {
1407
1597
  return next.getTime();
1408
1598
  }
1409
1599
  var appScheduleStateSchema = z14.enum(["active", "paused", "archived"]);
1600
+ var appScheduleStateInputSchema = z14.object({
1601
+ state: appScheduleStateSchema,
1602
+ reason: lifecycleReasonSchema.optional()
1603
+ }).strict();
1410
1604
  var APP_SCHEDULE_RESULT_BYTES = 16384;
1411
1605
  var appScheduleDiagnosticSchema = z14.object({
1412
1606
  level: z14.enum(["error", "warning", "info"]),
@@ -1537,6 +1731,46 @@ ${body}`)
1537
1731
 
1538
1732
  // src/server/starters.ts
1539
1733
  import * as z15 from "zod";
1734
+ var starters = [
1735
+ {
1736
+ id: "campaign",
1737
+ title: "Campaign tour",
1738
+ summary: "A neutral quest app with a guided tour of every quest kind. The blank canvas for anything."
1739
+ },
1740
+ {
1741
+ id: "classic",
1742
+ title: "Classic questboard",
1743
+ summary: "The familiar Domino portal: quests in a grid grouped by section, a claim page, points, and a leaderboard."
1744
+ },
1745
+ {
1746
+ id: "waitlist",
1747
+ title: "Waitlist",
1748
+ summary: "Collect sign-ups before launch. People move up the line by inviting friends."
1749
+ },
1750
+ {
1751
+ id: "referral",
1752
+ title: "Referral program",
1753
+ summary: "Give every member an invite link and reward them when friends join and qualify."
1754
+ },
1755
+ {
1756
+ id: "discord",
1757
+ title: "Discord activation",
1758
+ summary: "Turn new Discord members into regulars with quests for joining, introducing themselves, and taking part, rewarded with roles."
1759
+ },
1760
+ {
1761
+ id: "loyalty",
1762
+ title: "Loyalty program",
1763
+ summary: "Members earn points in a campaign, qualify into a members' group, and spend points on offers, some for members only."
1764
+ },
1765
+ {
1766
+ id: "api",
1767
+ title: "API",
1768
+ summary: "A headless Worker with typed routes and interactive API docs, for plugging Domino into your own product."
1769
+ }
1770
+ ];
1771
+ var offeredStarterSchema = z15.string().refine((id) => starters.some((starter) => starter.id === id), {
1772
+ error: `Unknown starter. Choose one of: ${starters.map((starter) => starter.id).join(", ")}.`
1773
+ });
1540
1774
  var starterTemplates = [
1541
1775
  {
1542
1776
  id: "campaign",
@@ -1810,6 +2044,10 @@ var repositorySchema = z16.object({
1810
2044
  defaultBranch: z16.string(),
1811
2045
  status: z16.enum(["provisioning", "ready"])
1812
2046
  });
2047
+ var repositoryCreateSchema = z16.object({
2048
+ /** Omitted: the starter chosen at project setup, else `campaign`. */
2049
+ starter: offeredStarterSchema.optional()
2050
+ }).strict();
1813
2051
  var createRepositorySchema = z16.object({
1814
2052
  /** Omitted: the starter chosen at project setup, else `campaign`. */
1815
2053
  starter: starterIdSchema.optional()
@@ -1922,10 +2160,18 @@ var stagingAccessInputSchema = z16.discriminatedUnion("mode", [
1922
2160
  password: z16.string().min(8).max(128)
1923
2161
  }).strict()
1924
2162
  ]);
1925
- var stagingPathSchema = z16.string().max(2048).refine(
1926
- (path) => path.startsWith("/") && !path.startsWith("//") && !path.includes("\\"),
1927
- "Expected a path on the staging host"
1928
- );
2163
+ var stagingOrigin = "https://staging.invalid";
2164
+ var stagingPathSchema = z16.string().max(2048).refine((path) => {
2165
+ if (!path.startsWith("/") || path.startsWith("//") || path.includes("\\") || // oxlint-disable-next-line no-control-regex
2166
+ /[\u0000-\u001f\u007f]/.test(path)) {
2167
+ return false;
2168
+ }
2169
+ try {
2170
+ return new URL(path, stagingOrigin).origin === stagingOrigin;
2171
+ } catch {
2172
+ return false;
2173
+ }
2174
+ }, "Expected a path on the staging host");
1929
2175
  var stagingLinkSchema = z16.object({
1930
2176
  url: z16.string().url(),
1931
2177
  expiresAt: z16.number()
@@ -1984,12 +2230,13 @@ var artifactFields = {
1984
2230
  }).strict()
1985
2231
  ).max(500)
1986
2232
  };
2233
+ var inlineCode = () => z16.unknown().optional().transform((value) => value);
1987
2234
  var buildArtifactsSchema = z16.discriminatedUnion("format", [
1988
2235
  z16.object({
1989
2236
  format: z16.literal(1),
1990
2237
  ...artifactFields,
1991
- quests: z16.unknown(),
1992
- catalog: z16.unknown()
2238
+ quests: inlineCode(),
2239
+ catalog: inlineCode()
1993
2240
  }).strict(),
1994
2241
  z16.object({
1995
2242
  format: z16.literal(2),
@@ -2192,6 +2439,13 @@ var projectSchema = z19.object({
2192
2439
  path: ["creator"]
2193
2440
  }
2194
2441
  );
2442
+ var projectCreateInputSchema = z19.object({
2443
+ actionId: identifier,
2444
+ name: z19.string().trim().min(1).max(80),
2445
+ setup: projectSetupSchema.optional(),
2446
+ /** The starter a new hosted app begins from, with `setup.mode` "new". */
2447
+ starter: offeredStarterSchema.optional()
2448
+ }).strict();
2195
2449
  var projectInputSchema = z19.object({
2196
2450
  actionId: identifier,
2197
2451
  name: z19.string().trim().min(1).max(80),
@@ -2200,7 +2454,7 @@ var projectInputSchema = z19.object({
2200
2454
  starter: starterIdSchema.optional()
2201
2455
  }).strict();
2202
2456
  var projectUpdateInputSchema = z19.union([
2203
- z19.object({ name: projectInputSchema.shape.name }).strict(),
2457
+ z19.object({ name: projectCreateInputSchema.shape.name }).strict(),
2204
2458
  z19.object({
2205
2459
  slug: projectSchema.shape.slug,
2206
2460
  confirm: z19.string().min(1).max(80)
@@ -2309,12 +2563,87 @@ var completionRevocationSchema = z19.object({
2309
2563
  ),
2310
2564
  streakMilestone: z19.boolean()
2311
2565
  });
2566
+ var completionRestoreSchema = z19.object({
2567
+ actionId: identifier,
2568
+ reason: z19.string().trim().min(1).max(500)
2569
+ }).strict();
2570
+ var RestoredEntitlementOutcome = {
2571
+ /** The revocation voided it, and it is available again. */
2572
+ Restored: "restored",
2573
+ /** The revocation lowered or flagged it: its earned tier is the completion's again. */
2574
+ Raised: "raised",
2575
+ /** It changed since the revocation (an operator restored, voided or corrected it), so it stays. */
2576
+ Kept: "kept"
2577
+ };
2578
+ var RestoredDeliveryOutcome = {
2579
+ /** The grant had not reached Discord, and it is queued again. */
2580
+ Requeued: "requeued",
2581
+ /** The grant counts again for reconciliation, and its delivery status stays. */
2582
+ Kept: "kept"
2583
+ };
2584
+ var RestoredReferralOutcome = {
2585
+ /** The member qualifies on this completion again. */
2586
+ Qualified: "qualified",
2587
+ /** The program is disabled or gone, or the referral is suspended, so nothing changed. */
2588
+ Kept: "kept"
2589
+ };
2590
+ var openOutcome = z19.string().min(1).max(64);
2591
+ var completionRestorationSchema = z19.object({
2592
+ completion: identifier,
2593
+ /** The quest ID, or the board ID when `source.kind` is `leaderboard`. */
2594
+ quest: identifier,
2595
+ member: identifier,
2596
+ source: completionSourceSchema.optional(),
2597
+ restoredAt: z19.number(),
2598
+ points: z19.array(
2599
+ z19.object({
2600
+ entry: identifier,
2601
+ balance: identifier,
2602
+ reversal: identifier,
2603
+ amount: z19.number().int()
2604
+ })
2605
+ ),
2606
+ badges: z19.array(z19.object({ badge: identifier })),
2607
+ groups: z19.array(z19.object({ group: identifier, added: z19.boolean() })),
2608
+ entitlements: z19.array(
2609
+ z19.object({
2610
+ entitlement: identifier,
2611
+ reward: identifier,
2612
+ outcome: openOutcome,
2613
+ status: z19.string()
2614
+ })
2615
+ ),
2616
+ deliveries: z19.array(
2617
+ z19.object({
2618
+ delivery: z19.string(),
2619
+ roleId: z19.string(),
2620
+ outcome: openOutcome
2621
+ })
2622
+ ),
2623
+ referrals: z19.array(
2624
+ z19.object({
2625
+ program: identifier,
2626
+ outcome: openOutcome
2627
+ })
2628
+ ),
2629
+ streakMilestone: z19.boolean()
2630
+ });
2312
2631
  var accessSchema = z19.object({
2313
2632
  actor: z19.string(),
2314
2633
  organization: z19.string(),
2315
2634
  admin: z19.boolean(),
2316
2635
  local: z19.boolean(),
2317
- projects: z19.array(projectSchema)
2636
+ projects: z19.array(projectSchema),
2637
+ /** The credential's own kind and scope, when it is an organization automation key. */
2638
+ credential: z19.object({
2639
+ kind: z19.string(),
2640
+ id: z19.string(),
2641
+ name: z19.string(),
2642
+ /** The projects it reaches; null for every project of the organization. */
2643
+ projects: z19.array(z19.string()).nullable(),
2644
+ createProjects: z19.boolean(),
2645
+ permissions: permissionListSchema
2646
+ }).optional()
2318
2647
  });
2319
2648
  var querySchema = z19.object({
2320
2649
  q: z19.string().max(200).default(""),
@@ -2479,7 +2808,12 @@ var managedTelegramAccountSchema = z19.discriminatedUnion("status", [
2479
2808
  status: z19.literal("connected"),
2480
2809
  /** The numeric Telegram user ID. */
2481
2810
  subject: z19.string().min(1),
2482
- linkedAt: z19.number()
2811
+ linkedAt: z19.number(),
2812
+ /**
2813
+ * True when a member import attached the account with the organization's word for it, not the
2814
+ * member's proof. Absent from Relay versions without it.
2815
+ */
2816
+ imported: z19.boolean().optional()
2483
2817
  }),
2484
2818
  managedTelegramAccountBaseSchema.extend({
2485
2819
  status: z19.literal("disconnected")
@@ -2505,8 +2839,9 @@ var managedWalletSchema = linkedWalletSchema.extend({
2505
2839
  });
2506
2840
  var managedMemberIdentitySchema = memberIdentitySchema.extend({
2507
2841
  /**
2508
- * True for an X account a member import attached, until the member links or signs in with it
2509
- * through X. Absent from Relay versions without imports.
2842
+ * True for an X or Discord account a member import attached, until the member links that
2843
+ * provider's account, or signs in with the X account, through Domino. Absent from Relay versions
2844
+ * without imports.
2510
2845
  */
2511
2846
  imported: z19.boolean().optional(),
2512
2847
  /**
@@ -2569,6 +2904,17 @@ var participantSignInSchema = z19.object({
2569
2904
  login: z19.boolean(),
2570
2905
  miniAppBotId: telegramBotIdSchema.nullable()
2571
2906
  }).optional(),
2907
+ /**
2908
+ * The creator-account providers, such as `youtube`, and whether Domino configured each, so
2909
+ * members can link accounts that trackers like `youtube.shorts()` read. Absent from older Relay
2910
+ * versions.
2911
+ */
2912
+ creatorAccounts: z19.array(
2913
+ z19.object({
2914
+ provider: creatorAccountProviderSchema,
2915
+ configured: z19.boolean()
2916
+ })
2917
+ ).optional(),
2572
2918
  updatedAt: z19.number().nullable(),
2573
2919
  updatedBy: z19.string().nullable()
2574
2920
  });
@@ -2582,12 +2928,24 @@ var completionRevocationShortfallSchema = z19.object({
2582
2928
  revokedAt: z19.number().int().nonnegative().safe(),
2583
2929
  unreversedPoints: z19.record(identifier, z19.number().int().positive().safe())
2584
2930
  });
2931
+ var revokedCompletionSchema = z19.object({
2932
+ completion: identifier,
2933
+ quest: identifier,
2934
+ /** The completion key: its occurrence, such as `once` or a day. */
2935
+ key: z19.string(),
2936
+ revokedAt: z19.number().int().nonnegative().safe(),
2937
+ /** Why it was revoked, and what the revoke did, which a restore re-applies. */
2938
+ reason: z19.string().optional(),
2939
+ revocation: completionRevocationSchema.optional()
2940
+ });
2585
2941
  var memberDetailSchema = z19.object({
2586
2942
  snapshot: snapshotSchema,
2587
2943
  member: memberSchema,
2588
2944
  progress: memberProgressSchema,
2589
2945
  /** Up to 25 revoked completions with an unreversed point remainder, newest first. */
2590
2946
  revocationShortfalls: z19.array(completionRevocationShortfallSchema).default([]),
2947
+ /** Up to 25 revoked completions, newest first. Relay older than restore leaves it out. */
2948
+ revokedCompletions: z19.array(revokedCompletionSchema).optional(),
2591
2949
  /** Current and historical campaign enrollment state, including inactive enrollments. */
2592
2950
  campaignEnrollments: z19.array(campaignEnrollmentSchema).default([]),
2593
2951
  passes: z19.array(
@@ -2614,7 +2972,17 @@ var memberDetailSchema = z19.object({
2614
2972
  * The creator accounts the member linked (a YouTube channel), whose content managed tracker
2615
2973
  * sources attribute to them. Absent from Relay versions without creator accounts.
2616
2974
  */
2617
- creatorAccounts: z19.array(managedCreatorAccountSchema).optional()
2975
+ creatorAccounts: z19.array(managedCreatorAccountSchema).optional(),
2976
+ /**
2977
+ * Who invited the member, when they accepted, and the member import that recorded it, or null
2978
+ * when nobody invited them. Absent from Relay versions before imported referrals.
2979
+ */
2980
+ referral: z19.object({
2981
+ inviter: identifier,
2982
+ acceptedAt: z19.number().int().nonnegative(),
2983
+ suspended: z19.boolean(),
2984
+ import: identifier.nullable()
2985
+ }).nullable().optional()
2618
2986
  });
2619
2987
  var managedMemberProgressSchema = z19.object({
2620
2988
  member: identifier,
@@ -2682,6 +3050,44 @@ var issuedServiceKeySchema = serviceKeySchema.extend({
2682
3050
  secret: z19.string().uuid(),
2683
3051
  token: z19.string()
2684
3052
  });
3053
+ var automationKeyPermissionSchema = z19.enum([
3054
+ "read",
3055
+ "publish",
3056
+ "inventory",
3057
+ "points",
3058
+ "ingest",
3059
+ "enroll"
3060
+ ]);
3061
+ var automationKeyInputSchema = z19.object({
3062
+ name: z19.string().trim().min(1).max(80),
3063
+ permissions: z19.array(automationKeyPermissionSchema).min(1),
3064
+ /** The projects it reaches. Omit it for every project of the organization, current and future. */
3065
+ projects: z19.array(identifier).min(1).max(100).optional(),
3066
+ /** Whether it may create projects. A project it creates joins its `projects` list. */
3067
+ createProjects: z19.boolean().default(false),
3068
+ /** Days until the first secret expires. Omit it for a key that never expires. */
3069
+ expiresInDays: z19.number().int().min(1).max(3650).optional()
3070
+ }).strict();
3071
+ var automationKeySchema = z19.object({
3072
+ id: z19.string().uuid(),
3073
+ organization: z19.string(),
3074
+ name: z19.string(),
3075
+ permissions: permissionListSchema,
3076
+ /** The projects it reaches; null for every project of the organization. */
3077
+ projects: z19.array(z19.string()).nullable(),
3078
+ createProjects: z19.boolean(),
3079
+ /** The Clerk user ID of the administrator who created it. */
3080
+ createdBy: z19.string(),
3081
+ createdAt: z19.number(),
3082
+ /** The latest use of any of its secrets, revoked ones included; null when none was used. */
3083
+ lastUsedAt: z19.number().nullable(),
3084
+ /** Its working secrets, oldest first. Any of them authenticates the key. */
3085
+ secrets: z19.array(credentialSecretSchema)
3086
+ });
3087
+ var issuedAutomationKeySchema = automationKeySchema.extend({
3088
+ secret: z19.string().uuid(),
3089
+ token: z19.string()
3090
+ });
2685
3091
  var teamSchema = z19.array(
2686
3092
  z19.object({ id: z19.string(), label: z19.string() })
2687
3093
  );
@@ -2753,6 +3159,7 @@ var managedAttemptSchema = z19.object({
2753
3159
  attempt: attemptSchema,
2754
3160
  release: publishedReleaseSchema.nullable(),
2755
3161
  events: z19.array(eventSchema),
3162
+ supersededBy: z19.string().nullable().optional(),
2756
3163
  person: personSchema
2757
3164
  });
2758
3165
  var managedEntitlementQuerySchema = z19.strictObject({
@@ -2938,6 +3345,31 @@ function managementClient(options) {
2938
3345
  typeof target === "string" ? call : inputOrCall
2939
3346
  );
2940
3347
  }
3348
+ function setAppScheduleState(state3, inputOrCall, call) {
3349
+ const reasoned = call !== void 0 || inputOrCall !== void 0 && "reason" in inputOrCall;
3350
+ return request(
3351
+ "/schedules/state",
3352
+ appScheduleListSchema,
3353
+ appScheduleStateInputSchema.parse({
3354
+ ...reasoned ? inputOrCall : {},
3355
+ state: state3
3356
+ }),
3357
+ "PUT",
3358
+ reasoned ? call : inputOrCall
3359
+ );
3360
+ }
3361
+ function archiveManagedGroup(verb) {
3362
+ function change(group, inputOrCall, call) {
3363
+ const reasoned = call !== void 0 || inputOrCall !== void 0 && "reason" in inputOrCall;
3364
+ return post(
3365
+ `/groups/${groupKey(group)}/${verb}`,
3366
+ managedGroupSchema,
3367
+ reasoned ? groupArchiveInputSchema.parse(inputOrCall) : {},
3368
+ reasoned ? call : inputOrCall
3369
+ );
3370
+ }
3371
+ return change;
3372
+ }
2941
3373
  function archiveManagedPointLedger(ledger, inputOrCall, call) {
2942
3374
  const input = inputOrCall && "reason" in inputOrCall ? resourceArchiveInputSchema.parse(withActionId(inputOrCall)) : {};
2943
3375
  const options2 = inputOrCall && "reason" in inputOrCall ? call : inputOrCall;
@@ -3015,22 +3447,25 @@ function managementClient(options) {
3015
3447
  },
3016
3448
  trackers: {
3017
3449
  /**
3018
- * Creates an X search tracker as data in test, with the same validation as `defineTracker`;
3019
- * requires `publish`. Its first collection searches from `window.start`. Live refuses it with
3020
- * `promotion-required`: the tracker reaches live through a promotion. A key a deployment
3021
- * already publishes is refused with `tracker-owned-by-code`.
3450
+ * Creates a tracker as data in test, with the same validation as `defineTracker`; requires
3451
+ * `publish`. Name its source with `source`, such as `{ kind: "discord-messages", text: true }`,
3452
+ * or an X search with `query` alone. An X tracker's first collection searches from
3453
+ * `window.start`. Live refuses it with `promotion-required`: the tracker reaches live through
3454
+ * a promotion. A key a deployment already publishes is refused with `tracker-owned-by-code`.
3022
3455
  */
3023
3456
  create: (input, call) => create(
3024
3457
  "/trackers",
3025
3458
  trackerStatusSchema,
3026
- trackerCreateSchema,
3459
+ managedTrackerCreateSchema,
3027
3460
  input,
3028
3461
  call
3029
3462
  ),
3030
3463
  /**
3031
- * Changes a tracker created with `create`, in test; fields left out keep their value. A new
3032
- * query or window collects from now on and never searches the past. A tracker defined in
3033
- * code changes only through a deployment (`tracker-owned-by-code`).
3464
+ * Changes a tracker created with `create`, in test; fields left out keep their value. `source`
3465
+ * replaces the source's settings but never its kind (`validation-failed`). A new query or
3466
+ * window collects from now on and never searches the past, and turning Discord message text
3467
+ * off erases the text already stored. A tracker defined in code changes only through a
3468
+ * deployment (`tracker-owned-by-code`).
3034
3469
  */
3035
3470
  update: (reference, input, call) => post(
3036
3471
  `/trackers/${identifier.parse(reference)}/update`,
@@ -3512,20 +3947,11 @@ function managementClient(options) {
3512
3947
  ),
3513
3948
  /**
3514
3949
  * Freezes a group's membership. Its members still count for prerequisites, leaderboards
3515
- * and referral rules.
3950
+ * and referral rules. Pass `{ reason }` to record why in the audit log.
3516
3951
  */
3517
- archive: (group, call) => post(
3518
- `/groups/${groupKey(group)}/archive`,
3519
- managedGroupSchema,
3520
- {},
3521
- call
3522
- ),
3523
- unarchive: (group, call) => post(
3524
- `/groups/${groupKey(group)}/unarchive`,
3525
- managedGroupSchema,
3526
- {},
3527
- call
3528
- ),
3952
+ archive: archiveManagedGroup("archive"),
3953
+ /** Lets a group's membership change again, with an optional `{ reason }` for the audit log. */
3954
+ unarchive: archiveManagedGroup("unarchive"),
3529
3955
  /** A group's current members by member ID. Pass `nextCursor` back as `cursor`. */
3530
3956
  members: (group, query = {}, call) => get(
3531
3957
  `/groups/${groupKey(group)}/members${queryString(groupPageQuerySchema.parse(query))}`,
@@ -3927,6 +4353,24 @@ function managementClient(options) {
3927
4353
  staffDecisionSchema.parse(withActionId(input)),
3928
4354
  call
3929
4355
  ),
4356
+ /**
4357
+ * Accepts a rejected attempt anyway, with a reason, for any member; requires `review`
4358
+ * permission. The evaluator's or a reviewer's rejection stays in the attempt's events, its
4359
+ * retry cooldown ends, and the acceptance pays as a reviewer's approval would, with the
4360
+ * normal accepted events and webhook. Only the member's latest attempt on a quest that isn't
4361
+ * archived (409 `attempt-superseded`, `quest-archived`); a cap the acceptance would break is
4362
+ * refused, not bypassed (409 `completion-cooldown`, `budget-exhausted`, `completion-revoked`,
4363
+ * `already-completed`). Replaying the action ID returns the first result.
4364
+ */
4365
+ acceptAnyway: (input, call) => {
4366
+ const { attempt, ...body } = input;
4367
+ return post(
4368
+ `/attempts/${identifier.parse(attempt)}/accept-anyway`,
4369
+ attemptSchema,
4370
+ acceptAnywaySchema.parse(withActionId(body)),
4371
+ call
4372
+ );
4373
+ },
3930
4374
  /** Evaluates a failed attempt again under a new generation; requires `review` permission. */
3931
4375
  retry: (attempt, call) => post(
3932
4376
  `/attempts/${identifier.parse(attempt)}/retry`,
@@ -3966,6 +4410,26 @@ function managementClient(options) {
3966
4410
  completionRevokeSchema.parse(withActionId(body)),
3967
4411
  call
3968
4412
  );
4413
+ },
4414
+ /**
4415
+ * Restores a revoked completion with a reason; requires `review` permission. In one
4416
+ * transaction it clears the revocation and re-applies what the revocation recorded: awards
4417
+ * back the points it reversed (not those it could not reverse), re-awards its badges, re-adds
4418
+ * its group memberships, restores the tiered rewards it voided and raises those it lowered,
4419
+ * queues its stopped Discord role grants again, re-qualifies its referrals, and restores a
4420
+ * streak milestone. Budgets stay spent. Fails with 409 `completion-not-revoked` when the
4421
+ * completion counts already, and with 409 `occurrence-taken` when the revocation freed the
4422
+ * occurrence and another completion holds it now. Replaying the action ID returns the first
4423
+ * result.
4424
+ */
4425
+ restore: (input, call) => {
4426
+ const { completion, ...body } = input;
4427
+ return post(
4428
+ `/completions/${identifier.parse(completion)}/restore`,
4429
+ completionRestorationSchema,
4430
+ completionRestoreSchema.parse(withActionId(body)),
4431
+ call
4432
+ );
3969
4433
  }
3970
4434
  },
3971
4435
  /** Staff handover of a member's reward entitlement; requires `handover` permission. */
@@ -4027,6 +4491,20 @@ function managementClient(options) {
4027
4491
  entitlementCorrectionSchema.parse(withActionId(input)),
4028
4492
  call
4029
4493
  ),
4494
+ /**
4495
+ * Restores an entitlement an operator voided, at the `revision` the operator saw, with a
4496
+ * reason. It is available again at the tier an accepted completion still earns, with any
4497
+ * referral review the void settled. Fails with 409 `entitlement-status` when it isn't void;
4498
+ * when a completion revocation voided it, or no accepted completion still earns it, with the
4499
+ * revoked `completion` to restore instead; when canceling a redemption voided it; and for a
4500
+ * referral reward voided before voids kept their referral reviews.
4501
+ */
4502
+ restore: (entitlement, input, call) => post(
4503
+ `/entitlements/${identifier.parse(entitlement)}/restore`,
4504
+ entitlementSchema,
4505
+ entitlementCorrectionSchema.parse(withActionId(input)),
4506
+ call
4507
+ ),
4030
4508
  /**
4031
4509
  * Corrects a collection recorded by mistake, at the `revision` the operator saw, with a
4032
4510
  * reason. The entitlement is available again and any pickup size it held returns to stock.
@@ -4141,6 +4619,25 @@ function managementClient(options) {
4141
4619
  )
4142
4620
  },
4143
4621
  offers: {
4622
+ /**
4623
+ * Archive an offer in test, with a reason the audit log records: members stop seeing it and
4624
+ * redeeming it fails with `offer-paused`, while its redemptions stay cancelable and it stays
4625
+ * archived when its code deploys again. Live gets the change through a promotion. Requires
4626
+ * `publish` permission.
4627
+ */
4628
+ archive: (offer, input, call) => post(
4629
+ `/offers/${identifier.parse(offer)}/archive`,
4630
+ offerLifecycleResultSchema,
4631
+ resourceArchiveInputSchema.parse(withActionId(input)),
4632
+ call
4633
+ ),
4634
+ /** Restore an archived offer in test. Requires `publish` permission. */
4635
+ unarchive: (offer, input, call) => post(
4636
+ `/offers/${identifier.parse(offer)}/unarchive`,
4637
+ offerLifecycleResultSchema,
4638
+ resourceArchiveInputSchema.parse(withActionId(input)),
4639
+ call
4640
+ ),
4144
4641
  pause: (offer, input, call) => post(
4145
4642
  `/offers/${identifier.parse(offer)}/pause`,
4146
4643
  offerSchema,
@@ -4182,7 +4679,7 @@ function managementClient(options) {
4182
4679
  },
4183
4680
  readiness: (call) => get("/readiness", readinessSchema, call),
4184
4681
  access: (call) => get("/access", accessSchema, call),
4185
- createProject: (input, call) => create("/projects", projectSchema, projectInputSchema, input, call),
4682
+ createProject: (input, call) => create("/projects", projectSchema, projectCreateInputSchema, input, call),
4186
4683
  updateProject: (input, call) => request(
4187
4684
  "/project",
4188
4685
  projectSchema,
@@ -4272,6 +4769,47 @@ function managementClient(options) {
4272
4769
  call
4273
4770
  )
4274
4771
  },
4772
+ /**
4773
+ * Organization automation keys (`dak_`): credentials for a headless agent or CI across the
4774
+ * organization's projects, owned by no person. They write in test only. Only an organization
4775
+ * administrator in Console manages them.
4776
+ */
4777
+ automationKeys: {
4778
+ list: (call) => get("/automation-keys", z19.array(automationKeySchema), call),
4779
+ /** The secret `token` is in this response only. */
4780
+ create: (input, call) => post(
4781
+ "/automation-keys",
4782
+ issuedAutomationKeySchema,
4783
+ automationKeyInputSchema.parse(input),
4784
+ call
4785
+ ),
4786
+ /**
4787
+ * Rotation: issues another secret. The key's other secrets keep working until you revoke
4788
+ * them with `revokeSecret`. The new `token` is in this response only.
4789
+ */
4790
+ addSecret: (id, input = {}, call) => post(
4791
+ `/automation-keys/${z19.string().uuid().parse(id)}/secrets`,
4792
+ issuedAutomationKeySchema,
4793
+ credentialSecretInputSchema.parse(input),
4794
+ call
4795
+ ),
4796
+ /** Stops one secret working. A key's last secret cannot be revoked; revoke the key instead. */
4797
+ revokeSecret: (id, secret, call) => request(
4798
+ `/automation-keys/${z19.string().uuid().parse(id)}/secrets/${z19.string().uuid().parse(secret)}`,
4799
+ automationKeySchema,
4800
+ void 0,
4801
+ "DELETE",
4802
+ call
4803
+ ),
4804
+ /** Deletes the key; every secret stops working. */
4805
+ revoke: (id, call) => request(
4806
+ `/automation-keys/${z19.string().uuid().parse(id)}`,
4807
+ z19.null(),
4808
+ void 0,
4809
+ "DELETE",
4810
+ call
4811
+ )
4812
+ },
4275
4813
  /** Who holds which roles on the client's project; organization administrators only. */
4276
4814
  grants: {
4277
4815
  list: (call) => get("/grants", z19.array(grantRecordSchema), call),
@@ -4473,11 +5011,7 @@ function managementClient(options) {
4473
5011
  questTypes: resourceArchiveMethods("quest-type"),
4474
5012
  images: resourceArchiveMethods("image"),
4475
5013
  resources: {
4476
- list: (call) => get(
4477
- "/resources",
4478
- z19.object({ resources: z19.array(managedResourceSchema) }),
4479
- call
4480
- ),
5014
+ list: (call) => get("/resources", managedResourceListSchema, call),
4481
5015
  /** @deprecated Use the resource archive/unarchive methods. Removed in 2.0.0. */
4482
5016
  lifecycle: (input, call) => post(
4483
5017
  "/resources/lifecycle",
@@ -4515,6 +5049,12 @@ function managementClient(options) {
4515
5049
  ),
4516
5050
  /** Operations of the Discord role reward kind on assignments it delivered. */
4517
5051
  discordRoles: {
5052
+ /**
5053
+ * Every Discord role the project's reward deliveries grant in this environment, with the
5054
+ * quests that requested it and its deliveries counted by status. Unlike `rewardDeliveries`,
5055
+ * it covers the whole history, so a role granted only long ago still appears.
5056
+ */
5057
+ list: (call) => get("/reward-deliveries/roles", discordRoleRewardsSchema, call),
4518
5058
  /**
4519
5059
  * Hands the role assignment a delivery made to an external administrator or bot: Relay stops
4520
5060
  * removing it automatically, in every project and environment that shares the assignment.
@@ -4581,11 +5121,15 @@ function managementClient(options) {
4581
5121
  testMemberAcceptAnywaySchema.parse(withActionId(input)),
4582
5122
  call
4583
5123
  ),
4584
- /** Move forward 1–30 project-calendar days, up to 90 total. Reset deletes the member. */
5124
+ /**
5125
+ * Move the member's clock forward by 1–30 project-calendar days, 1–720 hours, 1–43200
5126
+ * minutes, or `to` a later instant; at most 90 days ahead of real time. Reset deletes the
5127
+ * member.
5128
+ */
4585
5129
  advance: (member, input, call) => post(
4586
5130
  `/test-members/${identifier.parse(member)}/clock`,
4587
5131
  testMemberSchema,
4588
- testMemberAdvanceSchema.parse(withActionId(input)),
5132
+ testMemberClockAdvanceSchema.parse(withActionId(input)),
4589
5133
  call
4590
5134
  ),
4591
5135
  /**
@@ -4660,7 +5204,8 @@ function managementClient(options) {
4660
5204
  * this project and environment. Add rows, `check` them (the dry run), read the summary and the
4661
5205
  * refused rows, then `apply`. Checking and applying run in the background: read the import
4662
5206
  * until its status is `checked` or `applied`. Needs `publish` permission. In live, only a
4663
- * person signed in to Console applies an import; keys and CLI sessions prepare and check it.
5207
+ * person signed in to Console applies an import; keys and CLI sessions prepare, check, cancel,
5208
+ * stop and revert it.
4664
5209
  */
4665
5210
  memberImports: {
4666
5211
  create: (input, call) => post(
@@ -4692,7 +5237,7 @@ function managementClient(options) {
4692
5237
  addRows: (id, rows, call) => post(
4693
5238
  `/member-imports/${identifier.parse(id)}/rows`,
4694
5239
  memberImportSchema,
4695
- memberImportRowsInputSchema.parse({ rows }),
5240
+ memberImportFullRowsInputSchema.parse({ rows }),
4696
5241
  call
4697
5242
  ),
4698
5243
  /** Starts the dry run: every row is checked against the project, and nothing changes. */
@@ -4715,6 +5260,31 @@ function managementClient(options) {
4715
5260
  memberImportSchema,
4716
5261
  {},
4717
5262
  call
5263
+ ),
5264
+ /**
5265
+ * Stops an applying import: the row being applied finishes, no further row is applied, and
5266
+ * the import reads as `applied` with `appliedAt` null and `stoppedAt` set. Its remaining rows
5267
+ * stay `ready`; a stopped import can't be applied again, so import the rest in a new import. Stopping a stopped import changes nothing.
5268
+ */
5269
+ stop: (id, call) => post(
5270
+ `/member-imports/${identifier.parse(id)}/stop`,
5271
+ memberImportSchema,
5272
+ {},
5273
+ call
5274
+ ),
5275
+ /**
5276
+ * Starts reverting an applied or stopped import, in the background: each applied row's
5277
+ * opening balances are reversed as far as the member still has the points, its imported
5278
+ * completions revoked, and the links it created removed unless the member signed in with
5279
+ * one since. Members stay in the project. Read the import until `revert.revertedAt` is set;
5280
+ * `revert.outcome` then lists the points members had spent and the links kept. An import is
5281
+ * reverted once; the same `actionId` answers the import again.
5282
+ */
5283
+ revert: (id, input, call) => post(
5284
+ `/member-imports/${identifier.parse(id)}/revert`,
5285
+ memberImportSchema,
5286
+ memberImportRevertInputSchema.parse(withActionId(input)),
5287
+ call
4718
5288
  )
4719
5289
  },
4720
5290
  /** The project's members, as operators see them. */
@@ -5022,13 +5592,8 @@ function managementClient(options) {
5022
5592
  {},
5023
5593
  call
5024
5594
  ),
5025
- setState: (state3, call) => request(
5026
- "/schedules/state",
5027
- appScheduleListSchema,
5028
- { state: appScheduleStateSchema.parse(state3) },
5029
- "PUT",
5030
- call
5031
- ),
5595
+ /** Activates, pauses or archives the project's schedules, with an optional audited reason. */
5596
+ setState: setAppScheduleState,
5032
5597
  recover: (name, input, call) => post(
5033
5598
  `/schedules/${appScheduleNameSchema.parse(name)}/recover`,
5034
5599
  appScheduleListSchema,
@@ -5480,6 +6045,9 @@ var managementResponseSchemas = lazyResponseReaders({
5480
6045
  get completionRevocationSchema() {
5481
6046
  return knownResponse(completionRevocationSchema);
5482
6047
  },
6048
+ get completionRestorationSchema() {
6049
+ return knownResponse(completionRestorationSchema);
6050
+ },
5483
6051
  get contentPerformancePageSchema() {
5484
6052
  return knownResponse(contentPerformancePageSchema);
5485
6053
  },
@@ -5504,6 +6072,9 @@ var managementResponseSchemas = lazyResponseReaders({
5504
6072
  get deploymentResultSchema() {
5505
6073
  return knownResponse(deploymentResultSchema);
5506
6074
  },
6075
+ get discordRoleRewardsSchema() {
6076
+ return knownResponse(discordRoleRewardsSchema);
6077
+ },
5507
6078
  get engagementBoundaryPageSchema() {
5508
6079
  return knownResponse(engagementBoundaryPageSchema);
5509
6080
  },
@@ -5555,6 +6126,12 @@ var managementResponseSchemas = lazyResponseReaders({
5555
6126
  get issuedServiceKeySchema() {
5556
6127
  return knownResponse(issuedServiceKeySchema);
5557
6128
  },
6129
+ get automationKeySchema() {
6130
+ return knownResponse(automationKeySchema);
6131
+ },
6132
+ get issuedAutomationKeySchema() {
6133
+ return knownResponse(issuedAutomationKeySchema);
6134
+ },
5558
6135
  get leaderboardPageSchema() {
5559
6136
  return knownResponse(leaderboardPageSchema);
5560
6137
  },
@@ -5627,6 +6204,12 @@ var managementResponseSchemas = lazyResponseReaders({
5627
6204
  get managedResourceSchema() {
5628
6205
  return knownResponse(managedResourceSchema);
5629
6206
  },
6207
+ get managedResourceListSchema() {
6208
+ return knownResponse(managedResourceListSchema);
6209
+ },
6210
+ get offerLifecycleResultSchema() {
6211
+ return knownResponse(offerLifecycleResultSchema);
6212
+ },
5630
6213
  get managedStockItemSchema() {
5631
6214
  return knownResponse(managedStockItemSchema);
5632
6215
  },
@@ -5956,6 +6539,9 @@ var managementResponses = lazyResponseReaders({
5956
6539
  get completionRevocationSchema() {
5957
6540
  return responseSchema(completionRevocationSchema);
5958
6541
  },
6542
+ get completionRestorationSchema() {
6543
+ return responseSchema(completionRestorationSchema);
6544
+ },
5959
6545
  get contentPerformancePageSchema() {
5960
6546
  return responseSchema(contentPerformancePageSchema);
5961
6547
  },
@@ -5980,6 +6566,9 @@ var managementResponses = lazyResponseReaders({
5980
6566
  get deploymentResultSchema() {
5981
6567
  return responseSchema(deploymentResultSchema);
5982
6568
  },
6569
+ get discordRoleRewardsSchema() {
6570
+ return responseSchema(discordRoleRewardsSchema);
6571
+ },
5983
6572
  get engagementBoundaryPageSchema() {
5984
6573
  return responseSchema(engagementBoundaryPageSchema);
5985
6574
  },
@@ -6031,6 +6620,12 @@ var managementResponses = lazyResponseReaders({
6031
6620
  get issuedServiceKeySchema() {
6032
6621
  return responseSchema(issuedServiceKeySchema);
6033
6622
  },
6623
+ get automationKeySchema() {
6624
+ return responseSchema(automationKeySchema);
6625
+ },
6626
+ get issuedAutomationKeySchema() {
6627
+ return responseSchema(issuedAutomationKeySchema);
6628
+ },
6034
6629
  get leaderboardPageSchema() {
6035
6630
  return responseSchema(leaderboardPageSchema);
6036
6631
  },
@@ -6103,6 +6698,12 @@ var managementResponses = lazyResponseReaders({
6103
6698
  get managedResourceSchema() {
6104
6699
  return responseSchema(managedResourceSchema);
6105
6700
  },
6701
+ get managedResourceListSchema() {
6702
+ return responseSchema(managedResourceListSchema);
6703
+ },
6704
+ get offerLifecycleResultSchema() {
6705
+ return responseSchema(offerLifecycleResultSchema);
6706
+ },
6106
6707
  get managedStockItemSchema() {
6107
6708
  return responseSchema(managedStockItemSchema);
6108
6709
  },
@@ -6317,6 +6918,9 @@ export {
6317
6918
  MemberImportRefusalCode,
6318
6919
  PayoutSourceKind,
6319
6920
  REFERRAL_INTEGRATION_REWARD_ERROR,
6921
+ RestoredDeliveryOutcome,
6922
+ RestoredEntitlementOutcome,
6923
+ RestoredReferralOutcome,
6320
6924
  RevokedDeliveryOutcome,
6321
6925
  RevokedEntitlementOutcome,
6322
6926
  RevokedReferralOutcome,
@@ -6353,6 +6957,7 @@ export {
6353
6957
  appScheduleRunSchema,
6354
6958
  appScheduleRunsSchema,
6355
6959
  appScheduleSchema,
6960
+ appScheduleStateInputSchema,
6356
6961
  appScheduleStateSchema,
6357
6962
  appSchedulesSchema,
6358
6963
  appSecretDeclarationSchema,
@@ -6377,6 +6982,9 @@ export {
6377
6982
  auditPageSchema,
6378
6983
  auditQuerySchema,
6379
6984
  auditRecordSchema,
6985
+ automationKeyInputSchema,
6986
+ automationKeyPermissionSchema,
6987
+ automationKeySchema,
6380
6988
  balanceCheckSchema,
6381
6989
  billingCheckoutInputSchema,
6382
6990
  billingIntervals,
@@ -6395,6 +7003,8 @@ export {
6395
7003
  capturedFactSchema,
6396
7004
  commitSchema,
6397
7005
  compareAppMigrations,
7006
+ completionRestorationSchema,
7007
+ completionRestoreSchema,
6398
7008
  completionRevocationSchema,
6399
7009
  completionRevocationShortfallSchema,
6400
7010
  completionRevokeSchema,
@@ -6428,6 +7038,7 @@ export {
6428
7038
  environmentSchema,
6429
7039
  grantRecordSchema,
6430
7040
  grantSchema,
7041
+ groupArchiveInputSchema,
6431
7042
  groupMemberPageSchema,
6432
7043
  groupMemberSchema,
6433
7044
  groupPageQuerySchema,
@@ -6456,6 +7067,7 @@ export {
6456
7067
  isIntegrationParticipantPath,
6457
7068
  isManagementError,
6458
7069
  isParticipantRoute,
7070
+ issuedAutomationKeySchema,
6459
7071
  issuedServiceKeySchema,
6460
7072
  issuedTokenSchema,
6461
7073
  leaderboardSettlementExportSchema,
@@ -6480,11 +7092,13 @@ export {
6480
7092
  managedMemberProgressSchema,
6481
7093
  managedMemberQuerySchema,
6482
7094
  managedOAuthAccountSchema,
7095
+ managedOfferSchema,
6483
7096
  managedPointHistoryPageSchema,
6484
7097
  managedQuestEnrollmentPageSchema,
6485
7098
  managedQuestEnrollmentSchema,
6486
7099
  managedReleasePageSchema,
6487
7100
  managedReleaseQuerySchema,
7101
+ managedResourceListSchema,
6488
7102
  managedResourceSchema,
6489
7103
  managedStockItemSchema,
6490
7104
  managedTelegramAccountSchema,
@@ -6508,10 +7122,16 @@ export {
6508
7122
  memberImportAccountSchema,
6509
7123
  memberImportActionSchema,
6510
7124
  memberImportCreateSchema,
7125
+ memberImportFullRowSchema,
7126
+ memberImportFullRowsInputSchema,
6511
7127
  memberImportIdentitySchema,
6512
7128
  memberImportListQuerySchema,
6513
7129
  memberImportPageSchema,
7130
+ memberImportReferralSchema,
6514
7131
  memberImportRefusalSchema,
7132
+ memberImportRevertInputSchema,
7133
+ memberImportRevertOutcomeSchema,
7134
+ memberImportRevertSchema,
6515
7135
  memberImportRowPageSchema,
6516
7136
  memberImportRowQuerySchema,
6517
7137
  memberImportRowResultSchema,
@@ -6519,6 +7139,7 @@ export {
6519
7139
  memberImportRowsInputSchema,
6520
7140
  memberImportSchema,
6521
7141
  memberImportSummarySchema,
7142
+ memberImportVouchedAccountSchema,
6522
7143
  memberLookupSchema,
6523
7144
  memberOAuthUnlinkInputSchema,
6524
7145
  memberSchema,
@@ -6528,6 +7149,9 @@ export {
6528
7149
  metricsSchema,
6529
7150
  nextScheduleRun,
6530
7151
  oauthIdentitySelectorSchema,
7152
+ offerLifecycleInputSchema,
7153
+ offerLifecycleResultSchema,
7154
+ offeredStarterSchema,
6531
7155
  operationInputSchema,
6532
7156
  operationSchema,
6533
7157
  operatorUserSchema,
@@ -6544,6 +7168,7 @@ export {
6544
7168
  personSchema,
6545
7169
  pointLedgerPropertiesSchema,
6546
7170
  projectBillingSchema,
7171
+ projectCreateInputSchema,
6547
7172
  projectDeletionInputSchema,
6548
7173
  projectDeletionSchema,
6549
7174
  projectInputSchema,
@@ -6577,12 +7202,14 @@ export {
6577
7202
  referralRewardResolutionSchema,
6578
7203
  referralSuspensionSchema,
6579
7204
  removeGroupMemberSchema,
7205
+ repositoryCreateSchema,
6580
7206
  repositorySchema,
6581
7207
  resourceArchiveInputSchema,
6582
7208
  resourceLifecycleInputSchema,
6583
7209
  resourceLifecycleKindSchema,
6584
7210
  resourceLifecyclePaths,
6585
7211
  resourceLifecycleResultSchema,
7212
+ revokedCompletionSchema,
6586
7213
  rolePermissions,
6587
7214
  roleSchema,
6588
7215
  scheduleResult,
@@ -6590,6 +7217,7 @@ export {
6590
7217
  sequenceCursorSchema,
6591
7218
  serviceKeyInputSchema,
6592
7219
  serviceKeySchema,
7220
+ settlementPayoutCsv,
6593
7221
  sourceDataSchema,
6594
7222
  sourceRoles,
6595
7223
  stageRequestSchema,
@@ -6604,6 +7232,7 @@ export {
6604
7232
  stagingPathSchema,
6605
7233
  starterIdSchema,
6606
7234
  starterTemplates,
7235
+ starters,
6607
7236
  stockAdditionSchema,
6608
7237
  stockInputSchema,
6609
7238
  teamSchema,
@@ -6615,6 +7244,7 @@ export {
6615
7244
  testMemberAccountUnlinkSchema,
6616
7245
  testMemberActionSchema,
6617
7246
  testMemberAdvanceSchema,
7247
+ testMemberClockAdvanceSchema,
6618
7248
  testMemberCreateSchema,
6619
7249
  testMemberDiscordMessageSchema,
6620
7250
  testMemberDiscordReactionSchema,