@cavuno/board 1.34.0 → 1.35.1

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 (42) hide show
  1. package/README.md +7 -8
  2. package/dist/bin.mjs +25 -10
  3. package/dist/{board-Id19Yg8-.d.ts → board-Z7hjKDp8.d.ts} +1 -1
  4. package/dist/{board-DgDC0T4g.d.mts → board-t_WltBBa.d.mts} +1 -1
  5. package/dist/filters.d.mts +2 -2
  6. package/dist/filters.d.ts +2 -2
  7. package/dist/filters.js +3 -6
  8. package/dist/filters.mjs +3 -6
  9. package/dist/format.d.mts +4 -4
  10. package/dist/format.d.ts +4 -4
  11. package/dist/format.js +3 -6
  12. package/dist/format.mjs +3 -6
  13. package/dist/index.d.mts +52 -43
  14. package/dist/index.d.ts +52 -43
  15. package/dist/index.js +27 -19
  16. package/dist/index.mjs +27 -19
  17. package/dist/{jobs-IIJtDgzX.d.mts → jobs-Dq2a9oPj.d.mts} +742 -61
  18. package/dist/{jobs-IIJtDgzX.d.ts → jobs-Dq2a9oPj.d.ts} +742 -61
  19. package/dist/{salaries-CL_00fNX.d.ts → salaries-CTin-18R.d.ts} +4 -4
  20. package/dist/{salaries-BfEEEOHj.d.mts → salaries-CWg82dOz.d.mts} +4 -4
  21. package/dist/seo.d.mts +4 -4
  22. package/dist/seo.d.ts +4 -4
  23. package/dist/seo.js +3 -6
  24. package/dist/seo.mjs +3 -6
  25. package/dist/server.d.mts +3 -3
  26. package/dist/server.d.ts +3 -3
  27. package/dist/sitemap.d.mts +3 -3
  28. package/dist/sitemap.d.ts +3 -3
  29. package/dist/{ui-copy-rlfoH9P3.d.mts → ui-copy-CKfFTtLk.d.mts} +0 -1
  30. package/dist/{ui-copy-rlfoH9P3.d.ts → ui-copy-CKfFTtLk.d.ts} +0 -1
  31. package/package.json +1 -1
  32. package/skills/cavuno-board-auth/SKILL.md +0 -1
  33. package/skills/cavuno-board-client/SKILL.md +1 -4
  34. package/skills/cavuno-board-filters/SKILL.md +43 -3
  35. package/skills/cavuno-board-job-alerts/SKILL.md +7 -7
  36. package/skills/cavuno-board-job-posting/SKILL.md +8 -22
  37. package/skills/cavuno-board-jobs/SKILL.md +2 -2
  38. package/skills/cavuno-board-setup/SKILL.md +6 -8
  39. package/skills/cavuno-board-smoke-test/SKILL.md +8 -7
  40. package/skills/cavuno-board-theme/SKILL.md +33 -45
  41. package/skills/flavors/tanstack-start/SKILL.md +0 -1
  42. package/skills/manifest.json +5 -5
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @cavuno/board
2
2
 
3
3
  Typed, isomorphic client for the [Cavuno](https://cavuno.com) Board API —
4
- the headless toolkit for building fully-custom job-board frontends. Zero
4
+ the headless toolkit for building fully custom job board frontends. Zero
5
5
  dependencies; runs in the browser, Node ≥ 20, and Cloudflare Workers.
6
6
 
7
7
  You bring the framework and own the layout; the SDK brings the job board:
@@ -12,14 +12,14 @@ contract.
12
12
 
13
13
  ## Building with a coding agent
14
14
 
15
- The package ships an agent skill corpus that teaches Claude Code (or any
16
- SKILL.md-compatible agent) how to wire a board correctly — client setup,
15
+ The package ships an Agent Skills corpus for Codex, Claude Code, Cursor, and
16
+ other compatible coding agents. It teaches them how to wire a board correctly — client setup,
17
17
  auth and session ownership, pagination, gating, error handling, and a
18
18
  runtime smoke test:
19
19
 
20
20
  ```bash
21
- npm install @cavuno/board
22
- npx cavuno-board setup # copies version-matched skills into .claude/skills and/or .agents/skills
21
+ npm install @cavuno/board # or: pnpm add / yarn add / bun add
22
+ npx @cavuno/board setup # copies version-matched Agent Skills
23
23
  ```
24
24
 
25
25
  Then ask your agent: *"set up my Cavuno board"* — it reads the
@@ -33,8 +33,7 @@ never works from stale docs.
33
33
  import { createBoardClient } from '@cavuno/board';
34
34
 
35
35
  const board = createBoardClient({
36
- baseUrl: process.env.PUBLIC_CAVUNO_API_URL!, // https://api.cavuno.com
37
- board: process.env.PUBLIC_CAVUNO_BOARD!, // pk_… publishable key
36
+ board: process.env.PUBLIC_CAVUNO_BOARD!, // pk_… publishable key
38
37
  });
39
38
 
40
39
  const { name, theme, features } = await board.context();
@@ -80,7 +79,7 @@ SDK doesn't cover yet.
80
79
 
81
80
  ## Docs
82
81
 
83
- - API reference & guides: https://cavuno.com/docs/api
82
+ - SDK guides and reference: https://cavuno.com/docs/sdk
84
83
  - The OpenAPI document: `GET https://api.cavuno.com/v1/openapi.json`
85
84
  - Reference starter (TanStack Start on Cloudflare Workers):
86
85
  https://github.com/wollemiahq/cavuno-board-starter
package/dist/bin.mjs CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ // src/constants.ts
4
+ var DEFAULT_CAVUNO_API_URL = "https://api.cavuno.com";
5
+
3
6
  // src/skills.ts
4
7
  import { readFileSync } from "fs";
5
8
  import { dirname, resolve } from "path";
@@ -538,7 +541,11 @@ async function checkBoardResolves(fetchImpl, env) {
538
541
  context: parsed
539
542
  };
540
543
  }
541
- var SKILL_ROOTS = [".claude/skills", ".agents/skills"];
544
+ var SKILL_ROOTS = [
545
+ ".claude/skills",
546
+ ".agents/skills",
547
+ ".cursor/skills"
548
+ ];
542
549
  function checkSkillsFreshness(projectRoot) {
543
550
  const roots = SKILL_ROOTS.map((root) => join2(projectRoot, root)).filter(
544
551
  (root) => existsSync2(root)
@@ -546,7 +553,7 @@ function checkSkillsFreshness(projectRoot) {
546
553
  if (roots.length === 0) {
547
554
  return STATIC_SKILLS(
548
555
  "skip",
549
- "no .claude/skills or .agents/skills directory \u2014 run `npx @cavuno/board setup` to install agent skills"
556
+ "no .claude/skills, .agents/skills, or .cursor/skills directory \u2014 run `npx @cavuno/board setup` to install agent skills"
550
557
  );
551
558
  }
552
559
  const corpus = loadSkillCorpus();
@@ -579,12 +586,16 @@ function checkSkillsFreshness(projectRoot) {
579
586
  }
580
587
  async function runDoctor(options) {
581
588
  const fetchImpl = options.fetchImpl ?? fetch;
589
+ const env = {
590
+ ...options.env,
591
+ apiUrl: options.env.apiUrl ?? DEFAULT_CAVUNO_API_URL
592
+ };
582
593
  const results = [];
583
- const envResults = checkEnv(options.env);
594
+ const envResults = checkEnv(env);
584
595
  results.push(...envResults);
585
596
  const envOk = envResults.every((r) => r.status === "pass");
586
- if (options.env.apiUrl) {
587
- const api = await checkApiReachable(fetchImpl, options.env.apiUrl);
597
+ if (env.apiUrl) {
598
+ const api = await checkApiReachable(fetchImpl, env.apiUrl);
588
599
  results.push(
589
600
  api ?? STATIC_API("skip", "API URL malformed \u2014 fix env.api-url first")
590
601
  );
@@ -593,7 +604,7 @@ async function runDoctor(options) {
593
604
  }
594
605
  let boardContext = null;
595
606
  if (envOk) {
596
- const resolved = await checkBoardResolves(fetchImpl, options.env);
607
+ const resolved = await checkBoardResolves(fetchImpl, env);
597
608
  boardContext = resolved.context;
598
609
  results.push(resolved.result);
599
610
  } else {
@@ -617,7 +628,7 @@ async function runDoctor(options) {
617
628
  } else {
618
629
  results.push(
619
630
  ...await runWriteProbes({
620
- env: options.env,
631
+ env,
621
632
  fetchImpl,
622
633
  resendApiKey: options.resendApiKey,
623
634
  nonce: options.writeProbeNonce,
@@ -646,8 +657,10 @@ function runSetup(cwd = process.cwd()) {
646
657
  (skill) => skill.category === "core" || skill.framework === framework
647
658
  );
648
659
  const roots = [
660
+ resolve2(cwd, ".agents", "skills"),
649
661
  resolve2(cwd, ".claude", "skills"),
650
- resolve2(cwd, ".agents", "skills")
662
+ resolve2(cwd, ".codex", "skills"),
663
+ resolve2(cwd, ".cursor", "skills")
651
664
  ];
652
665
  const existing = roots.filter((root) => existsSync3(root));
653
666
  const targetDirs = existing.length > 0 ? existing : [roots[0]];
@@ -725,11 +738,13 @@ function main() {
725
738
  );
726
739
  for (const name of result.copied) console.log(` - ${name}`);
727
740
  console.log("\nNext steps:");
728
- console.log(" 1. Set your environment variables:");
729
- console.log(" PUBLIC_CAVUNO_API_URL=https://api.cavuno.com");
741
+ console.log(" 1. Set your board publishable key:");
730
742
  console.log(
731
743
  " PUBLIC_CAVUNO_BOARD=pk_... # your board publishable key"
732
744
  );
745
+ console.log(
746
+ " # Optional API override: PUBLIC_CAVUNO_API_URL=https://api.cavuno.com"
747
+ );
733
748
  console.log(' 2. Ask your coding agent: "set up my Cavuno board".');
734
749
  console.log(" It reads the cavuno-board-setup skill first.");
735
750
  console.log(
@@ -1,4 +1,4 @@
1
- import { b as Schemas } from './jobs-IIJtDgzX.js';
1
+ import { b as Schemas } from './jobs-Dq2a9oPj.js';
2
2
 
3
3
  type PublicBoard = Schemas['PublicBoardContext'];
4
4
  type PublicBoardFeatures = PublicBoard['features'];
@@ -1,4 +1,4 @@
1
- import { b as Schemas } from './jobs-IIJtDgzX.mjs';
1
+ import { b as Schemas } from './jobs-Dq2a9oPj.mjs';
2
2
 
3
3
  type PublicBoard = Schemas['PublicBoardContext'];
4
4
  type PublicBoardFeatures = PublicBoard['features'];
@@ -1,5 +1,5 @@
1
- import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.mjs';
2
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-IIJtDgzX.mjs';
1
+ import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.mjs';
2
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-Dq2a9oPj.mjs';
3
3
 
4
4
  declare const REMOTE_OPTIONS: readonly RemoteOption[];
5
5
  /**
package/dist/filters.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.js';
2
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-IIJtDgzX.js';
1
+ import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.js';
2
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-Dq2a9oPj.js';
3
3
 
4
4
  declare const REMOTE_OPTIONS: readonly RemoteOption[];
5
5
  /**
package/dist/filters.js CHANGED
@@ -271,8 +271,7 @@ var EN2 = {
271
271
  jobAlertEmailPlaceholder: "you@example.com",
272
272
  jobAlertButtonText: "Get alerts",
273
273
  subscribingLabel: "Subscribing\u2026",
274
- jobAlertSuccessToast: "Check your email to confirm your subscription.",
275
- jobAlertDuplicateToast: "You're already subscribed to this alert.",
274
+ jobAlertSuccessToast: "If this email isn't already subscribed, we've sent a confirmation link \u2014 check your inbox.",
276
275
  jobAlertErrorToast: "Something went wrong. Please try again.",
277
276
  sectionAriaLabel: "Job alerts",
278
277
  emailAriaLabel: "email",
@@ -421,8 +420,7 @@ var DE2 = {
421
420
  jobAlertEmailPlaceholder: "name@beispiel.de",
422
421
  jobAlertButtonText: "Abonnieren",
423
422
  subscribingLabel: "Wird abonniert \u2026",
424
- jobAlertSuccessToast: "\xDCberpr\xFCfe deine E-Mails, um dein Abonnement zu best\xE4tigen.",
425
- jobAlertDuplicateToast: "Du hast diese Benachrichtigung bereits abonniert.",
423
+ jobAlertSuccessToast: "Falls diese E-Mail noch nicht abonniert ist, haben wir einen Best\xE4tigungslink gesendet \u2014 pr\xFCfe deinen Posteingang.",
426
424
  jobAlertErrorToast: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
427
425
  sectionAriaLabel: "Job-Benachrichtigungen",
428
426
  emailAriaLabel: "E-Mail",
@@ -571,8 +569,7 @@ var FR = {
571
569
  jobAlertEmailPlaceholder: "vous@exemple.fr",
572
570
  jobAlertButtonText: "Activer les alertes",
573
571
  subscribingLabel: "Abonnement en cours\u2026",
574
- jobAlertSuccessToast: "V\xE9rifiez votre e-mail pour confirmer votre abonnement.",
575
- jobAlertDuplicateToast: "Vous \xEAtes d\xE9j\xE0 abonn\xE9 \xE0 cette alerte.",
572
+ jobAlertSuccessToast: "Si cet e-mail n'est pas d\xE9j\xE0 abonn\xE9, nous avons envoy\xE9 un lien de confirmation \u2014 v\xE9rifiez votre bo\xEEte de r\xE9ception.",
576
573
  jobAlertErrorToast: "Une erreur est survenue. Veuillez r\xE9essayer.",
577
574
  sectionAriaLabel: "Alertes emploi",
578
575
  emailAriaLabel: "e-mail",
package/dist/filters.mjs CHANGED
@@ -237,8 +237,7 @@ var EN2 = {
237
237
  jobAlertEmailPlaceholder: "you@example.com",
238
238
  jobAlertButtonText: "Get alerts",
239
239
  subscribingLabel: "Subscribing\u2026",
240
- jobAlertSuccessToast: "Check your email to confirm your subscription.",
241
- jobAlertDuplicateToast: "You're already subscribed to this alert.",
240
+ jobAlertSuccessToast: "If this email isn't already subscribed, we've sent a confirmation link \u2014 check your inbox.",
242
241
  jobAlertErrorToast: "Something went wrong. Please try again.",
243
242
  sectionAriaLabel: "Job alerts",
244
243
  emailAriaLabel: "email",
@@ -387,8 +386,7 @@ var DE2 = {
387
386
  jobAlertEmailPlaceholder: "name@beispiel.de",
388
387
  jobAlertButtonText: "Abonnieren",
389
388
  subscribingLabel: "Wird abonniert \u2026",
390
- jobAlertSuccessToast: "\xDCberpr\xFCfe deine E-Mails, um dein Abonnement zu best\xE4tigen.",
391
- jobAlertDuplicateToast: "Du hast diese Benachrichtigung bereits abonniert.",
389
+ jobAlertSuccessToast: "Falls diese E-Mail noch nicht abonniert ist, haben wir einen Best\xE4tigungslink gesendet \u2014 pr\xFCfe deinen Posteingang.",
392
390
  jobAlertErrorToast: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
393
391
  sectionAriaLabel: "Job-Benachrichtigungen",
394
392
  emailAriaLabel: "E-Mail",
@@ -537,8 +535,7 @@ var FR = {
537
535
  jobAlertEmailPlaceholder: "vous@exemple.fr",
538
536
  jobAlertButtonText: "Activer les alertes",
539
537
  subscribingLabel: "Abonnement en cours\u2026",
540
- jobAlertSuccessToast: "V\xE9rifiez votre e-mail pour confirmer votre abonnement.",
541
- jobAlertDuplicateToast: "Vous \xEAtes d\xE9j\xE0 abonn\xE9 \xE0 cette alerte.",
538
+ jobAlertSuccessToast: "Si cet e-mail n'est pas d\xE9j\xE0 abonn\xE9, nous avons envoy\xE9 un lien de confirmation \u2014 v\xE9rifiez votre bo\xEEte de r\xE9ception.",
542
539
  jobAlertErrorToast: "Une erreur est survenue. Veuillez r\xE9essayer.",
543
540
  sectionAriaLabel: "Alertes emploi",
544
541
  emailAriaLabel: "e-mail",
package/dist/format.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-IIJtDgzX.mjs';
2
- import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.mjs';
3
- export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-rlfoH9P3.mjs';
4
- import { C as CustomFieldDefinition } from './board-DgDC0T4g.mjs';
1
+ import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-Dq2a9oPj.mjs';
2
+ import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.mjs';
3
+ export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CKfFTtLk.mjs';
4
+ import { C as CustomFieldDefinition } from './board-t_WltBBa.mjs';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/format.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-IIJtDgzX.js';
2
- import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.js';
3
- export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-rlfoH9P3.js';
4
- import { C as CustomFieldDefinition } from './board-Id19Yg8-.js';
1
+ import { P as PublicJob, a as PublicJobCard, C as CustomFieldValues } from './jobs-Dq2a9oPj.js';
2
+ import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.js';
3
+ export { A as AlertsCopy, a as ApplyCopy, b as BlogCopy, c as BreadcrumbsCopy, C as CopyLinkCopy, E as EntityCopy, F as FooterCopy, J as JobCardCopy, d as JobDetailCopy, e as JobSearchCopy, N as NavCopy, P as PUBLIC_LABEL_GROUPS, f as PaginationCopy, S as SalaryCopy, U as UiCopy, u as uiCopy } from './ui-copy-CKfFTtLk.js';
4
+ import { C as CustomFieldDefinition } from './board-Z7hjKDp8.js';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/format.js CHANGED
@@ -652,8 +652,7 @@ var EN2 = {
652
652
  jobAlertEmailPlaceholder: "you@example.com",
653
653
  jobAlertButtonText: "Get alerts",
654
654
  subscribingLabel: "Subscribing\u2026",
655
- jobAlertSuccessToast: "Check your email to confirm your subscription.",
656
- jobAlertDuplicateToast: "You're already subscribed to this alert.",
655
+ jobAlertSuccessToast: "If this email isn't already subscribed, we've sent a confirmation link \u2014 check your inbox.",
657
656
  jobAlertErrorToast: "Something went wrong. Please try again.",
658
657
  sectionAriaLabel: "Job alerts",
659
658
  emailAriaLabel: "email",
@@ -802,8 +801,7 @@ var DE2 = {
802
801
  jobAlertEmailPlaceholder: "name@beispiel.de",
803
802
  jobAlertButtonText: "Abonnieren",
804
803
  subscribingLabel: "Wird abonniert \u2026",
805
- jobAlertSuccessToast: "\xDCberpr\xFCfe deine E-Mails, um dein Abonnement zu best\xE4tigen.",
806
- jobAlertDuplicateToast: "Du hast diese Benachrichtigung bereits abonniert.",
804
+ jobAlertSuccessToast: "Falls diese E-Mail noch nicht abonniert ist, haben wir einen Best\xE4tigungslink gesendet \u2014 pr\xFCfe deinen Posteingang.",
807
805
  jobAlertErrorToast: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
808
806
  sectionAriaLabel: "Job-Benachrichtigungen",
809
807
  emailAriaLabel: "E-Mail",
@@ -952,8 +950,7 @@ var FR = {
952
950
  jobAlertEmailPlaceholder: "vous@exemple.fr",
953
951
  jobAlertButtonText: "Activer les alertes",
954
952
  subscribingLabel: "Abonnement en cours\u2026",
955
- jobAlertSuccessToast: "V\xE9rifiez votre e-mail pour confirmer votre abonnement.",
956
- jobAlertDuplicateToast: "Vous \xEAtes d\xE9j\xE0 abonn\xE9 \xE0 cette alerte.",
953
+ jobAlertSuccessToast: "Si cet e-mail n'est pas d\xE9j\xE0 abonn\xE9, nous avons envoy\xE9 un lien de confirmation \u2014 v\xE9rifiez votre bo\xEEte de r\xE9ception.",
957
954
  jobAlertErrorToast: "Une erreur est survenue. Veuillez r\xE9essayer.",
958
955
  sectionAriaLabel: "Alertes emploi",
959
956
  emailAriaLabel: "e-mail",
package/dist/format.mjs CHANGED
@@ -614,8 +614,7 @@ var EN2 = {
614
614
  jobAlertEmailPlaceholder: "you@example.com",
615
615
  jobAlertButtonText: "Get alerts",
616
616
  subscribingLabel: "Subscribing\u2026",
617
- jobAlertSuccessToast: "Check your email to confirm your subscription.",
618
- jobAlertDuplicateToast: "You're already subscribed to this alert.",
617
+ jobAlertSuccessToast: "If this email isn't already subscribed, we've sent a confirmation link \u2014 check your inbox.",
619
618
  jobAlertErrorToast: "Something went wrong. Please try again.",
620
619
  sectionAriaLabel: "Job alerts",
621
620
  emailAriaLabel: "email",
@@ -764,8 +763,7 @@ var DE2 = {
764
763
  jobAlertEmailPlaceholder: "name@beispiel.de",
765
764
  jobAlertButtonText: "Abonnieren",
766
765
  subscribingLabel: "Wird abonniert \u2026",
767
- jobAlertSuccessToast: "\xDCberpr\xFCfe deine E-Mails, um dein Abonnement zu best\xE4tigen.",
768
- jobAlertDuplicateToast: "Du hast diese Benachrichtigung bereits abonniert.",
766
+ jobAlertSuccessToast: "Falls diese E-Mail noch nicht abonniert ist, haben wir einen Best\xE4tigungslink gesendet \u2014 pr\xFCfe deinen Posteingang.",
769
767
  jobAlertErrorToast: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
770
768
  sectionAriaLabel: "Job-Benachrichtigungen",
771
769
  emailAriaLabel: "E-Mail",
@@ -914,8 +912,7 @@ var FR = {
914
912
  jobAlertEmailPlaceholder: "vous@exemple.fr",
915
913
  jobAlertButtonText: "Activer les alertes",
916
914
  subscribingLabel: "Abonnement en cours\u2026",
917
- jobAlertSuccessToast: "V\xE9rifiez votre e-mail pour confirmer votre abonnement.",
918
- jobAlertDuplicateToast: "Vous \xEAtes d\xE9j\xE0 abonn\xE9 \xE0 cette alerte.",
915
+ jobAlertSuccessToast: "Si cet e-mail n'est pas d\xE9j\xE0 abonn\xE9, nous avons envoy\xE9 un lien de confirmation \u2014 v\xE9rifiez votre bo\xEEte de r\xE9ception.",
919
916
  jobAlertErrorToast: "Une erreur est survenue. Veuillez r\xE9essayer.",
920
917
  sectionAriaLabel: "Alertes emploi",
921
918
  emailAriaLabel: "e-mail",
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-IIJtDgzX.mjs';
2
- export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCompany, J as JobSort, O as OfficeLocation, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-IIJtDgzX.mjs';
3
- export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-DgDC0T4g.mjs';
4
- import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-BfEEEOHj.mjs';
5
- export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-BfEEEOHj.mjs';
1
+ import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-Dq2a9oPj.mjs';
2
+ export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCatalogPagination, m as JobCompany, J as JobSort, O as OfficeLocation, n as OffsetPagination, P as PublicJob, a as PublicJobCard, o as RelatedSearch, p as RemotePermit, q as RemoteTimezone, r as StorefrontPagination } from './jobs-Dq2a9oPj.mjs';
3
+ export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-t_WltBBa.mjs';
4
+ import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-CWg82dOz.mjs';
5
+ export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-CWg82dOz.mjs';
6
6
 
7
7
  type Awaitable<T> = T | Promise<T>;
8
8
  /**
@@ -176,7 +176,7 @@ interface Paginator<P extends PageShape> extends AsyncIterable<ItemOf<P>> {
176
176
  * an explicit sort/query — see the jobs skill.
177
177
  *
178
178
  * `offset` is honored for the FIRST page only and dropped afterwards: on
179
- * storefront reads `offset` takes precedence over `cursor`, so carrying it
179
+ * job catalog reads let `offset` take precedence over `cursor`, so carrying it
180
180
  * forward would re-serve the same page forever.
181
181
  *
182
182
  * @example
@@ -204,7 +204,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
204
204
  * constant because the package is platform-neutral and cannot read
205
205
  * package.json at runtime.
206
206
  */
207
- declare const SDK_VERSION = "1.34.0";
207
+ declare const SDK_VERSION = "1.35.1";
208
208
 
209
209
  type SavedJob = Schemas['SavedJob'];
210
210
  type SavedJobsListQuery = {
@@ -456,7 +456,7 @@ type EmbedJobsQuery = {
456
456
  cursor?: string;
457
457
  /** Default 8; values above the embed ceiling of 50 are clamped to 50. */
458
458
  limit?: number;
459
- /** Storefront page offset; takes precedence over `cursor`. `offset + limit` ≤ 10,000. */
459
+ /** Job catalog page offset; takes precedence over `cursor`. `offset + limit` ≤ 10,000. */
460
460
  offset?: number;
461
461
  /** Repeated param (up to 10) — OR-matched. Repeat `companyId` per value. */
462
462
  companyId?: string[];
@@ -547,7 +547,7 @@ type AccessCheckoutBody = Schemas['AccessCheckoutBody'];
547
547
  type AccessPortalBody = Schemas['AccessPortalBody'];
548
548
  type PaywallOfferListEnvelope = ListEnvelope<PaywallOffer>;
549
549
 
550
- type JobAlertFrequency = 'daily' | 'weekly';
550
+ type JobAlertFrequency = 'weekly';
551
551
  type JobAlertRemoteOption = 'on_site' | 'hybrid' | 'remote';
552
552
  /**
553
553
  * Alert filters a consumer can capture. Only `jobFunctions` (→ job categories),
@@ -625,14 +625,19 @@ type JobPostingResult = Schemas['JobPostingResult'];
625
625
  * `publicUrl` you pass back as the top-level `logoUrl` on `create(...)`.
626
626
  */
627
627
  type JobPostingLogoResult = Schemas['JobPostingLogo'];
628
- type JobPostingBillingCheck = Schemas['JobPostingBillingCheck'];
629
628
  type JobPostingBillingVerification = Schemas['JobPostingBillingVerification'];
630
629
  type JobPostingBillingOptions = Schemas['JobPostingBillingOptions'];
631
- type JobPostingSubscriptionEntitlements = Schemas['JobPostingSubscriptionEntitlements'];
632
630
 
633
631
  type TaxonomyGeo = Schemas['TaxonomyGeo'];
634
632
  type TaxonomyResolution = Schemas['PublicTaxonomyResolution'];
633
+ type PublicTaxonomyTerm = Schemas['PublicTaxonomyTerm'];
635
634
  type PublicPlace = Schemas['PublicPlace'];
635
+ type TaxonomyListQuery = {
636
+ q?: string;
637
+ cursor?: string;
638
+ limit?: number;
639
+ };
640
+ type SuggestionsListQuery = Omit<TaxonomyListQuery, 'cursor'>;
636
641
  /**
637
642
  * Query for `taxonomy.places.list()`. Omit it (or `q`) for the full
638
643
  * locations directory; pass `q` (≥2 chars) for location autocomplete — the
@@ -646,7 +651,8 @@ type PlacesListQuery = {
646
651
  };
647
652
 
648
653
  interface CreateBoardClientOptions {
649
- baseUrl: string;
654
+ /** Cavuno API origin. Defaults to the production service. */
655
+ baseUrl?: string;
650
656
  /** Board identifier: `pk_…` key (provisioned default) | `boards_…` ID | slug. */
651
657
  board: string;
652
658
  auth?: {
@@ -669,7 +675,6 @@ interface CreateBoardClientOptions {
669
675
  * import { createBoardClient } from '@cavuno/board';
670
676
  *
671
677
  * const board = createBoardClient({
672
- * baseUrl: 'https://api.cavuno.com',
673
678
  * board: 'pk_a8f3…',
674
679
  * });
675
680
  * const { data } = await board.jobs.list({ limit: 20 });
@@ -1902,7 +1907,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1902
1907
  id: string;
1903
1908
  object: "alert";
1904
1909
  label: string | null;
1905
- frequency: "daily" | "weekly";
1910
+ frequency: "weekly";
1906
1911
  isActive: boolean;
1907
1912
  filters: {
1908
1913
  jobFunctions: string[];
@@ -1919,7 +1924,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1919
1924
  id: string;
1920
1925
  object: "alert";
1921
1926
  label: string | null;
1922
- frequency: "daily" | "weekly";
1927
+ frequency: "weekly";
1923
1928
  isActive: boolean;
1924
1929
  filters: {
1925
1930
  jobFunctions: string[];
@@ -1936,7 +1941,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1936
1941
  id: string;
1937
1942
  object: "alert";
1938
1943
  label: string | null;
1939
- frequency: "daily" | "weekly";
1944
+ frequency: "weekly";
1940
1945
  isActive: boolean;
1941
1946
  filters: {
1942
1947
  jobFunctions: string[];
@@ -1953,7 +1958,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1953
1958
  id: string;
1954
1959
  object: "alert";
1955
1960
  label: string | null;
1956
- frequency: "daily" | "weekly";
1961
+ frequency: "weekly";
1957
1962
  isActive: boolean;
1958
1963
  filters: {
1959
1964
  jobFunctions: string[];
@@ -2260,6 +2265,14 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2260
2265
  };
2261
2266
  taxonomy: {
2262
2267
  categories: {
2268
+ list(query?: TaxonomyListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2269
+ object: "taxonomy_term";
2270
+ id: string;
2271
+ type: "category" | "skill";
2272
+ sourceSlug: string;
2273
+ canonicalSlug: string;
2274
+ displayName: string;
2275
+ }>>;
2263
2276
  resolve(slug: string, options?: FetchOptions): Promise<{
2264
2277
  object: "taxonomy_resolution";
2265
2278
  type: "category" | "skill" | "place" | "market";
@@ -2271,6 +2284,14 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2271
2284
  }>;
2272
2285
  };
2273
2286
  skills: {
2287
+ list(query?: TaxonomyListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2288
+ object: "taxonomy_term";
2289
+ id: string;
2290
+ type: "category" | "skill";
2291
+ sourceSlug: string;
2292
+ canonicalSlug: string;
2293
+ displayName: string;
2294
+ }>>;
2274
2295
  resolve(slug: string, options?: FetchOptions): Promise<{
2275
2296
  object: "taxonomy_resolution";
2276
2297
  type: "category" | "skill" | "place" | "market";
@@ -2281,6 +2302,16 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2281
2302
  geo: components["schemas"]["TaxonomyGeo"];
2282
2303
  }>;
2283
2304
  };
2305
+ suggestions: {
2306
+ list(query?: SuggestionsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2307
+ object: "taxonomy_term";
2308
+ id: string;
2309
+ type: "category" | "skill";
2310
+ sourceSlug: string;
2311
+ canonicalSlug: string;
2312
+ displayName: string;
2313
+ }>>;
2314
+ };
2284
2315
  places: {
2285
2316
  list(query?: PlacesListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2286
2317
  object: "place";
@@ -2314,9 +2345,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2314
2345
  jobAlerts: {
2315
2346
  subscribe(input: JobAlertSubscribeInput, options?: FetchOptions): Promise<{
2316
2347
  object: "job_alert_subscription";
2317
- status: "created" | "duplicate";
2318
- requiresConfirmation: boolean;
2319
- confirmed: boolean;
2348
+ status: "submitted";
2320
2349
  }>;
2321
2350
  confirm(input: {
2322
2351
  token: string;
@@ -2328,7 +2357,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2328
2357
  email: string;
2329
2358
  }, options?: FetchOptions): Promise<{
2330
2359
  object: "job_alert_confirmation_resend";
2331
- status: "sent" | "not_found" | "already_confirmed" | "throttled" | "send_failed";
2360
+ status: "submitted";
2332
2361
  }>;
2333
2362
  manage(query: JobAlertManageQuery, options?: FetchOptions): Promise<{
2334
2363
  object: "job_alert_manage_state";
@@ -2338,7 +2367,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2338
2367
  preferences: {
2339
2368
  id: string;
2340
2369
  label: string | null;
2341
- frequency: string;
2370
+ frequency: "weekly";
2342
2371
  isActive: boolean;
2343
2372
  filters: {
2344
2373
  jobFunctions?: string[];
@@ -2422,12 +2451,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2422
2451
  object: "job_posting_logo";
2423
2452
  publicUrl: string;
2424
2453
  }>;
2425
- checkBilling(input: {
2426
- email: string;
2427
- }, options?: FetchOptions): Promise<{
2428
- object: "job_posting_billing_check";
2429
- hasActiveBilling: boolean;
2430
- }>;
2431
2454
  sendBillingVerification(input: {
2432
2455
  email: string;
2433
2456
  }, options?: FetchOptions): Promise<{
@@ -2457,20 +2480,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2457
2480
  renewsAt: string | null;
2458
2481
  }[];
2459
2482
  }>;
2460
- checkSubscriptionEntitlements(input: {
2461
- email: string;
2462
- planId: string;
2463
- }, options?: FetchOptions): Promise<{
2464
- object: "job_posting_subscription_entitlements";
2465
- hasSubscription: boolean;
2466
- subscriptionId: string | null;
2467
- canFeature: boolean | null;
2468
- featuredSlotsRemaining: number | null;
2469
- featuredSlotsTotal: number | null;
2470
- maxActiveRemaining: number | null;
2471
- maxActiveTotal: number | null;
2472
- featureSelectionMode: string | null;
2473
- }>;
2474
2483
  };
2475
2484
  salaries: {
2476
2485
  companies: {
@@ -2956,4 +2965,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2956
2965
  };
2957
2966
  type BoardSdk = ReturnType<typeof createBoardClient>;
2958
2967
 
2959
- export { ACCESS_TOKEN_KEY, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyBody, type Awaitable, BOARD_ACCESS_GRANT_KEY, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMembership, CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CustomStorage, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, EmploymentType, type FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingCheck, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, type JobPostingSubscriptionEntitlements, JobsListQuery, JobsSearchBody, JobsSimilarQuery, type LegalEntity, type LegalPageType, ListEnvelope, type Logger, type LoginBody, type LogoutBody, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type ReadReceipt, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, type StorageMode, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
2968
+ export { ACCESS_TOKEN_KEY, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyBody, type Awaitable, BOARD_ACCESS_GRANT_KEY, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMembership, CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CustomStorage, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, EmploymentType, type FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, type LegalEntity, type LegalPageType, ListEnvelope, type Logger, type LoginBody, type LogoutBody, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicLegalPage, type PublicPlace, type PublicTaxonomyTerm, REFRESH_TOKEN_KEY, type ReadReceipt, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, type StorageMode, type SuggestionsListQuery, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };