@timeback/oneroster 0.1.3 → 0.1.4

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 (34) hide show
  1. package/dist/index.js +165 -135
  2. package/dist/resources/assessment/results.d.ts +2 -2
  3. package/dist/resources/assessment/results.d.ts.map +1 -1
  4. package/dist/resources/base.d.ts +10 -10
  5. package/dist/resources/base.d.ts.map +1 -1
  6. package/dist/resources/gradebook/categories.d.ts +3 -3
  7. package/dist/resources/gradebook/categories.d.ts.map +1 -1
  8. package/dist/resources/gradebook/results.d.ts +2 -2
  9. package/dist/resources/gradebook/results.d.ts.map +1 -1
  10. package/dist/resources/gradebook/score-scales.d.ts +2 -2
  11. package/dist/resources/gradebook/score-scales.d.ts.map +1 -1
  12. package/dist/resources/rostering/academic-sessions.d.ts +7 -8
  13. package/dist/resources/rostering/academic-sessions.d.ts.map +1 -1
  14. package/dist/resources/rostering/classes.d.ts +19 -19
  15. package/dist/resources/rostering/classes.d.ts.map +1 -1
  16. package/dist/resources/rostering/courses.d.ts +7 -7
  17. package/dist/resources/rostering/courses.d.ts.map +1 -1
  18. package/dist/resources/rostering/demographics.d.ts +2 -2
  19. package/dist/resources/rostering/demographics.d.ts.map +1 -1
  20. package/dist/resources/rostering/enrollments.d.ts +2 -2
  21. package/dist/resources/rostering/enrollments.d.ts.map +1 -1
  22. package/dist/resources/rostering/orgs.d.ts +2 -2
  23. package/dist/resources/rostering/orgs.d.ts.map +1 -1
  24. package/dist/resources/rostering/schools.d.ts +23 -23
  25. package/dist/resources/rostering/schools.d.ts.map +1 -1
  26. package/dist/resources/rostering/users.d.ts +10 -11
  27. package/dist/resources/rostering/users.d.ts.map +1 -1
  28. package/dist/types/callable.d.ts +25 -24
  29. package/dist/types/callable.d.ts.map +1 -1
  30. package/dist/types/index.d.ts +1 -0
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/types/list-params.d.ts +15 -0
  33. package/dist/types/list-params.d.ts.map +1 -0
  34. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1545,7 +1545,7 @@ class Transport extends BaseTransport {
1545
1545
  }
1546
1546
  }
1547
1547
 
1548
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1548
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
1549
1549
  var exports_external = {};
1550
1550
  __export(exports_external, {
1551
1551
  xor: () => xor,
@@ -1786,7 +1786,7 @@ __export(exports_external, {
1786
1786
  $brand: () => $brand
1787
1787
  });
1788
1788
 
1789
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/index.js
1789
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/index.js
1790
1790
  var exports_core2 = {};
1791
1791
  __export(exports_core2, {
1792
1792
  version: () => version,
@@ -2064,7 +2064,7 @@ __export(exports_core2, {
2064
2064
  $ZodAny: () => $ZodAny
2065
2065
  });
2066
2066
 
2067
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/core.js
2067
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/core.js
2068
2068
  var NEVER = Object.freeze({
2069
2069
  status: "aborted"
2070
2070
  });
@@ -2140,7 +2140,7 @@ function config(newConfig) {
2140
2140
  Object.assign(globalConfig, newConfig);
2141
2141
  return globalConfig;
2142
2142
  }
2143
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/util.js
2143
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js
2144
2144
  var exports_util = {};
2145
2145
  __export(exports_util, {
2146
2146
  unwrapMessage: () => unwrapMessage,
@@ -2814,7 +2814,7 @@ class Class {
2814
2814
  constructor(..._args) {}
2815
2815
  }
2816
2816
 
2817
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/errors.js
2817
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js
2818
2818
  var initializer = (inst, def) => {
2819
2819
  inst.name = "$ZodError";
2820
2820
  Object.defineProperty(inst, "_zod", {
@@ -2951,7 +2951,7 @@ function prettifyError(error) {
2951
2951
  `);
2952
2952
  }
2953
2953
 
2954
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/parse.js
2954
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js
2955
2955
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
2956
2956
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
2957
2957
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -3038,7 +3038,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
3038
3038
  return _safeParseAsync(_Err)(schema, value, _ctx);
3039
3039
  };
3040
3040
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
3041
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/regexes.js
3041
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js
3042
3042
  var exports_regexes = {};
3043
3043
  __export(exports_regexes, {
3044
3044
  xid: () => xid,
@@ -3195,7 +3195,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
3195
3195
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
3196
3196
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
3197
3197
 
3198
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/checks.js
3198
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js
3199
3199
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
3200
3200
  var _a;
3201
3201
  inst._zod ?? (inst._zod = {});
@@ -3742,7 +3742,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3742
3742
  };
3743
3743
  });
3744
3744
 
3745
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/doc.js
3745
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js
3746
3746
  class Doc {
3747
3747
  constructor(args = []) {
3748
3748
  this.content = [];
@@ -3780,14 +3780,14 @@ class Doc {
3780
3780
  }
3781
3781
  }
3782
3782
 
3783
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/versions.js
3783
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js
3784
3784
  var version = {
3785
3785
  major: 4,
3786
3786
  minor: 3,
3787
- patch: 5
3787
+ patch: 6
3788
3788
  };
3789
3789
 
3790
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/schemas.js
3790
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js
3791
3791
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3792
3792
  var _a;
3793
3793
  inst ?? (inst = {});
@@ -5070,7 +5070,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
5070
5070
  if (keyResult instanceof Promise) {
5071
5071
  throw new Error("Async schemas not supported in object keys currently");
5072
5072
  }
5073
- const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length && keyResult.issues.some((iss) => iss.code === "invalid_type" && iss.expected === "number");
5073
+ const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
5074
5074
  if (checkNumericKey) {
5075
5075
  const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
5076
5076
  if (retryResult instanceof Promise) {
@@ -5749,7 +5749,7 @@ function handleRefineResult(result, payload, input, inst) {
5749
5749
  payload.issues.push(issue2(_iss));
5750
5750
  }
5751
5751
  }
5752
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/index.js
5752
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/index.js
5753
5753
  var exports_locales = {};
5754
5754
  __export(exports_locales, {
5755
5755
  zhTW: () => zh_TW_default,
@@ -5803,7 +5803,7 @@ __export(exports_locales, {
5803
5803
  ar: () => ar_default
5804
5804
  });
5805
5805
 
5806
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ar.js
5806
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ar.js
5807
5807
  var error = () => {
5808
5808
  const Sizable = {
5809
5809
  string: { unit: "حرف", verb: "أن يحوي" },
@@ -5909,7 +5909,7 @@ function ar_default() {
5909
5909
  localeError: error()
5910
5910
  };
5911
5911
  }
5912
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/az.js
5912
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/az.js
5913
5913
  var error2 = () => {
5914
5914
  const Sizable = {
5915
5915
  string: { unit: "simvol", verb: "olmalıdır" },
@@ -6014,7 +6014,7 @@ function az_default() {
6014
6014
  localeError: error2()
6015
6015
  };
6016
6016
  }
6017
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/be.js
6017
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/be.js
6018
6018
  function getBelarusianPlural(count, one, few, many) {
6019
6019
  const absCount = Math.abs(count);
6020
6020
  const lastDigit = absCount % 10;
@@ -6170,7 +6170,7 @@ function be_default() {
6170
6170
  localeError: error3()
6171
6171
  };
6172
6172
  }
6173
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/bg.js
6173
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/bg.js
6174
6174
  var error4 = () => {
6175
6175
  const Sizable = {
6176
6176
  string: { unit: "символа", verb: "да съдържа" },
@@ -6290,7 +6290,7 @@ function bg_default() {
6290
6290
  localeError: error4()
6291
6291
  };
6292
6292
  }
6293
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ca.js
6293
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ca.js
6294
6294
  var error5 = () => {
6295
6295
  const Sizable = {
6296
6296
  string: { unit: "caràcters", verb: "contenir" },
@@ -6397,7 +6397,7 @@ function ca_default() {
6397
6397
  localeError: error5()
6398
6398
  };
6399
6399
  }
6400
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/cs.js
6400
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/cs.js
6401
6401
  var error6 = () => {
6402
6402
  const Sizable = {
6403
6403
  string: { unit: "znaků", verb: "mít" },
@@ -6508,7 +6508,7 @@ function cs_default() {
6508
6508
  localeError: error6()
6509
6509
  };
6510
6510
  }
6511
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/da.js
6511
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/da.js
6512
6512
  var error7 = () => {
6513
6513
  const Sizable = {
6514
6514
  string: { unit: "tegn", verb: "havde" },
@@ -6623,7 +6623,7 @@ function da_default() {
6623
6623
  localeError: error7()
6624
6624
  };
6625
6625
  }
6626
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/de.js
6626
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/de.js
6627
6627
  var error8 = () => {
6628
6628
  const Sizable = {
6629
6629
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6731,7 +6731,7 @@ function de_default() {
6731
6731
  localeError: error8()
6732
6732
  };
6733
6733
  }
6734
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/en.js
6734
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/en.js
6735
6735
  var error9 = () => {
6736
6736
  const Sizable = {
6737
6737
  string: { unit: "characters", verb: "to have" },
@@ -6837,7 +6837,7 @@ function en_default() {
6837
6837
  localeError: error9()
6838
6838
  };
6839
6839
  }
6840
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/eo.js
6840
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/eo.js
6841
6841
  var error10 = () => {
6842
6842
  const Sizable = {
6843
6843
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6946,7 +6946,7 @@ function eo_default() {
6946
6946
  localeError: error10()
6947
6947
  };
6948
6948
  }
6949
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/es.js
6949
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/es.js
6950
6950
  var error11 = () => {
6951
6951
  const Sizable = {
6952
6952
  string: { unit: "caracteres", verb: "tener" },
@@ -7078,7 +7078,7 @@ function es_default() {
7078
7078
  localeError: error11()
7079
7079
  };
7080
7080
  }
7081
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fa.js
7081
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fa.js
7082
7082
  var error12 = () => {
7083
7083
  const Sizable = {
7084
7084
  string: { unit: "کاراکتر", verb: "داشته باشد" },
@@ -7192,7 +7192,7 @@ function fa_default() {
7192
7192
  localeError: error12()
7193
7193
  };
7194
7194
  }
7195
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fi.js
7195
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fi.js
7196
7196
  var error13 = () => {
7197
7197
  const Sizable = {
7198
7198
  string: { unit: "merkkiä", subject: "merkkijonon" },
@@ -7304,7 +7304,7 @@ function fi_default() {
7304
7304
  localeError: error13()
7305
7305
  };
7306
7306
  }
7307
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr.js
7307
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr.js
7308
7308
  var error14 = () => {
7309
7309
  const Sizable = {
7310
7310
  string: { unit: "caractères", verb: "avoir" },
@@ -7412,7 +7412,7 @@ function fr_default() {
7412
7412
  localeError: error14()
7413
7413
  };
7414
7414
  }
7415
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js
7415
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js
7416
7416
  var error15 = () => {
7417
7417
  const Sizable = {
7418
7418
  string: { unit: "caractères", verb: "avoir" },
@@ -7519,7 +7519,7 @@ function fr_CA_default() {
7519
7519
  localeError: error15()
7520
7520
  };
7521
7521
  }
7522
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/he.js
7522
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/he.js
7523
7523
  var error16 = () => {
7524
7524
  const TypeNames = {
7525
7525
  string: { label: "מחרוזת", gender: "f" },
@@ -7712,7 +7712,7 @@ function he_default() {
7712
7712
  localeError: error16()
7713
7713
  };
7714
7714
  }
7715
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hu.js
7715
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hu.js
7716
7716
  var error17 = () => {
7717
7717
  const Sizable = {
7718
7718
  string: { unit: "karakter", verb: "legyen" },
@@ -7820,7 +7820,7 @@ function hu_default() {
7820
7820
  localeError: error17()
7821
7821
  };
7822
7822
  }
7823
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hy.js
7823
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hy.js
7824
7824
  function getArmenianPlural(count, one, many) {
7825
7825
  return Math.abs(count) === 1 ? one : many;
7826
7826
  }
@@ -7967,7 +7967,7 @@ function hy_default() {
7967
7967
  localeError: error18()
7968
7968
  };
7969
7969
  }
7970
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/id.js
7970
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/id.js
7971
7971
  var error19 = () => {
7972
7972
  const Sizable = {
7973
7973
  string: { unit: "karakter", verb: "memiliki" },
@@ -8073,7 +8073,7 @@ function id_default() {
8073
8073
  localeError: error19()
8074
8074
  };
8075
8075
  }
8076
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/is.js
8076
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/is.js
8077
8077
  var error20 = () => {
8078
8078
  const Sizable = {
8079
8079
  string: { unit: "stafi", verb: "að hafa" },
@@ -8182,7 +8182,7 @@ function is_default() {
8182
8182
  localeError: error20()
8183
8183
  };
8184
8184
  }
8185
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/it.js
8185
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/it.js
8186
8186
  var error21 = () => {
8187
8187
  const Sizable = {
8188
8188
  string: { unit: "caratteri", verb: "avere" },
@@ -8290,7 +8290,7 @@ function it_default() {
8290
8290
  localeError: error21()
8291
8291
  };
8292
8292
  }
8293
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ja.js
8293
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ja.js
8294
8294
  var error22 = () => {
8295
8295
  const Sizable = {
8296
8296
  string: { unit: "文字", verb: "である" },
@@ -8397,7 +8397,7 @@ function ja_default() {
8397
8397
  localeError: error22()
8398
8398
  };
8399
8399
  }
8400
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ka.js
8400
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ka.js
8401
8401
  var error23 = () => {
8402
8402
  const Sizable = {
8403
8403
  string: { unit: "სიმბოლო", verb: "უნდა შეიცავდეს" },
@@ -8509,7 +8509,7 @@ function ka_default() {
8509
8509
  localeError: error23()
8510
8510
  };
8511
8511
  }
8512
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/km.js
8512
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/km.js
8513
8513
  var error24 = () => {
8514
8514
  const Sizable = {
8515
8515
  string: { unit: "តួអក្សរ", verb: "គួរមាន" },
@@ -8620,11 +8620,11 @@ function km_default() {
8620
8620
  };
8621
8621
  }
8622
8622
 
8623
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/kh.js
8623
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/kh.js
8624
8624
  function kh_default() {
8625
8625
  return km_default();
8626
8626
  }
8627
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ko.js
8627
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ko.js
8628
8628
  var error25 = () => {
8629
8629
  const Sizable = {
8630
8630
  string: { unit: "문자", verb: "to have" },
@@ -8735,7 +8735,7 @@ function ko_default() {
8735
8735
  localeError: error25()
8736
8736
  };
8737
8737
  }
8738
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/lt.js
8738
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/lt.js
8739
8739
  var capitalizeFirstCharacter = (text) => {
8740
8740
  return text.charAt(0).toUpperCase() + text.slice(1);
8741
8741
  };
@@ -8938,7 +8938,7 @@ function lt_default() {
8938
8938
  localeError: error26()
8939
8939
  };
8940
8940
  }
8941
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/mk.js
8941
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/mk.js
8942
8942
  var error27 = () => {
8943
8943
  const Sizable = {
8944
8944
  string: { unit: "знаци", verb: "да имаат" },
@@ -9047,7 +9047,7 @@ function mk_default() {
9047
9047
  localeError: error27()
9048
9048
  };
9049
9049
  }
9050
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ms.js
9050
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ms.js
9051
9051
  var error28 = () => {
9052
9052
  const Sizable = {
9053
9053
  string: { unit: "aksara", verb: "mempunyai" },
@@ -9154,7 +9154,7 @@ function ms_default() {
9154
9154
  localeError: error28()
9155
9155
  };
9156
9156
  }
9157
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/nl.js
9157
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/nl.js
9158
9158
  var error29 = () => {
9159
9159
  const Sizable = {
9160
9160
  string: { unit: "tekens", verb: "heeft" },
@@ -9264,7 +9264,7 @@ function nl_default() {
9264
9264
  localeError: error29()
9265
9265
  };
9266
9266
  }
9267
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/no.js
9267
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/no.js
9268
9268
  var error30 = () => {
9269
9269
  const Sizable = {
9270
9270
  string: { unit: "tegn", verb: "å ha" },
@@ -9372,7 +9372,7 @@ function no_default() {
9372
9372
  localeError: error30()
9373
9373
  };
9374
9374
  }
9375
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ota.js
9375
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ota.js
9376
9376
  var error31 = () => {
9377
9377
  const Sizable = {
9378
9378
  string: { unit: "harf", verb: "olmalıdır" },
@@ -9481,7 +9481,7 @@ function ota_default() {
9481
9481
  localeError: error31()
9482
9482
  };
9483
9483
  }
9484
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ps.js
9484
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ps.js
9485
9485
  var error32 = () => {
9486
9486
  const Sizable = {
9487
9487
  string: { unit: "توکي", verb: "ولري" },
@@ -9595,7 +9595,7 @@ function ps_default() {
9595
9595
  localeError: error32()
9596
9596
  };
9597
9597
  }
9598
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pl.js
9598
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pl.js
9599
9599
  var error33 = () => {
9600
9600
  const Sizable = {
9601
9601
  string: { unit: "znaków", verb: "mieć" },
@@ -9704,7 +9704,7 @@ function pl_default() {
9704
9704
  localeError: error33()
9705
9705
  };
9706
9706
  }
9707
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pt.js
9707
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pt.js
9708
9708
  var error34 = () => {
9709
9709
  const Sizable = {
9710
9710
  string: { unit: "caracteres", verb: "ter" },
@@ -9812,7 +9812,7 @@ function pt_default() {
9812
9812
  localeError: error34()
9813
9813
  };
9814
9814
  }
9815
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ru.js
9815
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ru.js
9816
9816
  function getRussianPlural(count, one, few, many) {
9817
9817
  const absCount = Math.abs(count);
9818
9818
  const lastDigit = absCount % 10;
@@ -9968,7 +9968,7 @@ function ru_default() {
9968
9968
  localeError: error35()
9969
9969
  };
9970
9970
  }
9971
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sl.js
9971
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sl.js
9972
9972
  var error36 = () => {
9973
9973
  const Sizable = {
9974
9974
  string: { unit: "znakov", verb: "imeti" },
@@ -10077,7 +10077,7 @@ function sl_default() {
10077
10077
  localeError: error36()
10078
10078
  };
10079
10079
  }
10080
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sv.js
10080
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sv.js
10081
10081
  var error37 = () => {
10082
10082
  const Sizable = {
10083
10083
  string: { unit: "tecken", verb: "att ha" },
@@ -10187,7 +10187,7 @@ function sv_default() {
10187
10187
  localeError: error37()
10188
10188
  };
10189
10189
  }
10190
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ta.js
10190
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ta.js
10191
10191
  var error38 = () => {
10192
10192
  const Sizable = {
10193
10193
  string: { unit: "எழுத்துக்கள்", verb: "கொண்டிருக்க வேண்டும்" },
@@ -10297,7 +10297,7 @@ function ta_default() {
10297
10297
  localeError: error38()
10298
10298
  };
10299
10299
  }
10300
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/th.js
10300
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/th.js
10301
10301
  var error39 = () => {
10302
10302
  const Sizable = {
10303
10303
  string: { unit: "ตัวอักษร", verb: "ควรมี" },
@@ -10407,7 +10407,7 @@ function th_default() {
10407
10407
  localeError: error39()
10408
10408
  };
10409
10409
  }
10410
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/tr.js
10410
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/tr.js
10411
10411
  var error40 = () => {
10412
10412
  const Sizable = {
10413
10413
  string: { unit: "karakter", verb: "olmalı" },
@@ -10512,7 +10512,7 @@ function tr_default() {
10512
10512
  localeError: error40()
10513
10513
  };
10514
10514
  }
10515
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uk.js
10515
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uk.js
10516
10516
  var error41 = () => {
10517
10517
  const Sizable = {
10518
10518
  string: { unit: "символів", verb: "матиме" },
@@ -10621,11 +10621,11 @@ function uk_default() {
10621
10621
  };
10622
10622
  }
10623
10623
 
10624
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ua.js
10624
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ua.js
10625
10625
  function ua_default() {
10626
10626
  return uk_default();
10627
10627
  }
10628
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ur.js
10628
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ur.js
10629
10629
  var error42 = () => {
10630
10630
  const Sizable = {
10631
10631
  string: { unit: "حروف", verb: "ہونا" },
@@ -10735,7 +10735,7 @@ function ur_default() {
10735
10735
  localeError: error42()
10736
10736
  };
10737
10737
  }
10738
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uz.js
10738
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uz.js
10739
10739
  var error43 = () => {
10740
10740
  const Sizable = {
10741
10741
  string: { unit: "belgi", verb: "bo‘lishi kerak" },
@@ -10844,7 +10844,7 @@ function uz_default() {
10844
10844
  localeError: error43()
10845
10845
  };
10846
10846
  }
10847
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/vi.js
10847
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/vi.js
10848
10848
  var error44 = () => {
10849
10849
  const Sizable = {
10850
10850
  string: { unit: "ký tự", verb: "có" },
@@ -10952,7 +10952,7 @@ function vi_default() {
10952
10952
  localeError: error44()
10953
10953
  };
10954
10954
  }
10955
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js
10955
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js
10956
10956
  var error45 = () => {
10957
10957
  const Sizable = {
10958
10958
  string: { unit: "字符", verb: "包含" },
@@ -11061,7 +11061,7 @@ function zh_CN_default() {
11061
11061
  localeError: error45()
11062
11062
  };
11063
11063
  }
11064
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js
11064
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js
11065
11065
  var error46 = () => {
11066
11066
  const Sizable = {
11067
11067
  string: { unit: "字元", verb: "擁有" },
@@ -11168,7 +11168,7 @@ function zh_TW_default() {
11168
11168
  localeError: error46()
11169
11169
  };
11170
11170
  }
11171
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/yo.js
11171
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/yo.js
11172
11172
  var error47 = () => {
11173
11173
  const Sizable = {
11174
11174
  string: { unit: "àmi", verb: "ní" },
@@ -11275,7 +11275,7 @@ function yo_default() {
11275
11275
  localeError: error47()
11276
11276
  };
11277
11277
  }
11278
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/registries.js
11278
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js
11279
11279
  var _a;
11280
11280
  var $output = Symbol("ZodOutput");
11281
11281
  var $input = Symbol("ZodInput");
@@ -11325,7 +11325,7 @@ function registry() {
11325
11325
  }
11326
11326
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
11327
11327
  var globalRegistry = globalThis.__zod_globalRegistry;
11328
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/api.js
11328
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js
11329
11329
  function _string(Class2, params) {
11330
11330
  return new Class2({
11331
11331
  type: "string",
@@ -12245,7 +12245,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
12245
12245
  const inst = new Class2(def);
12246
12246
  return inst;
12247
12247
  }
12248
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js
12248
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js
12249
12249
  function initializeContext(params) {
12250
12250
  let target = params?.target ?? "draft-2020-12";
12251
12251
  if (target === "draft-4")
@@ -12441,7 +12441,7 @@ function finalize(ctx, schema) {
12441
12441
  }
12442
12442
  }
12443
12443
  }
12444
- if (refSchema.$ref) {
12444
+ if (refSchema.$ref && refSeen.def) {
12445
12445
  for (const key in schema2) {
12446
12446
  if (key === "$ref" || key === "allOf")
12447
12447
  continue;
@@ -12590,7 +12590,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
12590
12590
  extractDefs(ctx, schema);
12591
12591
  return finalize(ctx, schema);
12592
12592
  };
12593
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js
12593
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js
12594
12594
  var formatMap = {
12595
12595
  guid: "uuid",
12596
12596
  url: "uri",
@@ -13135,7 +13135,7 @@ function toJSONSchema(input, params) {
13135
13135
  extractDefs(ctx, input);
13136
13136
  return finalize(ctx, input);
13137
13137
  }
13138
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js
13138
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js
13139
13139
  class JSONSchemaGenerator {
13140
13140
  get metadataRegistry() {
13141
13141
  return this.ctx.metadataRegistry;
@@ -13194,9 +13194,9 @@ class JSONSchemaGenerator {
13194
13194
  return plainResult;
13195
13195
  }
13196
13196
  }
13197
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema.js
13197
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema.js
13198
13198
  var exports_json_schema = {};
13199
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13199
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13200
13200
  var exports_schemas2 = {};
13201
13201
  __export(exports_schemas2, {
13202
13202
  xor: () => xor,
@@ -13365,7 +13365,7 @@ __export(exports_schemas2, {
13365
13365
  ZodAny: () => ZodAny
13366
13366
  });
13367
13367
 
13368
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/checks.js
13368
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/checks.js
13369
13369
  var exports_checks2 = {};
13370
13370
  __export(exports_checks2, {
13371
13371
  uppercase: () => _uppercase,
@@ -13399,7 +13399,7 @@ __export(exports_checks2, {
13399
13399
  endsWith: () => _endsWith
13400
13400
  });
13401
13401
 
13402
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/iso.js
13402
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js
13403
13403
  var exports_iso = {};
13404
13404
  __export(exports_iso, {
13405
13405
  time: () => time2,
@@ -13440,7 +13440,7 @@ function duration2(params) {
13440
13440
  return _isoDuration(ZodISODuration, params);
13441
13441
  }
13442
13442
 
13443
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/errors.js
13443
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js
13444
13444
  var initializer2 = (inst, issues) => {
13445
13445
  $ZodError.init(inst, issues);
13446
13446
  inst.name = "ZodError";
@@ -13475,7 +13475,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
13475
13475
  Parent: Error
13476
13476
  });
13477
13477
 
13478
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/parse.js
13478
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js
13479
13479
  var parse3 = /* @__PURE__ */ _parse(ZodRealError);
13480
13480
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
13481
13481
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -13489,7 +13489,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
13489
13489
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
13490
13490
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
13491
13491
 
13492
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13492
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13493
13493
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
13494
13494
  $ZodType.init(inst, def);
13495
13495
  Object.assign(inst["~standard"], {
@@ -14565,7 +14565,7 @@ function json(params) {
14565
14565
  function preprocess(fn, schema) {
14566
14566
  return pipe(transform(fn), schema);
14567
14567
  }
14568
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/compat.js
14568
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/compat.js
14569
14569
  var ZodIssueCode = {
14570
14570
  invalid_type: "invalid_type",
14571
14571
  too_big: "too_big",
@@ -14589,7 +14589,7 @@ function getErrorMap() {
14589
14589
  }
14590
14590
  var ZodFirstPartyTypeKind;
14591
14591
  (function(ZodFirstPartyTypeKind2) {})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
14592
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js
14592
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js
14593
14593
  var z = {
14594
14594
  ...exports_schemas2,
14595
14595
  ...exports_checks2,
@@ -15050,7 +15050,7 @@ function fromJSONSchema(schema, params) {
15050
15050
  };
15051
15051
  return convertSchema(schema, ctx);
15052
15052
  }
15053
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/coerce.js
15053
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/coerce.js
15054
15054
  var exports_coerce = {};
15055
15055
  __export(exports_coerce, {
15056
15056
  string: () => string3,
@@ -15075,7 +15075,7 @@ function date4(params) {
15075
15075
  return _coercedDate(ZodDate, params);
15076
15076
  }
15077
15077
 
15078
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
15078
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
15079
15079
  config(en_default());
15080
15080
  // ../../types/src/zod/primitives.ts
15081
15081
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -15092,7 +15092,7 @@ var TimebackSubject = exports_external.enum([
15092
15092
  "Math",
15093
15093
  "None",
15094
15094
  "Other"
15095
- ]);
15095
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
15096
15096
  var TimebackGrade = exports_external.union([
15097
15097
  exports_external.literal(-1),
15098
15098
  exports_external.literal(0),
@@ -15109,7 +15109,10 @@ var TimebackGrade = exports_external.union([
15109
15109
  exports_external.literal(11),
15110
15110
  exports_external.literal(12),
15111
15111
  exports_external.literal(13)
15112
- ]);
15112
+ ]).meta({
15113
+ id: "TimebackGrade",
15114
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15115
+ });
15113
15116
  var ScoreStatus = exports_external.enum([
15114
15117
  "exempt",
15115
15118
  "fully graded",
@@ -15341,62 +15344,84 @@ var CaliperListEventsParams = exports_external.object({
15341
15344
  }).strict();
15342
15345
  // ../../types/src/zod/config.ts
15343
15346
  var CourseIds = exports_external.object({
15344
- staging: exports_external.string().optional(),
15345
- production: exports_external.string().optional()
15346
- });
15347
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15348
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15347
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15348
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15349
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15350
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15351
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15349
15352
  var CourseGoals = exports_external.object({
15350
- dailyXp: exports_external.number().int().positive().optional(),
15351
- dailyLessons: exports_external.number().int().positive().optional(),
15352
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15353
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15354
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15355
- });
15353
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15354
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15355
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15356
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15357
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15358
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15356
15359
  var CourseMetrics = exports_external.object({
15357
- totalXp: exports_external.number().int().positive().optional(),
15358
- totalLessons: exports_external.number().int().positive().optional(),
15359
- totalGrades: exports_external.number().int().positive().optional()
15360
- });
15360
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15361
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15362
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15363
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15361
15364
  var CourseMetadata = exports_external.object({
15362
15365
  courseType: CourseType.optional(),
15363
- isSupplemental: exports_external.boolean().optional(),
15364
- isCustom: exports_external.boolean().optional(),
15366
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15367
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15365
15368
  publishStatus: PublishStatus.optional(),
15366
- contactEmail: exports_external.email().optional(),
15367
- primaryApp: exports_external.string().optional(),
15369
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15370
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15368
15371
  goals: CourseGoals.optional(),
15369
15372
  metrics: CourseMetrics.optional()
15370
- });
15373
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15371
15374
  var CourseDefaults = exports_external.object({
15372
- courseCode: exports_external.string().optional(),
15373
- level: exports_external.string().optional(),
15375
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15376
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15374
15377
  metadata: CourseMetadata.optional()
15378
+ }).meta({
15379
+ id: "CourseDefaults",
15380
+ description: "Default properties that apply to all courses unless overridden"
15375
15381
  });
15376
15382
  var CourseEnvOverrides = exports_external.object({
15377
- level: exports_external.string().optional(),
15378
- sensor: exports_external.string().url().optional(),
15379
- launchUrl: exports_external.string().url().optional(),
15383
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15384
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15385
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15380
15386
  metadata: CourseMetadata.optional()
15387
+ }).meta({
15388
+ id: "CourseEnvOverrides",
15389
+ description: "Environment-specific course overrides (non-identity fields)"
15381
15390
  });
15382
15391
  var CourseOverrides = exports_external.object({
15383
- staging: CourseEnvOverrides.optional(),
15384
- production: CourseEnvOverrides.optional()
15385
- });
15392
+ staging: CourseEnvOverrides.meta({
15393
+ description: "Overrides for staging environment"
15394
+ }).optional(),
15395
+ production: CourseEnvOverrides.meta({
15396
+ description: "Overrides for production environment"
15397
+ }).optional()
15398
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15386
15399
  var CourseConfig = CourseDefaults.extend({
15387
- subject: TimebackSubject,
15388
- grade: TimebackGrade.optional(),
15400
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15401
+ grade: TimebackGrade.meta({
15402
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15403
+ }).optional(),
15389
15404
  ids: CourseIds.nullable().optional(),
15390
- sensor: exports_external.string().url().optional(),
15391
- launchUrl: exports_external.string().url().optional(),
15405
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15406
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15392
15407
  overrides: CourseOverrides.optional()
15408
+ }).meta({
15409
+ id: "CourseConfig",
15410
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15393
15411
  });
15394
15412
  var TimebackConfig = exports_external.object({
15395
- name: exports_external.string().min(1, "App name is required"),
15396
- defaults: CourseDefaults.optional(),
15397
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15398
- sensor: exports_external.string().url().optional(),
15399
- launchUrl: exports_external.string().url().optional()
15413
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15414
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15415
+ defaults: CourseDefaults.meta({
15416
+ description: "Default properties applied to all courses"
15417
+ }).optional(),
15418
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15419
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15420
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15421
+ }).meta({
15422
+ id: "TimebackConfig",
15423
+ title: "Timeback Config",
15424
+ description: "Configuration schema for timeback.config.json files"
15400
15425
  }).refine((config2) => {
15401
15426
  return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15402
15427
  }, {
@@ -15417,18 +15442,24 @@ var TimebackConfig = exports_external.object({
15417
15442
  message: "Duplicate courseCode found; each must be unique",
15418
15443
  path: ["courses"]
15419
15444
  }).refine((config2) => {
15420
- return config2.courses.every((c) => c.sensor !== undefined || config2.sensor !== undefined);
15421
- }, {
15422
- message: "Each course must have an effective sensor; set a top-level `sensor` or per-course `sensor`",
15423
- path: ["courses"]
15424
- }).refine((config2) => {
15425
- return config2.courses.every((c) => c.launchUrl !== undefined || config2.launchUrl !== undefined);
15445
+ return config2.courses.every((c) => {
15446
+ if (c.sensor !== undefined || config2.sensor !== undefined) {
15447
+ return true;
15448
+ }
15449
+ const launchUrls = [
15450
+ c.launchUrl,
15451
+ config2.launchUrl,
15452
+ c.overrides?.staging?.launchUrl,
15453
+ c.overrides?.production?.launchUrl
15454
+ ].filter(Boolean);
15455
+ return launchUrls.length > 0;
15456
+ });
15426
15457
  }, {
15427
- message: "Each course must have an effective launchUrl; set a top-level `launchUrl` or per-course `launchUrl`",
15458
+ message: "Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",
15428
15459
  path: ["courses"]
15429
15460
  });
15430
15461
  // ../../types/src/zod/edubridge.ts
15431
- var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15462
+ var EdubridgeDateString = IsoDateTimeString;
15432
15463
  var EduBridgeEnrollment = exports_external.object({
15433
15464
  id: exports_external.string(),
15434
15465
  role: exports_external.string(),
@@ -15492,12 +15523,9 @@ var EmailOrStudentId = exports_external.object({
15492
15523
  });
15493
15524
  var SubjectTrackInput = exports_external.object({
15494
15525
  subject: NonEmptyString,
15495
- gradeLevel: NonEmptyString,
15496
- targetCourseId: NonEmptyString,
15497
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15498
- });
15499
- var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15500
- id: NonEmptyString
15526
+ grade: NonEmptyString,
15527
+ courseId: NonEmptyString,
15528
+ orgSourcedId: NonEmptyString.optional()
15501
15529
  });
15502
15530
  var EdubridgeListEnrollmentsParams = exports_external.object({
15503
15531
  userId: NonEmptyString
@@ -16471,7 +16499,8 @@ class BaseResource {
16471
16499
  return this.stream(params).toArray();
16472
16500
  }
16473
16501
  async first(params) {
16474
- const result = await this.list({ ...params, limit: 1 });
16502
+ const limitedParams = { ...params ?? {}, limit: 1 };
16503
+ const result = await new Paginator2(this.transport, this.basePath, limitedParams, this.unwrapKey, this.transform.bind(this)).firstPage();
16475
16504
  return result.data[0];
16476
16505
  }
16477
16506
  stream(params) {
@@ -16554,7 +16583,8 @@ class ReadOnlyResource {
16554
16583
  return this.stream(params).toArray();
16555
16584
  }
16556
16585
  async first(params) {
16557
- const result = await this.list({ ...params, limit: 1 });
16586
+ const limitedParams = { ...params ?? {}, limit: 1 };
16587
+ const result = await new Paginator2(this.transport, this.basePath, limitedParams, this.unwrapKey, this.transform.bind(this)).firstPage();
16558
16588
  return result.data[0];
16559
16589
  }
16560
16590
  stream(params) {