@cavuno/board 4.26.0 → 4.28.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 (53) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/dist/{_spec-EgN7VmAI.d.mts → _spec-DQvmsp5o.d.mts} +589 -67
  3. package/dist/{_spec-EgN7VmAI.d.ts → _spec-DQvmsp5o.d.ts} +589 -67
  4. package/dist/bin.mjs +7989 -10
  5. package/dist/{blog-BIjFcNcm.d.ts → blog-CUkvhn3c.d.ts} +1 -1
  6. package/dist/{blog-T7gQ0ciz.d.mts → blog-CvuObn9O.d.mts} +1 -1
  7. package/dist/{board-CsEAgsKh.d.ts → board-CCG1pO6r.d.ts} +25 -4
  8. package/dist/{board-q0svBKW3.d.mts → board-D6xOidUX.d.mts} +25 -4
  9. package/dist/{breadcrumbs-CFcCjuG7.d.mts → breadcrumbs-BBvJ5gq-.d.mts} +2 -2
  10. package/dist/{breadcrumbs-xuDid8BS.d.ts → breadcrumbs-D2Cwrju4.d.ts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/{chunk-DP2ZZZEO.mjs → chunk-EHSB2VAJ.mjs} +5 -0
  13. package/dist/doctor.js +7989 -10
  14. package/dist/doctor.mjs +7989 -10
  15. package/dist/filters.d.mts +19 -3
  16. package/dist/filters.d.ts +19 -3
  17. package/dist/filters.js +10 -1
  18. package/dist/filters.mjs +10 -1
  19. package/dist/format.d.mts +4 -4
  20. package/dist/format.d.ts +4 -4
  21. package/dist/index.d.mts +251 -14
  22. package/dist/index.d.ts +251 -14
  23. package/dist/index.js +218 -26
  24. package/dist/index.mjs +214 -27
  25. package/dist/{jobs-ub3gywNQ.d.ts → jobs-CEIuahbz.d.ts} +26 -2
  26. package/dist/{jobs-CfrxlDMU.d.mts → jobs-DjMcghv6.d.mts} +26 -2
  27. package/dist/{search-DKS7OIn2.d.mts → search-C0LiPXVb.d.mts} +1 -1
  28. package/dist/{search-Dx1TiAZk.d.ts → search-D-EjtZH3.d.ts} +1 -1
  29. package/dist/{seo-BbG2Ujyo.d.ts → seo-CjNGqZZH.d.ts} +1 -1
  30. package/dist/{seo-CI3wLKUW.d.mts → seo-DCQp8V1c.d.mts} +1 -1
  31. package/dist/seo-files.d.mts +2 -2
  32. package/dist/seo-files.d.ts +2 -2
  33. package/dist/seo.d.mts +6 -6
  34. package/dist/seo.d.ts +6 -6
  35. package/dist/server.d.mts +6 -6
  36. package/dist/server.d.ts +6 -6
  37. package/dist/server.mjs +1 -1
  38. package/dist/sitemap.d.mts +6 -6
  39. package/dist/sitemap.d.ts +6 -6
  40. package/dist/sitemap.mjs +1 -1
  41. package/dist/suggest.d.mts +2 -2
  42. package/dist/suggest.d.ts +2 -2
  43. package/package.json +2 -1
  44. package/skills/cavuno-board-account/SKILL.md +122 -1
  45. package/skills/cavuno-board-collections/SKILL.md +148 -0
  46. package/skills/cavuno-board-companies/SKILL.md +43 -1
  47. package/skills/cavuno-board-errors/SKILL.md +1 -1
  48. package/skills/cavuno-board-filters/SKILL.md +160 -1
  49. package/skills/cavuno-board-format/SKILL.md +52 -0
  50. package/skills/cavuno-board-paywall/SKILL.md +5 -2
  51. package/skills/cavuno-board-post-a-job/SKILL.md +88 -0
  52. package/skills/cavuno-board-salaries/SKILL.md +7 -0
  53. package/skills/manifest.json +11 -4
package/dist/index.mjs CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  isRateLimited,
22
22
  isUnauthorized,
23
23
  isValidationError
24
- } from "./chunk-DP2ZZZEO.mjs";
24
+ } from "./chunk-EHSB2VAJ.mjs";
25
25
 
26
26
  // src/query.ts
27
27
  function toSearchParams(query) {
@@ -42,7 +42,7 @@ function toSearchParams(query) {
42
42
  }
43
43
 
44
44
  // src/version.ts
45
- var SDK_VERSION = "4.26.0";
45
+ var SDK_VERSION = "4.28.0";
46
46
 
47
47
  // src/client.ts
48
48
  function isRawBody(body) {
@@ -762,6 +762,13 @@ function jobPostingNamespace(client) {
762
762
  // src/namespaces/jobs.ts
763
763
  function jobsNamespace(client) {
764
764
  return {
765
+ /** List active entries available to a job collection field. Follow nextCursor for more. */
766
+ collectionChoices(fieldKey, query, options) {
767
+ return client.fetch(
768
+ `/job-fields/${encodeURIComponent(fieldKey)}/choices`,
769
+ { ...options, query }
770
+ );
771
+ },
765
772
  /**
766
773
  * List published jobs.
767
774
  *
@@ -795,7 +802,7 @@ function jobsNamespace(client) {
795
802
  * @example
796
803
  * const { data } = await board.jobs.search({
797
804
  * query: 'chef',
798
- * filters: { seniority: ['senior'] },
805
+ * filters: { seniority: ['senior'], categories: ['engineering'] },
799
806
  * });
800
807
  */
801
808
  search(body, query, options) {
@@ -910,6 +917,37 @@ function jobsNamespace(client) {
910
917
  };
911
918
  }
912
919
 
920
+ // src/namespaces/locations.ts
921
+ function locationsNamespace(client) {
922
+ return {
923
+ /**
924
+ * GET /locations/search — worldwide autocomplete over countries,
925
+ * regions, cities, and localities, not only places the board's jobs already
926
+ * use (that is `taxonomy.places.list({ q })`). Order is the contract: do
927
+ * not re-sort. Complete a pick with `locations.resolve` using the same
928
+ * session before sending its `id` as `locationId` later.
929
+ *
930
+ * @example
931
+ * const session = crypto.randomUUID();
932
+ * const { data } = await board.locations.search({ q: 'berl', session });
933
+ */
934
+ search(query, options) {
935
+ return client.fetch("/locations/search", {
936
+ ...options,
937
+ query
938
+ });
939
+ },
940
+ /** Complete a picked suggestion with the same search session. */
941
+ resolve(input, options) {
942
+ return client.fetch("/locations/resolve", {
943
+ ...options,
944
+ method: "POST",
945
+ body: input
946
+ });
947
+ }
948
+ };
949
+ }
950
+
913
951
  // src/namespaces/me.ts
914
952
  function meNamespace(client) {
915
953
  return {
@@ -1006,6 +1044,13 @@ function meNamespace(client) {
1006
1044
  * experience / education / skills / languages collections + avatar.
1007
1045
  */
1008
1046
  profile: {
1047
+ /** List selectable records for an owner-editable catalog field, including private fields. */
1048
+ listObjectReferenceChoices(fieldKey, query, options) {
1049
+ return client.fetch(
1050
+ "/me/profile/object-references/choices",
1051
+ { ...options, query: { ...query, fieldKey } }
1052
+ );
1053
+ },
1009
1054
  /**
1010
1055
  * Retrieve my lean candidate profile.
1011
1056
  *
@@ -1033,6 +1078,34 @@ function meNamespace(client) {
1033
1078
  query
1034
1079
  });
1035
1080
  },
1081
+ /** Retrieve my profile custom-field definitions and current values. */
1082
+ retrieveCustomFields(options) {
1083
+ return client.fetch("/me/profile/custom-fields", {
1084
+ ...options
1085
+ });
1086
+ },
1087
+ /** Additively update my editable candidate profile custom fields. */
1088
+ updateCustomFields(body, options) {
1089
+ return client.fetch("/me/profile/custom-fields", {
1090
+ ...options,
1091
+ method: "PATCH",
1092
+ body
1093
+ });
1094
+ },
1095
+ /** Retrieve editable catalog references on my candidate profile. */
1096
+ retrieveObjectReferences(options) {
1097
+ return client.fetch(
1098
+ "/me/profile/object-references",
1099
+ options
1100
+ );
1101
+ },
1102
+ /** Replace editable catalog references on my candidate profile. */
1103
+ updateObjectReferences(body, options) {
1104
+ return client.fetch(
1105
+ "/me/profile/object-references",
1106
+ { ...options, method: "PUT", body }
1107
+ );
1108
+ },
1036
1109
  /**
1037
1110
  * Check whether a handle is available for me on this board (my own
1038
1111
  * current handle counts as available). Advisory — `update` re-checks.
@@ -1186,6 +1259,27 @@ function meNamespace(client) {
1186
1259
  * claiming a company — the same identity can also be a candidate.
1187
1260
  */
1188
1261
  companies: {
1262
+ /** List selectable records for an approved company's owner-editable catalog field. */
1263
+ listObjectReferenceChoices(slug, fieldKey, query, options) {
1264
+ return client.fetch(
1265
+ `/me/companies/${encodeURIComponent(slug)}/object-references/choices`,
1266
+ { ...options, query: { ...query, fieldKey } }
1267
+ );
1268
+ },
1269
+ /** Retrieve editable catalog references for one of my companies. */
1270
+ retrieveObjectReferences(slug, options) {
1271
+ return client.fetch(
1272
+ `/me/companies/${encodeURIComponent(slug)}/object-references`,
1273
+ options
1274
+ );
1275
+ },
1276
+ /** Replace editable catalog references for one of my companies. */
1277
+ updateObjectReferences(slug, body, options) {
1278
+ return client.fetch(
1279
+ `/me/companies/${encodeURIComponent(slug)}/object-references`,
1280
+ { ...options, method: "PUT", body }
1281
+ );
1282
+ },
1189
1283
  /**
1190
1284
  * Search companies on this board to claim.
1191
1285
  *
@@ -1276,6 +1370,20 @@ function meNamespace(client) {
1276
1370
  { ...options, method: "PATCH", body }
1277
1371
  );
1278
1372
  },
1373
+ /** Retrieve profile custom fields for a company I belong to. */
1374
+ retrieveCustomFields(slug, options) {
1375
+ return client.fetch(
1376
+ `/me/companies/${encodeURIComponent(slug)}/custom-fields`,
1377
+ options
1378
+ );
1379
+ },
1380
+ /** Additively update editable custom fields for a company I belong to. */
1381
+ updateCustomFields(slug, body, options) {
1382
+ return client.fetch(
1383
+ `/me/companies/${encodeURIComponent(slug)}/custom-fields`,
1384
+ { ...options, method: "PATCH", body }
1385
+ );
1386
+ },
1279
1387
  /**
1280
1388
  * Delete a company I admin (soft-delete cascade + Forager
1281
1389
  * exclusion). Resolves void on success (204).
@@ -1312,7 +1420,9 @@ function meNamespace(client) {
1312
1420
  */
1313
1421
  updateMemberRole(slug, memberId, body, options) {
1314
1422
  return client.fetch(
1315
- `/me/companies/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`,
1423
+ `/me/companies/${encodeURIComponent(
1424
+ slug
1425
+ )}/members/${encodeURIComponent(memberId)}`,
1316
1426
  { ...options, method: "PATCH", body }
1317
1427
  );
1318
1428
  },
@@ -1325,7 +1435,9 @@ function meNamespace(client) {
1325
1435
  */
1326
1436
  removeMember(slug, memberId, options) {
1327
1437
  return client.fetch(
1328
- `/me/companies/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`,
1438
+ `/me/companies/${encodeURIComponent(
1439
+ slug
1440
+ )}/members/${encodeURIComponent(memberId)}`,
1329
1441
  { ...options, method: "DELETE" }
1330
1442
  );
1331
1443
  },
@@ -1377,7 +1489,9 @@ function meNamespace(client) {
1377
1489
  */
1378
1490
  retrieveMembershipCheckout(slug, sessionId, options) {
1379
1491
  return client.fetch(
1380
- `/me/companies/${encodeURIComponent(slug)}/membership/checkout/${encodeURIComponent(sessionId)}`,
1492
+ `/me/companies/${encodeURIComponent(
1493
+ slug
1494
+ )}/membership/checkout/${encodeURIComponent(sessionId)}`,
1381
1495
  options
1382
1496
  );
1383
1497
  },
@@ -1417,7 +1531,9 @@ function meNamespace(client) {
1417
1531
  */
1418
1532
  revokeInvite(slug, inviteId, options) {
1419
1533
  return client.fetch(
1420
- `/me/companies/${encodeURIComponent(slug)}/invites/${encodeURIComponent(inviteId)}`,
1534
+ `/me/companies/${encodeURIComponent(
1535
+ slug
1536
+ )}/invites/${encodeURIComponent(inviteId)}`,
1421
1537
  { ...options, method: "DELETE" }
1422
1538
  );
1423
1539
  },
@@ -1499,18 +1615,27 @@ function meNamespace(client) {
1499
1615
  */
1500
1616
  retrieve(slug, id, options) {
1501
1617
  return client.fetch(
1502
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1618
+ `/me/companies/${encodeURIComponent(
1619
+ slug
1620
+ )}/jobs/${encodeURIComponent(id)}`,
1503
1621
  options
1504
1622
  );
1505
1623
  },
1506
1624
  /**
1507
1625
  * Create a job as a held draft. Returns the created job.
1626
+ * `remoteOption` is required. A `salaryMin` or `salaryMax` needs both
1627
+ * `salaryCurrency` and `salaryTimeframe`.
1508
1628
  *
1509
1629
  * @example
1510
1630
  * await board.me.companies.jobs.create('acme', {
1511
1631
  * title: 'Staff Engineer',
1512
1632
  * description: '…',
1513
1633
  * applicationUrl: 'https://acme.com/apply',
1634
+ * remoteOption: 'remote',
1635
+ * remotePermits: [{ type: 'worldwide', value: 'worldwide' }],
1636
+ * salaryMin: 150000,
1637
+ * salaryCurrency: 'USD',
1638
+ * salaryTimeframe: 'per_year',
1514
1639
  * });
1515
1640
  */
1516
1641
  create(slug, body, options) {
@@ -1530,7 +1655,9 @@ function meNamespace(client) {
1530
1655
  */
1531
1656
  update(slug, id, body, options) {
1532
1657
  return client.fetch(
1533
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1658
+ `/me/companies/${encodeURIComponent(
1659
+ slug
1660
+ )}/jobs/${encodeURIComponent(id)}`,
1534
1661
  { ...options, method: "PATCH", body }
1535
1662
  );
1536
1663
  },
@@ -1542,7 +1669,9 @@ function meNamespace(client) {
1542
1669
  */
1543
1670
  delete(slug, id, options) {
1544
1671
  return client.fetch(
1545
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1672
+ `/me/companies/${encodeURIComponent(
1673
+ slug
1674
+ )}/jobs/${encodeURIComponent(id)}`,
1546
1675
  { ...options, method: "DELETE" }
1547
1676
  );
1548
1677
  },
@@ -1556,7 +1685,9 @@ function meNamespace(client) {
1556
1685
  */
1557
1686
  publish(slug, id, options) {
1558
1687
  return client.fetch(
1559
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/publish`,
1688
+ `/me/companies/${encodeURIComponent(
1689
+ slug
1690
+ )}/jobs/${encodeURIComponent(id)}/publish`,
1560
1691
  { ...options, method: "POST" }
1561
1692
  );
1562
1693
  },
@@ -1569,26 +1700,34 @@ function meNamespace(client) {
1569
1700
  */
1570
1701
  unpublish(slug, id, options) {
1571
1702
  return client.fetch(
1572
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/unpublish`,
1703
+ `/me/companies/${encodeURIComponent(
1704
+ slug
1705
+ )}/jobs/${encodeURIComponent(id)}/unpublish`,
1573
1706
  { ...options, method: "POST" }
1574
1707
  );
1575
1708
  },
1576
1709
  /**
1577
1710
  * Pay for / publish a held draft. Select billing: a paid plan
1578
1711
  * returns `{ status: 'checkout', checkoutUrl }` (send the buyer there;
1579
- * the webhook publishes on payment); a free / bundle / subscription plan
1580
- * publishes immediately (`status: 'published'`); an invoice plan emails a
1581
- * Stripe invoice (`status: 'invoice_sent'`).
1712
+ * the webhook publishes on payment); a free plan publishes immediately
1713
+ * (`status: 'published'`) unless the board requires free-job approval
1714
+ * (`status: 'pending_approval'`); bundle, subscription, and member-credit
1715
+ * posts always publish immediately; an invoice plan emails a Stripe
1716
+ * invoice (`status: 'invoice_sent'`) or holds an on-issue post for
1717
+ * approval.
1582
1718
  *
1583
1719
  * @example
1584
1720
  * const r = await board.me.companies.jobs.checkout('acme', jobId, {
1585
1721
  * billing: { type: 'new', planId },
1586
1722
  * });
1587
1723
  * if (r.status === 'checkout') location.href = r.checkoutUrl!;
1724
+ * if (r.status === 'pending_approval') showAwaitingReview(r.jobId);
1588
1725
  */
1589
1726
  checkout(slug, id, body, options) {
1590
1727
  return client.fetch(
1591
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/checkout`,
1728
+ `/me/companies/${encodeURIComponent(
1729
+ slug
1730
+ )}/jobs/${encodeURIComponent(id)}/checkout`,
1592
1731
  { ...options, method: "POST", body }
1593
1732
  );
1594
1733
  }
@@ -1710,7 +1849,9 @@ function meNamespace(client) {
1710
1849
  */
1711
1850
  timeseries(slug, query, options) {
1712
1851
  return client.fetch(
1713
- `/me/companies/${encodeURIComponent(slug)}/profile-stats/timeseries`,
1852
+ `/me/companies/${encodeURIComponent(
1853
+ slug
1854
+ )}/profile-stats/timeseries`,
1714
1855
  { ...options, query }
1715
1856
  );
1716
1857
  }
@@ -1786,14 +1927,18 @@ function meNamespace(client) {
1786
1927
  */
1787
1928
  update(slug, listId, body, options) {
1788
1929
  return client.fetch(
1789
- `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1930
+ `/me/companies/${encodeURIComponent(
1931
+ slug
1932
+ )}/talent-lists/${encodeURIComponent(listId)}`,
1790
1933
  { ...options, method: "PATCH", body }
1791
1934
  );
1792
1935
  },
1793
1936
  /** Delete a talent list. Sourced membership is unaffected. */
1794
1937
  remove(slug, listId, options) {
1795
1938
  return client.fetch(
1796
- `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1939
+ `/me/companies/${encodeURIComponent(
1940
+ slug
1941
+ )}/talent-lists/${encodeURIComponent(listId)}`,
1797
1942
  { ...options, method: "DELETE" }
1798
1943
  );
1799
1944
  }
@@ -1841,7 +1986,9 @@ function meNamespace(client) {
1841
1986
  /** Remove a sourced membership. Does not touch pipeline applications. */
1842
1987
  remove(slug, sourcedId, options) {
1843
1988
  return client.fetch(
1844
- `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
1989
+ `/me/companies/${encodeURIComponent(
1990
+ slug
1991
+ )}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
1845
1992
  { ...options, method: "DELETE" }
1846
1993
  );
1847
1994
  },
@@ -1861,7 +2008,9 @@ function meNamespace(client) {
1861
2008
  */
1862
2009
  convert(slug, sourcedId, body, options) {
1863
2010
  return client.fetch(
1864
- `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
2011
+ `/me/companies/${encodeURIComponent(
2012
+ slug
2013
+ )}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
1865
2014
  { ...options, method: "POST", body }
1866
2015
  );
1867
2016
  }
@@ -1901,7 +2050,9 @@ function meNamespace(client) {
1901
2050
  */
1902
2051
  move(slug, applicationId, body, options) {
1903
2052
  return client.fetch(
1904
- `/me/companies/${encodeURIComponent(slug)}/applicants/${encodeURIComponent(applicationId)}/stage`,
2053
+ `/me/companies/${encodeURIComponent(
2054
+ slug
2055
+ )}/applicants/${encodeURIComponent(applicationId)}/stage`,
1905
2056
  { ...options, method: "PATCH", body }
1906
2057
  );
1907
2058
  },
@@ -1946,7 +2097,9 @@ function meNamespace(client) {
1946
2097
  */
1947
2098
  addNote(slug, applicationId, body, options) {
1948
2099
  return client.fetch(
1949
- `/me/companies/${encodeURIComponent(slug)}/applicants/${encodeURIComponent(applicationId)}/notes`,
2100
+ `/me/companies/${encodeURIComponent(
2101
+ slug
2102
+ )}/applicants/${encodeURIComponent(applicationId)}/notes`,
1950
2103
  { ...options, method: "POST", body }
1951
2104
  );
1952
2105
  }
@@ -1983,7 +2136,9 @@ function meNamespace(client) {
1983
2136
  */
1984
2137
  update(slug, stageId, body, options) {
1985
2138
  return client.fetch(
1986
- `/me/companies/${encodeURIComponent(slug)}/pipeline-stages/${encodeURIComponent(stageId)}`,
2139
+ `/me/companies/${encodeURIComponent(
2140
+ slug
2141
+ )}/pipeline-stages/${encodeURIComponent(stageId)}`,
1987
2142
  { ...options, method: "PATCH", body }
1988
2143
  );
1989
2144
  },
@@ -1996,7 +2151,9 @@ function meNamespace(client) {
1996
2151
  */
1997
2152
  remove(slug, stageId, options) {
1998
2153
  return client.fetch(
1999
- `/me/companies/${encodeURIComponent(slug)}/pipeline-stages/${encodeURIComponent(stageId)}`,
2154
+ `/me/companies/${encodeURIComponent(
2155
+ slug
2156
+ )}/pipeline-stages/${encodeURIComponent(stageId)}`,
2000
2157
  { ...options, method: "DELETE" }
2001
2158
  );
2002
2159
  },
@@ -2666,8 +2823,11 @@ function meNamespace(client) {
2666
2823
  * profile.
2667
2824
  *
2668
2825
  * @example
2826
+ * const { data: offers } = await board.paywall.offers();
2827
+ * const selectedOffer = offers[0]; // Or the offer selected in your UI.
2828
+ * if (!selectedOffer) throw new Error('No access offers available');
2669
2829
  * const kit = await board.me.access.checkout({
2670
- * offerKey: 'monthly',
2830
+ * offerKey: selectedOffer.offerKey,
2671
2831
  * returnPath: '/account/access',
2672
2832
  * colorMode: 'light',
2673
2833
  * });
@@ -2809,6 +2969,26 @@ function plansNamespace(client) {
2809
2969
  };
2810
2970
  }
2811
2971
 
2972
+ // src/namespaces/profile-fields.ts
2973
+ function profileFieldsNamespace(client) {
2974
+ return {
2975
+ /** Discover public scalar and catalog field definitions for a profile type. */
2976
+ retrieve(entity, options) {
2977
+ return client.fetch(
2978
+ `/profile-fields/${encodeURIComponent(entity)}`,
2979
+ options
2980
+ );
2981
+ },
2982
+ /** Discover active choices for a public catalog field; follow nextCursor for more. */
2983
+ choices(entity, fieldKey, query, options) {
2984
+ return client.fetch(
2985
+ `/profile-fields/${encodeURIComponent(entity)}/${encodeURIComponent(fieldKey)}/choices`,
2986
+ { ...options, query }
2987
+ );
2988
+ }
2989
+ };
2990
+ }
2991
+
2812
2992
  // src/namespaces/redirects.ts
2813
2993
  function redirectsNamespace(client) {
2814
2994
  return {
@@ -2986,9 +3166,14 @@ function talentNamespace(client) {
2986
3166
  * const { data } = await board.talent.list({ skill: 'react', limit: 20 });
2987
3167
  */
2988
3168
  list(query, options) {
3169
+ const serializedQuery = query ? {
3170
+ ...query,
3171
+ customFields: query.customFields ? JSON.stringify(query.customFields) : void 0,
3172
+ objectReferences: query.objectReferences ? JSON.stringify(query.objectReferences) : void 0
3173
+ } : void 0;
2989
3174
  return client.fetch("/talent", {
2990
3175
  ...options,
2991
- query
3176
+ query: serializedQuery
2992
3177
  });
2993
3178
  },
2994
3179
  /**
@@ -3168,11 +3353,13 @@ function createBoardClient(options) {
3168
3353
  password: passwordNamespace(client),
3169
3354
  taxonomy: taxonomyNamespace(client),
3170
3355
  search: searchNamespace(client),
3356
+ locations: locationsNamespace(client),
3171
3357
  redirects: redirectsNamespace(client),
3172
3358
  jobAlerts: jobAlertsNamespace(client),
3173
3359
  jobPosting: jobPostingNamespace(client),
3174
3360
  salaries: salariesNamespace(client),
3175
3361
  talent: talentNamespace(client),
3362
+ profileFields: profileFieldsNamespace(client),
3176
3363
  plans: plansNamespace(client),
3177
3364
  paywall: paywallNamespace(client),
3178
3365
  sitemap: sitemapNamespace(client)
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.js';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -32,6 +32,14 @@ type SearchEnvelope<T> = OffsetPagination & {
32
32
  data: T[];
33
33
  };
34
34
 
35
+ type JobCollectionChoiceList = Schemas['JobCollectionChoiceList'];
36
+ type JobCollectionFieldDefinition = Schemas['JobCollectionFieldDefinition'];
37
+ type ResolvedJobCollectionField = Schemas['ResolvedJobCollectionField'];
38
+ type JobCollectionChoiceQuery = {
39
+ search?: string;
40
+ cursor?: string;
41
+ limit?: number;
42
+ };
35
43
  type PublicJob = Schemas['PublicJob'];
36
44
  type PublicJobCard = Schemas['PublicJobCard'];
37
45
  /**
@@ -102,6 +110,22 @@ type JobsSimilarQuery = {
102
110
  /** How many similar jobs to return (1–20; default 5). */
103
111
  limit?: number;
104
112
  };
113
+ type CustomFilterValue = string | number | boolean;
114
+ type CustomFieldFilter = {
115
+ key: string;
116
+ values: CustomFilterValue[];
117
+ };
118
+ type ObjectReferenceFilter = {
119
+ key: string;
120
+ recordIds: string[];
121
+ };
122
+ /**
123
+ * The `jobs.search` body, aliased from the spec like the response types.
124
+ * `filters.customFields` matches the job's own custom fields and
125
+ * `filters.companyCustomFields` the public profile fields of the job's
126
+ * company; both take {@link CustomFieldFilter} clauses (the tests pin that
127
+ * the spec shape and `CustomFieldFilter` stay identical).
128
+ */
105
129
  type JobsSearchBody = Schemas['PublicSearchJobsBody'];
106
130
 
107
- export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, OfficeLocation as O, PublicJob as P, RemoteOption as R, Seniority as S, JobsListQuery as a, JobCardListEnvelope as b, JobsSearchBody as c, JobCardSearchEnvelope as d, JobsSimilarQuery as e, SearchEnvelope as f, CustomFieldValue as g, EducationRequirement as h, JobCatalogPagination as i, JobCompany as j, OffsetPagination as k, PublicJobCard as l, RelatedSearch as m, RemotePermit as n, RemoteTimezone as o, StorefrontPagination as p };
131
+ export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.mjs';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -32,6 +32,14 @@ type SearchEnvelope<T> = OffsetPagination & {
32
32
  data: T[];
33
33
  };
34
34
 
35
+ type JobCollectionChoiceList = Schemas['JobCollectionChoiceList'];
36
+ type JobCollectionFieldDefinition = Schemas['JobCollectionFieldDefinition'];
37
+ type ResolvedJobCollectionField = Schemas['ResolvedJobCollectionField'];
38
+ type JobCollectionChoiceQuery = {
39
+ search?: string;
40
+ cursor?: string;
41
+ limit?: number;
42
+ };
35
43
  type PublicJob = Schemas['PublicJob'];
36
44
  type PublicJobCard = Schemas['PublicJobCard'];
37
45
  /**
@@ -102,6 +110,22 @@ type JobsSimilarQuery = {
102
110
  /** How many similar jobs to return (1–20; default 5). */
103
111
  limit?: number;
104
112
  };
113
+ type CustomFilterValue = string | number | boolean;
114
+ type CustomFieldFilter = {
115
+ key: string;
116
+ values: CustomFilterValue[];
117
+ };
118
+ type ObjectReferenceFilter = {
119
+ key: string;
120
+ recordIds: string[];
121
+ };
122
+ /**
123
+ * The `jobs.search` body, aliased from the spec like the response types.
124
+ * `filters.customFields` matches the job's own custom fields and
125
+ * `filters.companyCustomFields` the public profile fields of the job's
126
+ * company; both take {@link CustomFieldFilter} clauses (the tests pin that
127
+ * the spec shape and `CustomFieldFilter` stay identical).
128
+ */
105
129
  type JobsSearchBody = Schemas['PublicSearchJobsBody'];
106
130
 
107
- export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, OfficeLocation as O, PublicJob as P, RemoteOption as R, Seniority as S, JobsListQuery as a, JobCardListEnvelope as b, JobsSearchBody as c, JobCardSearchEnvelope as d, JobsSimilarQuery as e, SearchEnvelope as f, CustomFieldValue as g, EducationRequirement as h, JobCatalogPagination as i, JobCompany as j, OffsetPagination as k, PublicJobCard as l, RelatedSearch as m, RemotePermit as n, RemoteTimezone as o, StorefrontPagination as p };
131
+ export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.mjs';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.js';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.js';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.js';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-EgN7VmAI.mjs';
1
+ import { S as Schemas } from './_spec-DQvmsp5o.mjs';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-CI3wLKUW.mjs';
2
- import './_spec-EgN7VmAI.mjs';
1
+ import { B as BoardSeo } from './seo-DCQp8V1c.mjs';
2
+ import './_spec-DQvmsp5o.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-BbG2Ujyo.js';
2
- import './_spec-EgN7VmAI.js';
1
+ import { B as BoardSeo } from './seo-CjNGqZZH.js';
2
+ import './_spec-DQvmsp5o.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-T7gQ0ciz.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-CFcCjuG7.mjs';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-CFcCjuG7.mjs';
4
- import './_spec-EgN7VmAI.mjs';
5
- import './board-q0svBKW3.mjs';
6
- import './jobs-CfrxlDMU.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CvuObn9O.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-BBvJ5gq-.mjs';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-BBvJ5gq-.mjs';
4
+ import './_spec-DQvmsp5o.mjs';
5
+ import './board-D6xOidUX.mjs';
6
+ import './jobs-DjMcghv6.mjs';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/seo.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BIjFcNcm.js';
2
- import { e as JsonLdObject } from './breadcrumbs-xuDid8BS.js';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-xuDid8BS.js';
4
- import './_spec-EgN7VmAI.js';
5
- import './board-CsEAgsKh.js';
6
- import './jobs-ub3gywNQ.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CUkvhn3c.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-D2Cwrju4.js';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-D2Cwrju4.js';
4
+ import './_spec-DQvmsp5o.js';
5
+ import './board-CCG1pO6r.js';
6
+ import './jobs-CEIuahbz.js';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from