@learncard/types 5.18.2 → 5.19.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.
@@ -32,6 +32,8 @@ __export(index_exports, {
32
32
  AgeRatingValidator: () => AgeRatingValidator,
33
33
  AlignmentTargetTypeValidator: () => AlignmentTargetTypeValidator,
34
34
  AlignmentValidator: () => AlignmentValidator,
35
+ AllocateCredentialRefreshInputValidator: () => AllocateCredentialRefreshInputValidator,
36
+ AllocateCredentialRefreshResultValidator: () => AllocateCredentialRefreshResultValidator,
35
37
  AllocateCredentialStatusInputValidator: () => AllocateCredentialStatusInputValidator,
36
38
  AllocatedBitstringStatusListEntryValidator: () => AllocatedBitstringStatusListEntryValidator,
37
39
  AllowConnectionRequestsEnum: () => AllowConnectionRequestsEnum,
@@ -113,6 +115,16 @@ __export(index_exports, {
113
115
  CredentialInfoValidator: () => CredentialInfoValidator,
114
116
  CredentialNameRefValidator: () => CredentialNameRefValidator,
115
117
  CredentialRecordValidator: () => CredentialRecordValidator,
118
+ CredentialRefreshChallengeValidator: () => CredentialRefreshChallengeValidator,
119
+ CredentialRefreshFailedResultValidator: () => CredentialRefreshFailedResultValidator,
120
+ CredentialRefreshFailureCodeValidator: () => CredentialRefreshFailureCodeValidator,
121
+ CredentialRefreshResponseEnvelopeValidator: () => CredentialRefreshResponseEnvelopeValidator,
122
+ CredentialRefreshResultValidator: () => CredentialRefreshResultValidator,
123
+ CredentialRefreshSigningModeValidator: () => CredentialRefreshSigningModeValidator,
124
+ CredentialRefreshUnchangedResultValidator: () => CredentialRefreshUnchangedResultValidator,
125
+ CredentialRefreshUnsupportedResultValidator: () => CredentialRefreshUnsupportedResultValidator,
126
+ CredentialRefreshUpdatedResultValidator: () => CredentialRefreshUpdatedResultValidator,
127
+ CredentialRefreshVersionMetadataValidator: () => CredentialRefreshVersionMetadataValidator,
116
128
  CredentialSchemaValidator: () => CredentialSchemaValidator,
117
129
  CredentialStatusValidator: () => CredentialStatusValidator,
118
130
  CredentialSubjectValidator: () => CredentialSubjectValidator,
@@ -133,6 +145,8 @@ __export(index_exports, {
133
145
  GeoCoordinatesValidator: () => GeoCoordinatesValidator,
134
146
  GetCounterEventValidator: () => GetCounterEventValidator,
135
147
  GetCountersEventValidator: () => GetCountersEventValidator,
148
+ GetCredentialRefreshHistoryInputValidator: () => GetCredentialRefreshHistoryInputValidator,
149
+ GetCredentialRefreshHistoryResultValidator: () => GetCredentialRefreshHistoryResultValidator,
136
150
  GetFullSkillTreeInputValidator: () => GetFullSkillTreeInputValidator,
137
151
  GetFullSkillTreeResultValidator: () => GetFullSkillTreeResultValidator,
138
152
  GetSkillPathInputValidator: () => GetSkillPathInputValidator,
@@ -157,6 +171,7 @@ __export(index_exports, {
157
171
  JWEValidator: () => JWEValidator,
158
172
  JWKValidator: () => JWKValidator,
159
173
  JWKWithPrivateKeyValidator: () => JWKWithPrivateKeyValidator,
174
+ JweCredentialRefreshEnvelopeValidator: () => JweCredentialRefreshEnvelopeValidator,
160
175
  KnownAchievementTypeValidator: () => KnownAchievementTypeValidator,
161
176
  LCNAuthedProfileValidator: () => LCNAuthedProfileValidator,
162
177
  LCNBoostClaimLinkOptionsValidator: () => LCNBoostClaimLinkOptionsValidator,
@@ -194,7 +209,9 @@ __export(index_exports, {
194
209
  LCNSigningAuthorityValidator: () => LCNSigningAuthorityValidator,
195
210
  LCNVisibleProfileValidator: () => LCNVisibleProfileValidator,
196
211
  LaunchTypeValidator: () => LaunchTypeValidator,
212
+ LearnCardRefreshAuthorizationValidator: () => LearnCardRefreshAuthorizationValidator,
197
213
  LinkProviderFrameworkInputValidator: () => LinkProviderFrameworkInputValidator,
214
+ ManagedCredentialRefreshServiceValidator: () => ManagedCredentialRefreshServiceValidator,
198
215
  PaginatedAppStoreListingsValidator: () => PaginatedAppStoreListingsValidator,
199
216
  PaginatedBoostRecipientsValidator: () => PaginatedBoostRecipientsValidator,
200
217
  PaginatedBoostRecipientsWithChildrenValidator: () => PaginatedBoostRecipientsWithChildrenValidator,
@@ -224,6 +241,12 @@ __export(index_exports, {
224
241
  ProfileVisibilityEnum: () => ProfileVisibilityEnum,
225
242
  PromotionLevelValidator: () => PromotionLevelValidator,
226
243
  ProofValidator: () => ProofValidator,
244
+ PublicCredentialRefreshEnvelopeValidator: () => PublicCredentialRefreshEnvelopeValidator,
245
+ PublishCredentialRefreshInputValidator: () => PublishCredentialRefreshInputValidator,
246
+ PublishCredentialRefreshNotificationValidator: () => PublishCredentialRefreshNotificationValidator,
247
+ PublishCredentialRefreshResultValidator: () => PublishCredentialRefreshResultValidator,
248
+ PublishIssuerSignedRefreshValidator: () => PublishIssuerSignedRefreshValidator,
249
+ PublishSigningAuthorityRefreshValidator: () => PublishSigningAuthorityRefreshValidator,
227
250
  RefreshServiceValidator: () => RefreshServiceValidator,
228
251
  RegExpValidator: () => RegExpValidator,
229
252
  RelatedValidator: () => RelatedValidator,
@@ -264,11 +287,13 @@ __export(index_exports, {
264
287
  SkillTreeNodeInputValidator: () => SkillTreeNodeInputValidator,
265
288
  SkillTreeNodeValidator: () => SkillTreeNodeValidator,
266
289
  SkillValidator: () => SkillValidator,
290
+ StandardCredentialRefreshServiceValidator: () => StandardCredentialRefreshServiceValidator,
267
291
  StatusCheckEntryValidator: () => StatusCheckEntryValidator,
268
292
  StoredCredentialEnvelopeValidator: () => StoredCredentialEnvelopeValidator,
269
293
  StringQuery: () => StringQuery,
270
294
  SummaryCredentialDataValidator: () => SummaryCredentialDataValidator,
271
295
  SummaryCredentialKeywordValidator: () => SummaryCredentialKeywordValidator,
296
+ SupportedCredentialRefreshServiceValidator: () => SupportedCredentialRefreshServiceValidator,
272
297
  SyncFrameworkInputValidator: () => SyncFrameworkInputValidator,
273
298
  TagValidator: () => TagValidator,
274
299
  TemplateRenderMethodValidator: () => TemplateRenderMethodValidator,
@@ -15968,7 +15993,8 @@ var LCNAuthedProfileValidator = LCNPublicProfileValidator.extend({
15968
15993
  did: LCNProfileValidator.shape.did
15969
15994
  });
15970
15995
  var LCNConnectionProfileValidator = LCNAuthedProfileValidator.extend({
15971
- email: LCNProfileValidator.shape.email
15996
+ email: LCNProfileValidator.shape.email,
15997
+ connectedAt: external_exports.iso.datetime().optional().describe("When the viewer and this profile became connected.")
15972
15998
  });
15973
15999
  var LCNVisibleProfileValidator = external_exports.union([
15974
16000
  LCNConnectionProfileValidator.strict(),
@@ -16201,7 +16227,10 @@ var SendOptionsValidator = external_exports.object({
16201
16227
  webhookUrl: external_exports.string().url().optional().describe("Webhook URL to receive claim notifications"),
16202
16228
  suppressDelivery: external_exports.boolean().optional().describe("If true, returns claimUrl without sending email/SMS"),
16203
16229
  branding: SendBrandingOptionsValidator.optional().describe("Branding for email/SMS delivery"),
16204
- guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim")
16230
+ guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim"),
16231
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
16232
+ "How many days the credential stays claimable in the Universal Inbox (default 30). Does not change the credential validity period."
16233
+ )
16205
16234
  });
16206
16235
  var SendBoostInputValidator = external_exports.object({
16207
16236
  type: external_exports.literal("boost"),
@@ -16496,7 +16525,8 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
16496
16525
  "APP_NOTIFICATION",
16497
16526
  "CREDENTIAL_REVOKED",
16498
16527
  "CREDENTIAL_SUSPENDED",
16499
- "CREDENTIAL_UNSUSPENDED"
16528
+ "CREDENTIAL_UNSUSPENDED",
16529
+ "CREDENTIAL_REFRESHED"
16500
16530
  ]);
16501
16531
  var LCNNotificationMessageValidator = external_exports.object({
16502
16532
  title: external_exports.string().optional(),
@@ -16628,12 +16658,16 @@ var CreateContactMethodSessionResponseValidator = external_exports.object({
16628
16658
  });
16629
16659
  var InboxCredentialValidator = external_exports.object({
16630
16660
  id: external_exports.string(),
16631
- credential: external_exports.string(),
16661
+ credential: external_exports.string().optional(),
16632
16662
  isSigned: external_exports.boolean(),
16633
16663
  currentStatus: LCNInboxStatusEnumValidator,
16634
16664
  isAccepted: external_exports.boolean().optional(),
16635
16665
  expiresAt: external_exports.string(),
16636
16666
  createdAt: external_exports.string(),
16667
+ finalizedAt: external_exports.string().optional(),
16668
+ expiredAt: external_exports.string().optional(),
16669
+ credentialName: external_exports.string().optional(),
16670
+ achievementType: external_exports.string().optional(),
16637
16671
  issuerDid: external_exports.string(),
16638
16672
  webhookUrl: external_exports.string().optional(),
16639
16673
  boostUri: external_exports.string().optional(),
@@ -16687,7 +16721,9 @@ var IssueInboxCredentialValidator = external_exports.object({
16687
16721
  "The signing authority to use for the credential. If not provided, the users default signing authority will be used if the credential is not signed."
16688
16722
  ),
16689
16723
  webhookUrl: external_exports.string().url().optional().describe("The webhook URL to receive credential issuance events."),
16690
- expiresInDays: external_exports.number().min(1).max(365).optional().describe("The number of days the credential will be valid for."),
16724
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
16725
+ "How many days the encrypted inbox payload remains claimable. This does not change the credential validity period."
16726
+ ),
16691
16727
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional().describe(
16692
16728
  "Template data to render into the boost credential template using Mustache syntax. Only used when boostUri is provided."
16693
16729
  ),
@@ -16750,6 +16786,9 @@ var ClaimInboxCredentialValidator = external_exports.object({
16750
16786
  credential: VCValidator.or(VPValidator).or(UnsignedVCValidator).or(CredentialNameRefValidator).describe("The credential to issue, or a { name } reference to resolve a boost template."),
16751
16787
  configuration: external_exports.object({
16752
16788
  publishableKey: external_exports.string(),
16789
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
16790
+ "Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
16791
+ ),
16753
16792
  signingAuthorityName: external_exports.string().optional(),
16754
16793
  listingId: external_exports.string().optional(),
16755
16794
  listingSlug: external_exports.string().optional()
@@ -17390,3 +17429,190 @@ var parseInAppMessagesFlag = /* @__PURE__ */ __name((raw) => {
17390
17429
  const result = inAppMessagesFlagValidator.safeParse(raw);
17391
17430
  return result.success ? result.data : EMPTY_IN_APP_MESSAGES_FLAG;
17392
17431
  }, "parseInAppMessagesFlag");
17432
+
17433
+ // src/credential-refresh.ts
17434
+ var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
17435
+ var ManagedCredentialRefreshServiceValidator = external_exports.object({
17436
+ id: external_exports.string().min(1),
17437
+ type: external_exports.literal("LearnCardCredentialRefresh2026"),
17438
+ authorization: LearnCardRefreshAuthorizationValidator.optional()
17439
+ }).catchall(external_exports.any());
17440
+ var StandardCredentialRefreshServiceValidator = external_exports.object({
17441
+ id: external_exports.string().min(1),
17442
+ type: external_exports.literal("1EdTechCredentialRefresh")
17443
+ }).catchall(external_exports.any());
17444
+ var SupportedCredentialRefreshServiceValidator = external_exports.union([
17445
+ ManagedCredentialRefreshServiceValidator,
17446
+ StandardCredentialRefreshServiceValidator
17447
+ ]);
17448
+ var AllocateCredentialRefreshInputValidator = external_exports.object({
17449
+ holder: external_exports.object({
17450
+ profileId: external_exports.string().optional(),
17451
+ did: external_exports.string().min(1)
17452
+ }),
17453
+ credentialId: external_exports.string().min(1)
17454
+ });
17455
+ var AllocateCredentialRefreshResultValidator = external_exports.object({
17456
+ refreshId: external_exports.string().min(1),
17457
+ refreshService: ManagedCredentialRefreshServiceValidator.extend({
17458
+ authorization: LearnCardRefreshAuthorizationValidator
17459
+ })
17460
+ });
17461
+ var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
17462
+ var PublishCredentialRefreshBaseFields = {
17463
+ refreshId: external_exports.string().min(1),
17464
+ notifyHolder: external_exports.boolean().optional(),
17465
+ updateSummary: external_exports.string().optional(),
17466
+ idempotencyKey: external_exports.string().optional()
17467
+ };
17468
+ var PublishIssuerSignedRefreshValidator = external_exports.object({
17469
+ ...PublishCredentialRefreshBaseFields,
17470
+ mode: external_exports.literal("issuer-signed"),
17471
+ signedCredential: VCValidator
17472
+ });
17473
+ var PublishSigningAuthorityRefreshValidator = external_exports.object({
17474
+ ...PublishCredentialRefreshBaseFields,
17475
+ mode: external_exports.literal("signing-authority"),
17476
+ credential: UnsignedVCValidator,
17477
+ signingAuthority: external_exports.object({
17478
+ type: external_exports.string().min(1)
17479
+ }).catchall(external_exports.any())
17480
+ });
17481
+ var PublishCredentialRefreshInputValidator = external_exports.object({
17482
+ ...PublishCredentialRefreshBaseFields,
17483
+ mode: CredentialRefreshSigningModeValidator,
17484
+ signedCredential: VCValidator.optional(),
17485
+ credential: UnsignedVCValidator.optional(),
17486
+ signingAuthority: external_exports.object({
17487
+ type: external_exports.string().min(1)
17488
+ }).catchall(external_exports.any()).optional()
17489
+ }).superRefine((input, ctx) => {
17490
+ if (input.mode === "issuer-signed" && !input.signedCredential) {
17491
+ ctx.addIssue({
17492
+ code: "custom",
17493
+ path: ["signedCredential"],
17494
+ message: "signedCredential is required for issuer-signed publication"
17495
+ });
17496
+ }
17497
+ if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
17498
+ ctx.addIssue({
17499
+ code: "custom",
17500
+ path: ["mode"],
17501
+ message: "issuer-signed publication cannot include signing-authority fields"
17502
+ });
17503
+ }
17504
+ if (input.mode === "signing-authority") {
17505
+ if (input.signedCredential !== void 0) {
17506
+ ctx.addIssue({
17507
+ code: "custom",
17508
+ path: ["signedCredential"],
17509
+ message: "signing-authority publication cannot include signedCredential"
17510
+ });
17511
+ }
17512
+ if (!input.credential) {
17513
+ ctx.addIssue({
17514
+ code: "custom",
17515
+ path: ["credential"],
17516
+ message: "credential is required for signing-authority publication"
17517
+ });
17518
+ }
17519
+ if (!input.signingAuthority) {
17520
+ ctx.addIssue({
17521
+ code: "custom",
17522
+ path: ["signingAuthority"],
17523
+ message: "signingAuthority is required for signing-authority publication"
17524
+ });
17525
+ }
17526
+ }
17527
+ });
17528
+ var PublishCredentialRefreshNotificationValidator = external_exports.enum([
17529
+ "queued",
17530
+ "suppressed",
17531
+ "not-applicable",
17532
+ /** Publication succeeded, but the post-commit notification enqueue must be retried. */
17533
+ "delivery-failed"
17534
+ ]);
17535
+ var PublishCredentialRefreshResultValidator = external_exports.object({
17536
+ refreshId: external_exports.string().min(1),
17537
+ version: external_exports.number().int().positive(),
17538
+ publishedAt: external_exports.string().min(1),
17539
+ notification: PublishCredentialRefreshNotificationValidator
17540
+ });
17541
+ var CredentialRefreshVersionMetadataValidator = external_exports.object({
17542
+ version: external_exports.number().int().positive(),
17543
+ publishedAt: external_exports.string().min(1),
17544
+ effectiveAt: external_exports.string().optional(),
17545
+ etag: external_exports.string().optional(),
17546
+ signingMode: CredentialRefreshSigningModeValidator.optional(),
17547
+ updateSummary: external_exports.string().optional()
17548
+ });
17549
+ var GetCredentialRefreshHistoryInputValidator = external_exports.object({
17550
+ refreshId: external_exports.string().min(1),
17551
+ cursor: external_exports.string().optional(),
17552
+ limit: external_exports.number().int().positive().optional()
17553
+ });
17554
+ var GetCredentialRefreshHistoryResultValidator = external_exports.object({
17555
+ records: CredentialRefreshVersionMetadataValidator.array(),
17556
+ hasMore: external_exports.boolean(),
17557
+ cursor: external_exports.string().optional()
17558
+ });
17559
+ var CredentialRefreshChallengeValidator = external_exports.object({
17560
+ challenge: external_exports.string().min(1),
17561
+ expiresAt: external_exports.string().min(1),
17562
+ domain: external_exports.string().optional(),
17563
+ scheme: external_exports.literal("LearnCardDIDAuth").optional()
17564
+ });
17565
+ var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
17566
+ format: external_exports.literal("vc"),
17567
+ credential: VCValidator,
17568
+ etag: external_exports.string().optional()
17569
+ });
17570
+ var JweCredentialRefreshEnvelopeValidator = external_exports.object({
17571
+ format: external_exports.literal("jwe"),
17572
+ jwe: JWEValidator,
17573
+ etag: external_exports.string().optional(),
17574
+ /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
17575
+ version: external_exports.number().int().positive().optional()
17576
+ });
17577
+ var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
17578
+ PublicCredentialRefreshEnvelopeValidator,
17579
+ JweCredentialRefreshEnvelopeValidator
17580
+ ]);
17581
+ var CredentialRefreshFailureCodeValidator = external_exports.enum([
17582
+ "UNAVAILABLE",
17583
+ "TIMEOUT",
17584
+ "UNSUPPORTED_SERVICE",
17585
+ "UNAUTHORIZED",
17586
+ "MALFORMED_RESPONSE",
17587
+ "INVALID_PROOF",
17588
+ "ISSUER_MISMATCH",
17589
+ "ID_MISMATCH",
17590
+ "ROLLBACK",
17591
+ "REVOKED",
17592
+ "UNSAFE_ENDPOINT"
17593
+ ]);
17594
+ var CredentialRefreshUpdatedResultValidator = external_exports.object({
17595
+ status: external_exports.literal("updated"),
17596
+ credential: VCValidator,
17597
+ etag: external_exports.string().optional(),
17598
+ managedVersion: external_exports.number().int().positive().optional()
17599
+ });
17600
+ var CredentialRefreshUnchangedResultValidator = external_exports.object({
17601
+ status: external_exports.literal("unchanged"),
17602
+ checkedAt: external_exports.string().min(1),
17603
+ etag: external_exports.string().optional()
17604
+ });
17605
+ var CredentialRefreshUnsupportedResultValidator = external_exports.object({
17606
+ status: external_exports.literal("unsupported")
17607
+ });
17608
+ var CredentialRefreshFailedResultValidator = external_exports.object({
17609
+ status: external_exports.literal("failed"),
17610
+ code: CredentialRefreshFailureCodeValidator,
17611
+ retryable: external_exports.boolean()
17612
+ });
17613
+ var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
17614
+ CredentialRefreshUpdatedResultValidator,
17615
+ CredentialRefreshUnchangedResultValidator,
17616
+ CredentialRefreshUnsupportedResultValidator,
17617
+ CredentialRefreshFailedResultValidator
17618
+ ]);