@cavuno/board 1.19.1 → 1.20.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.
package/dist/index.d.mts CHANGED
@@ -15,7 +15,7 @@ interface components {
15
15
  * @description String representing the object's type. Objects of the same type share the same value.
16
16
  * @enum {string}
17
17
  */
18
- object: 'api_key';
18
+ object: "api_key";
19
19
  /** @description Public key ID component, embedded in the key prefix as `cavuno_live_<keyId>_`. */
20
20
  keyId: string;
21
21
  /** @description Human-readable name for the key, shown in the dashboard. */
@@ -40,14 +40,14 @@ interface components {
40
40
  * @description String representing the object's type. Objects of the same type share the same value.
41
41
  * @enum {string}
42
42
  */
43
- object: 'audit_log';
43
+ object: "audit_log";
44
44
  /** @description Identifier of the account the entry belongs to. */
45
45
  accountId: string;
46
46
  /**
47
47
  * @description Type of actor that performed the action.
48
48
  * @enum {string}
49
49
  */
50
- actorType: 'api_key' | 'oauth_token' | 'user_session' | 'system';
50
+ actorType: "api_key" | "oauth_token" | "user_session" | "system";
51
51
  /** @description Identifier of the actor that performed the action. */
52
52
  actorId: string;
53
53
  /** @description Human-readable label for the actor, suitable for display. */
@@ -78,20 +78,20 @@ interface components {
78
78
  operations: ({
79
79
  id: string;
80
80
  /** @enum {string} */
81
- method: 'POST';
81
+ method: "POST";
82
82
  body?: unknown;
83
83
  action?: string;
84
84
  resourceId?: string;
85
85
  } | {
86
86
  id: string;
87
87
  /** @enum {string} */
88
- method: 'PATCH';
88
+ method: "PATCH";
89
89
  body?: unknown;
90
90
  resourceId: string;
91
91
  } | {
92
92
  id: string;
93
93
  /** @enum {string} */
94
- method: 'DELETE';
94
+ method: "DELETE";
95
95
  resourceId: string;
96
96
  })[];
97
97
  };
@@ -102,7 +102,7 @@ interface components {
102
102
  * @description String representing the object's type. Objects of the same type share the same value.
103
103
  * @enum {string}
104
104
  */
105
- object: 'blog_author';
105
+ object: "blog_author";
106
106
  /** @description Display name of the author. */
107
107
  name: string;
108
108
  /** @description URL-friendly slug for the author. */
@@ -132,14 +132,14 @@ interface components {
132
132
  /** @description Time at which the author was last updated, or `null` if it has never been updated. ISO 8601 datetime. */
133
133
  updatedAt: string | null;
134
134
  };
135
- BlogPost: components['schemas']['BlogPostSummary'] & {
135
+ BlogPost: components["schemas"]["BlogPostSummary"] & {
136
136
  html: string | null;
137
137
  };
138
138
  BlogPostSummary: {
139
139
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the blog-post endpoints (e.g. `GET /v1/blog/posts/{id}`). */
140
140
  id: string;
141
141
  /** @enum {string} */
142
- object: 'blog_post';
142
+ object: "blog_post";
143
143
  title: string;
144
144
  slug: string;
145
145
  status: string;
@@ -166,20 +166,20 @@ interface components {
166
166
  operations: ({
167
167
  id: string;
168
168
  /** @enum {string} */
169
- method: 'POST';
169
+ method: "POST";
170
170
  body?: unknown;
171
171
  action?: string;
172
172
  resourceId?: string;
173
173
  } | {
174
174
  id: string;
175
175
  /** @enum {string} */
176
- method: 'PATCH';
176
+ method: "PATCH";
177
177
  body?: unknown;
178
178
  resourceId: string;
179
179
  } | {
180
180
  id: string;
181
181
  /** @enum {string} */
182
- method: 'DELETE';
182
+ method: "DELETE";
183
183
  resourceId: string;
184
184
  })[];
185
185
  };
@@ -190,7 +190,7 @@ interface components {
190
190
  * @description String representing the object's type. Objects of the same type share the same value.
191
191
  * @enum {string}
192
192
  */
193
- object: 'blog_tag';
193
+ object: "blog_tag";
194
194
  /** @description Display name of the tag. */
195
195
  name: string;
196
196
  /** @description URL-friendly slug for the tag. */
@@ -210,7 +210,7 @@ interface components {
210
210
  };
211
211
  BoardAccessGrant: {
212
212
  /** @enum {string} */
213
- object: 'board_access_grant';
213
+ object: "board_access_grant";
214
214
  /** @description The board-access grant. Send it as the `X-Board-Access` header on subsequent content reads to pass the password wall. */
215
215
  token: string;
216
216
  };
@@ -231,9 +231,9 @@ interface components {
231
231
  };
232
232
  BoardAuthOAuthAuthorizationUrl: {
233
233
  /** @enum {string} */
234
- object: 'oauth_authorization_url';
234
+ object: "oauth_authorization_url";
235
235
  /** @enum {string} */
236
- provider: 'google' | 'linkedin';
236
+ provider: "google" | "linkedin";
237
237
  /** Format: uri */
238
238
  authorizeUrl: string;
239
239
  };
@@ -248,12 +248,12 @@ interface components {
248
248
  * @description Which role profile to create on the board.
249
249
  * @enum {string}
250
250
  */
251
- role: 'candidate' | 'employer';
251
+ role: "candidate" | "employer";
252
252
  /**
253
253
  * @description Registration method. Only `emailpass` is supported.
254
254
  * @enum {string}
255
255
  */
256
- method: 'emailpass';
256
+ method: "emailpass";
257
257
  /** Format: email */
258
258
  email: string;
259
259
  /** @description Minimum 8 characters. */
@@ -273,21 +273,21 @@ interface components {
273
273
  };
274
274
  BoardAuthSession: {
275
275
  /** @enum {string} */
276
- object: 'board_auth_session';
276
+ object: "board_auth_session";
277
277
  /** @description Short-lived JWT (1 hour). Send as `Authorization: Bearer`. */
278
278
  accessToken: string;
279
279
  /** @description Opaque single-use refresh token (30 days). Each refresh returns a replacement; a reused token is rejected. */
280
280
  refreshToken: string;
281
281
  /** @description Access-token expiry, epoch milliseconds. */
282
282
  expiresAt: number;
283
- boardUser: components['schemas']['BoardUser'];
283
+ boardUser: components["schemas"]["BoardUser"];
284
284
  };
285
285
  BoardAuthVerifyEmailBody: {
286
286
  token: string;
287
287
  };
288
288
  BoardSeo: {
289
289
  /** @enum {string} */
290
- object: 'board_seo';
290
+ object: "board_seo";
291
291
  /** @description Verbatim `ads.txt` content, or `null` when not configured. */
292
292
  adsTxt: string | null;
293
293
  /** @description IndexNow key-file content, or `null` when not configured. */
@@ -318,36 +318,103 @@ interface components {
318
318
  /** @description Board user ID. */
319
319
  id: string;
320
320
  /** @enum {string} */
321
- object: 'board_user';
321
+ object: "board_user";
322
322
  /** @enum {string} */
323
- role: 'candidate' | 'employer';
323
+ role: "candidate" | "employer";
324
324
  email: string;
325
325
  displayName: string | null;
326
326
  emailVerified: boolean;
327
327
  };
328
+ CandidateAvatar: {
329
+ /** @enum {string} */
330
+ object: "candidate_avatar";
331
+ avatarUrl: string | null;
332
+ };
333
+ CandidateEducation: {
334
+ id: string;
335
+ /** @enum {string} */
336
+ object: "candidate_education";
337
+ institutionName: string;
338
+ institutionUrl: string | null;
339
+ degree: string | null;
340
+ fieldOfStudy: string | null;
341
+ grade: string | null;
342
+ activitiesAndSocieties: string | null;
343
+ startDate: string | null;
344
+ endDate: string | null;
345
+ description: string | null;
346
+ sortOrder: number;
347
+ };
348
+ CandidateExperience: {
349
+ id: string;
350
+ /** @enum {string} */
351
+ object: "candidate_experience";
352
+ title: string;
353
+ companyName: string;
354
+ companyUrl: string | null;
355
+ location: string | null;
356
+ employmentType: string | null;
357
+ locationType: string | null;
358
+ foundVia: string | null;
359
+ startDate: string;
360
+ endDate: string | null;
361
+ description: string | null;
362
+ sortOrder: number;
363
+ experienceSkills: string[];
364
+ };
365
+ CandidateLanguage: {
366
+ /** @enum {string} */
367
+ object: "candidate_language";
368
+ name: string;
369
+ proficiency: string;
370
+ };
371
+ CandidateProfile: {
372
+ id: string;
373
+ /** @enum {string} */
374
+ object: "candidate_profile";
375
+ displayName: string | null;
376
+ bio: string | null;
377
+ avatarUrl: string | null;
378
+ handle: string | null;
379
+ headline: string | null;
380
+ location: string | null;
381
+ /** @enum {string} */
382
+ profileVisibility: "hidden" | "logged_in_only" | "public";
383
+ /** @enum {string} */
384
+ jobSearchStatus: "actively_looking" | "open_to_offers" | "not_looking";
385
+ /** @enum {string} */
386
+ jobSearchStatusVisibleTo: "everyone" | "employers_only";
387
+ openToRelocate: boolean;
388
+ };
389
+ CandidateSkill: {
390
+ /** @enum {string} */
391
+ object: "candidate_skill";
392
+ name: string;
393
+ jobSkillId: string | null;
394
+ };
328
395
  CompaniesBatchRequest: {
329
396
  /** @description Array of sub-operations to execute. Each entry runs independently and reports its result on the corresponding entry of the response `data` array. Sub-operation `id` values must be unique within the batch. Up to 100 entries. */
330
397
  operations: ({
331
398
  id: string;
332
399
  /** @enum {string} */
333
- method: 'POST';
400
+ method: "POST";
334
401
  body?: unknown;
335
402
  action?: string;
336
403
  resourceId?: string;
337
404
  } | {
338
405
  id: string;
339
406
  /** @enum {string} */
340
- method: 'PATCH';
407
+ method: "PATCH";
341
408
  body?: unknown;
342
409
  resourceId: string;
343
410
  } | {
344
411
  id: string;
345
412
  /** @enum {string} */
346
- method: 'DELETE';
413
+ method: "DELETE";
347
414
  resourceId: string;
348
415
  })[];
349
416
  };
350
- Company: components['schemas']['CompanySummary'] & {
417
+ Company: components["schemas"]["CompanySummary"] & {
351
418
  /** @description Long-form description of the company, or `null` if not set. */
352
419
  description: string | null;
353
420
  /** @description Whether automated backfill of jobs from this company is supported, or `null` if not yet evaluated. */
@@ -359,7 +426,7 @@ interface components {
359
426
  };
360
427
  CompanyCategorySalary: {
361
428
  /** @enum {string} */
362
- object: 'company_category_salary';
429
+ object: "company_category_salary";
363
430
  categorySourceSlug: string;
364
431
  categoryCanonicalSlug: string;
365
432
  companyName: string;
@@ -403,7 +470,7 @@ interface components {
403
470
  };
404
471
  CompanyMarket: {
405
472
  /** @enum {string} */
406
- object: 'company_market';
473
+ object: "company_market";
407
474
  slug: string;
408
475
  name: string;
409
476
  /** @description Number of companies on the board in this market. */
@@ -422,7 +489,7 @@ interface components {
422
489
  * @description String representing the object's type. Objects of the same type share the same value.
423
490
  * @enum {string}
424
491
  */
425
- object: 'public_company';
492
+ object: "public_company";
426
493
  /** @description Display name of the company. */
427
494
  name: string;
428
495
  /** @description URL-friendly slug for the company. */
@@ -437,15 +504,15 @@ interface components {
437
504
  jobCount: number;
438
505
  /** @description Number of currently-published, non-expired jobs at this company. */
439
506
  publishedJobCount: number;
440
- links: components['schemas']['PublicCompanyLinks'];
507
+ links: components["schemas"]["PublicCompanyLinks"];
441
508
  };
442
- CompanyPublicDetail: components['schemas']['CompanyPublic'] & {
509
+ CompanyPublicDetail: components["schemas"]["CompanyPublic"] & {
443
510
  /** @description Markets (sectors) this company operates in, each with its source slug. Empty when the company has no markets. */
444
- markets: components['schemas']['CompanyMarketRef'][];
511
+ markets: components["schemas"]["CompanyMarketRef"][];
445
512
  };
446
513
  CompanySalary: {
447
514
  /** @enum {string} */
448
- object: 'company_salary';
515
+ object: "company_salary";
449
516
  companyName: string;
450
517
  companySlug: string;
451
518
  companyLogoPath: string | null;
@@ -510,7 +577,7 @@ interface components {
510
577
  * @description String representing the object's type. Objects of the same type share the same value.
511
578
  * @enum {string}
512
579
  */
513
- object: 'company';
580
+ object: "company";
514
581
  /** @description Display name of the company. */
515
582
  name: string;
516
583
  /** @description URL-friendly slug for the company. */
@@ -532,7 +599,7 @@ interface components {
532
599
  /** @description Time at which the company was last updated, or `null` if it has never been updated. ISO 8601 datetime. */
533
600
  updatedAt: string | null;
534
601
  /** @description Public + admin URLs for this company. `public` may be `null` if the company lacks a slug. */
535
- links: components['schemas']['ResourceLinks'] & {
602
+ links: components["schemas"]["ResourceLinks"] & {
536
603
  /**
537
604
  * Format: uri
538
605
  * @description Canonical public URL for this company on the board, or `null` when no slug is set.
@@ -554,7 +621,7 @@ interface components {
554
621
  * @description Author visibility status. One of `active` or `inactive`.
555
622
  * @enum {string}
556
623
  */
557
- status?: 'active' | 'inactive';
624
+ status?: "active" | "inactive";
558
625
  /** @description Storage ID of an uploaded avatar image (from `POST /v1/media/upload`). Pass `null` to clear an existing avatar. */
559
626
  avatarStorageId?: string | null;
560
627
  /** @description The author's personal website URL. Normalized to a canonical URL when stored. */
@@ -592,7 +659,7 @@ interface components {
592
659
  publishedAt?: string;
593
660
  title: string;
594
661
  /** @enum {string} */
595
- status?: 'draft' | 'scheduled' | 'published';
662
+ status?: "draft" | "scheduled" | "published";
596
663
  };
597
664
  CreateCompanyBody: {
598
665
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
@@ -612,6 +679,31 @@ interface components {
612
679
  /** @description URL-friendly slug for the company. Auto-generated from `name` when omitted. */
613
680
  slug?: string;
614
681
  };
682
+ CreateEducationBody: {
683
+ institutionName: string;
684
+ institutionUrl?: string;
685
+ degree?: string;
686
+ fieldOfStudy?: string;
687
+ grade?: string;
688
+ activitiesAndSocieties?: string;
689
+ startDate?: string;
690
+ endDate?: string;
691
+ description?: string;
692
+ sortOrder?: number;
693
+ };
694
+ CreateExperienceBody: {
695
+ title: string;
696
+ companyName: string;
697
+ startDate: string;
698
+ companyUrl?: string;
699
+ location?: string;
700
+ employmentType?: string;
701
+ locationType?: string;
702
+ foundVia?: string;
703
+ endDate?: string;
704
+ description?: string;
705
+ sortOrder?: number;
706
+ };
615
707
  CreateJobBody: {
616
708
  /** @description The ID of an existing company. Provide either `companyId` or `company`, not both. */
617
709
  companyId?: string;
@@ -623,22 +715,22 @@ interface components {
623
715
  * @description Employment type of the role.
624
716
  * @enum {string}
625
717
  */
626
- employmentType?: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other';
718
+ employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
627
719
  /**
628
720
  * @description Whether the role is on-site, hybrid, or fully remote.
629
721
  * @enum {string}
630
722
  */
631
- remoteOption?: 'on_site' | 'hybrid' | 'remote';
723
+ remoteOption?: "on_site" | "hybrid" | "remote";
632
724
  /** @description Where remote candidates must hold work authorization. Each entry is the smallest relevant scope: `worldwide`, a `world_region` (EMEA / LATAM / NA / APAC), a `continent`, a `region`, a `subregion`, a `custom` group (e.g. `EU`), a `country` (ISO 3166-1 alpha-2), or a `subdivision` (ISO 3166-2). Subdivisions auto-imply their parent country in the derived `remoteWorkPermitCountryCodes` output. Worldwide is mutually exclusive with all other entries. The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-permits`. Pass `[]` to clear an existing constraint. */
633
725
  remotePermits?: {
634
726
  /** @enum {string} */
635
- type: 'worldwide' | 'world_region' | 'continent' | 'region' | 'subregion' | 'subdivision' | 'country' | 'custom';
727
+ type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
636
728
  value: string;
637
729
  }[];
638
730
  /** @description Where remote candidates must be timezone-compatible. Each entry mirrors the `remotePermits` shape (`world_region`, `continent`, `region`, `subregion`, `country`) plus `timezone` (specific IANA name with optional `plusMinus` ±N hours expansion) and `all` (every timezone — equivalent of `worldwide` for permits). The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-timezones`. **When omitted on POST**, the server auto-derives this from `remotePermits` (or `[{all,all}]` if neither was provided). **PATCH never auto-re-derives** — once set, only an explicit replacement updates the stored value, even when `remotePermits` changes. Pass `[]` to clear an existing constraint. */
639
731
  remoteTimezones?: {
640
732
  /** @enum {string} */
641
- type: 'all' | 'world_region' | 'continent' | 'region' | 'subregion' | 'country' | 'timezone';
733
+ type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
642
734
  value: string;
643
735
  plusMinus?: number;
644
736
  }[];
@@ -646,12 +738,12 @@ interface components {
646
738
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
647
739
  * @enum {string}
648
740
  */
649
- remoteSponsorship?: 'yes' | 'no' | 'unknown';
741
+ remoteSponsorship?: "yes" | "no" | "unknown";
650
742
  /**
651
743
  * @description Seniority level of the role.
652
744
  * @enum {string}
653
745
  */
654
- seniority?: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive';
746
+ seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
655
747
  /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (which is normalized to `mailto:` form). */
656
748
  applicationUrl: string;
657
749
  /** @description Minimum salary, in `salaryCurrency` units. */
@@ -664,7 +756,7 @@ interface components {
664
756
  * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
665
757
  * @enum {string}
666
758
  */
667
- salaryTimeframe?: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour';
759
+ salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
668
760
  /** @description Whether the job appears in featured slots on the public board. */
669
761
  isFeatured?: boolean;
670
762
  /** @description Job expiry as a Unix epoch in milliseconds. On create, omitted or `null` defaults to 30 days from creation. On PATCH, pass `null` to clear an existing expiry. Past timestamps remove the job from the public board. */
@@ -672,7 +764,7 @@ interface components {
672
764
  /** @description Time at which the job was first published, as a Unix epoch in milliseconds. When omitted on create with `status: "published"`, the server stamps the current time. Useful for bulk-importing historical jobs while preserving original publication dates. PATCH may overwrite an existing value but cannot clear it. */
673
765
  publishedAt?: number;
674
766
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
675
- educationRequirements?: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
767
+ educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
676
768
  /** @description Minimum required experience, expressed in months. */
677
769
  experienceMonths?: number;
678
770
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
@@ -681,11 +773,11 @@ interface components {
681
773
  * @description Period denominator for `inOfficeFrequency`.
682
774
  * @enum {string}
683
775
  */
684
- inOfficePeriod?: 'per_week' | 'per_month' | 'per_year';
776
+ inOfficePeriod?: "per_week" | "per_month" | "per_year";
685
777
  /** @description How often the candidate must be in-office over `inOfficePeriod`. */
686
778
  inOfficeFrequency?: number;
687
779
  /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
688
- officeLocations?: components['schemas']['JobOfficeLocationInput'][];
780
+ officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
689
781
  /** @description An external identifier for the job from your own system, such as an ATS requisition ID. Use this value to look up the job later via `GET /v1/jobs?externalId=...` for deduplication. Scoped per-account: two different accounts may reuse the same `externalId` without collision. Up to 255 characters. */
690
782
  externalId?: string;
691
783
  /** @description Board-defined custom-field values, keyed by the field `key` (definitions, including type and option keys, are published at `GET /v1/settings/job-form`). Writes are **additive**: on `PATCH` a key you send is set/overwritten and a key you omit is preserved (unsent keys are never cleared); on `POST` this initializes the bag. Send a key with an intentional-empty value — `null`, `""`, or `[]` — to **clear** it (`""`/`null` clear any type; `[]` clears a `multi_select`); `false` and `0` are kept as real values. Values must match the field type and `single_select`/`multi_select` must use defined option **keys** (not labels); a wrong-typed value is rejected (`custom_field_wrong_type`), never silently cleared. Unknown keys are ignored. The stored bag never contains `null`/empty values. */
@@ -694,12 +786,12 @@ interface components {
694
786
  };
695
787
  /** @description The job title. */
696
788
  title: string;
697
- company?: components['schemas']['InlineCompanyInput'];
789
+ company?: components["schemas"]["InlineCompanyInput"];
698
790
  /**
699
791
  * @description Initial status of the job. Defaults to `draft`. Only `draft` and `published` are writable here. The system-set values `expired` and `archived` are not — use the dedicated transitions (`POST /v1/jobs/:id/publish`, `/pause`, `/expire`) for status changes after create.
700
792
  * @enum {string}
701
793
  */
702
- status?: 'draft' | 'published';
794
+ status?: "draft" | "published";
703
795
  };
704
796
  CreateJobPostingBody: {
705
797
  submission: {
@@ -713,7 +805,7 @@ interface components {
713
805
  remoteOption: string;
714
806
  officeLocations: {
715
807
  /** @enum {string} */
716
- provider?: 'mapbox';
808
+ provider?: "mapbox";
717
809
  providerPlaceId?: string;
718
810
  displayName: string;
719
811
  countryCode?: string;
@@ -756,7 +848,7 @@ interface components {
756
848
  offset?: number;
757
849
  }[];
758
850
  /** @enum {string} */
759
- remoteSponsorship?: 'yes' | 'no' | 'unknown';
851
+ remoteSponsorship?: "yes" | "no" | "unknown";
760
852
  customFieldValues?: {
761
853
  [key: string]: string | string[] | boolean | number;
762
854
  };
@@ -794,7 +886,7 @@ interface components {
794
886
  * @description Tag visibility. One of `public` or `internal`.
795
887
  * @enum {string}
796
888
  */
797
- visibility?: 'public' | 'internal';
889
+ visibility?: "public" | "internal";
798
890
  /** @description SEO meta title for the tag page. */
799
891
  metaTitle?: string;
800
892
  /** @description SEO meta description for the tag page. */
@@ -811,9 +903,9 @@ interface components {
811
903
  * @description Field type, which dictates the accepted value: `short_text`/`long_text` → string; `single_select` → one option key (string); `multi_select` → array of option keys; `boolean` → boolean; `number` → number.
812
904
  * @enum {string}
813
905
  */
814
- type: 'short_text' | 'long_text' | 'single_select' | 'multi_select' | 'boolean' | 'number';
906
+ type: "short_text" | "long_text" | "single_select" | "multi_select" | "boolean" | "number";
815
907
  /** @description Present only for `single_select`/`multi_select`. A written value must be one (or, for multi, several) of these option `key`s — never a label. */
816
- options?: components['schemas']['CustomFieldOption'][];
908
+ options?: components["schemas"]["CustomFieldOption"][];
817
909
  /** @description When true, the value cannot be cleared or left empty on a write (rejected with `custom_field_required`). */
818
910
  required: boolean;
819
911
  /** @description Inclusive minimum for `number` fields, when set. */
@@ -839,7 +931,7 @@ interface components {
839
931
  * @description OAuth token endpoint authentication method. Use `none` for public PKCE clients that cannot keep a client secret.
840
932
  * @enum {string}
841
933
  */
842
- token_endpoint_auth_method?: 'client_secret_basic' | 'none';
934
+ token_endpoint_auth_method?: "client_secret_basic" | "none";
843
935
  };
844
936
  DynamicClientRegistrationResponse: {
845
937
  /** @description Public OAuth client identifier. */
@@ -875,6 +967,12 @@ interface components {
875
967
  /** @description If `true` (default), creates a new company when no match is found. Set to `false` to receive a `404 companies_not_found` response instead. */
876
968
  createIfMissing?: boolean;
877
969
  };
970
+ HandleAvailability: {
971
+ /** @enum {string} */
972
+ object: "handle_availability";
973
+ handle: string;
974
+ available: boolean;
975
+ };
878
976
  /** @description An inline company payload, resolved via `find-or-create` before the job is created. Provide either `company` or `companyId`, not both. */
879
977
  InlineCompanyInput: {
880
978
  /** @description The company's display name. */
@@ -888,9 +986,9 @@ interface components {
888
986
  /** @description If `true` (default), creates a new company when no match is found. Set to `false` to receive a `404 companies_not_found` response instead. */
889
987
  createIfMissing?: boolean;
890
988
  };
891
- Job: components['schemas']['JobSummary'] & {
989
+ Job: components["schemas"]["JobSummary"] & {
892
990
  /** @description Public + admin URLs for this job. `public` may be `null` if the job lacks a slug or company-slug. */
893
- links?: components['schemas']['ResourceLinks'] & {
991
+ links?: components["schemas"]["ResourceLinks"] & {
894
992
  /**
895
993
  * Format: uri
896
994
  * @description Canonical public URL for this job, or `null` when the job has no slug or no associated company slug (so a stable URL cannot be assembled).
@@ -924,9 +1022,9 @@ interface components {
924
1022
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
925
1023
  * @enum {string}
926
1024
  */
927
- remoteSponsorship: 'yes' | 'no' | 'unknown';
1025
+ remoteSponsorship: "yes" | "no" | "unknown";
928
1026
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
929
- educationRequirements: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
1027
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
930
1028
  /** @description Minimum required experience in months, or `null` if not specified. */
931
1029
  experienceMonths: number | null;
932
1030
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. `null` if not specified. */
@@ -935,12 +1033,12 @@ interface components {
935
1033
  * @description Period denominator for `inOfficeFrequency`, or `null` if not specified.
936
1034
  * @enum {string|null}
937
1035
  */
938
- inOfficePeriod: 'per_week' | 'per_month' | 'per_year' | null;
1036
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
939
1037
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
940
1038
  inOfficeFrequency: number | null;
941
- company: components['schemas']['JobCompany'];
1039
+ company: components["schemas"]["JobCompany"];
942
1040
  /** @description Physical office locations associated with the job. */
943
- officeLocations: components['schemas']['JobOfficeLocation'][];
1041
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
944
1042
  };
945
1043
  /** @description Embedded company resource for the job, or `null` if no company is attached. */
946
1044
  JobCompany: {
@@ -982,7 +1080,7 @@ interface components {
982
1080
  allowedCountries?: string[];
983
1081
  };
984
1082
  /** @description Board-defined custom field definitions, in display order. Read these to learn which `customFieldValues` keys, types, and option keys a job accepts on POST/PATCH /v1/jobs. */
985
- customFields?: components['schemas']['CustomFieldDefinition'][];
1083
+ customFields?: components["schemas"]["CustomFieldDefinition"][];
986
1084
  };
987
1085
  JobOfficeLocation: {
988
1086
  /** @description ISO 3166-1 alpha-2 country code, or `null` if the location was not resolved. */
@@ -1017,12 +1115,12 @@ interface components {
1017
1115
  };
1018
1116
  JobPostingBillingCheck: {
1019
1117
  /** @enum {string} */
1020
- object: 'job_posting_billing_check';
1118
+ object: "job_posting_billing_check";
1021
1119
  hasActiveBilling: boolean;
1022
1120
  };
1023
1121
  JobPostingBillingOptions: {
1024
1122
  /** @enum {string} */
1025
- object: 'job_posting_billing_options';
1123
+ object: "job_posting_billing_options";
1026
1124
  options: {
1027
1125
  id: string;
1028
1126
  type: string;
@@ -1047,7 +1145,7 @@ interface components {
1047
1145
  };
1048
1146
  JobPostingBillingVerification: {
1049
1147
  /** @enum {string} */
1050
- object: 'job_posting_billing_verification';
1148
+ object: "job_posting_billing_verification";
1051
1149
  success: boolean;
1052
1150
  };
1053
1151
  JobPostingCheckBillingBody: {
@@ -1056,25 +1154,25 @@ interface components {
1056
1154
  };
1057
1155
  JobPostingLogo: {
1058
1156
  /** @enum {string} */
1059
- object: 'job_posting_logo';
1157
+ object: "job_posting_logo";
1060
1158
  publicUrl: string;
1061
1159
  };
1062
1160
  JobPostingPlan: {
1063
1161
  /** @enum {string} */
1064
- object: 'job_posting_plan';
1162
+ object: "job_posting_plan";
1065
1163
  id: string;
1066
1164
  name: string;
1067
1165
  description: string | null;
1068
1166
  kind: string;
1069
1167
  /** @enum {string|null} */
1070
- billingInterval: 'month' | 'year' | null;
1168
+ billingInterval: "month" | "year" | null;
1071
1169
  /** @enum {string|null} */
1072
- purpose: 'job_posting' | 'talent_access' | null;
1170
+ purpose: "job_posting" | "talent_access" | null;
1073
1171
  isRecommended: boolean;
1074
1172
  displayOrder: number | null;
1075
1173
  invoiceOnly: boolean;
1076
1174
  /** @enum {string|null} */
1077
- publishTiming: 'on_issue' | 'on_payment' | null;
1175
+ publishTiming: "on_issue" | "on_payment" | null;
1078
1176
  netTermsDays: number | null;
1079
1177
  prices: {
1080
1178
  currency: string;
@@ -1088,29 +1186,29 @@ interface components {
1088
1186
  };
1089
1187
  JobPostingResult: {
1090
1188
  /** @enum {string} */
1091
- object: 'job_posting_result';
1189
+ object: "job_posting_result";
1092
1190
  /** @enum {string} */
1093
- status: 'checkout';
1191
+ status: "checkout";
1094
1192
  checkoutUrl: string;
1095
1193
  jobId: string;
1096
1194
  } | {
1097
1195
  /** @enum {string} */
1098
- object: 'job_posting_result';
1196
+ object: "job_posting_result";
1099
1197
  /** @enum {string} */
1100
- status: 'published';
1198
+ status: "published";
1101
1199
  jobId: string;
1102
1200
  jobSlug: string;
1103
1201
  } | {
1104
1202
  /** @enum {string} */
1105
- object: 'job_posting_result';
1203
+ object: "job_posting_result";
1106
1204
  /** @enum {string} */
1107
- status: 'pending_approval';
1205
+ status: "pending_approval";
1108
1206
  jobId: string;
1109
1207
  } | {
1110
1208
  /** @enum {string} */
1111
- object: 'job_posting_result';
1209
+ object: "job_posting_result";
1112
1210
  /** @enum {string} */
1113
- status: 'invoice_sent';
1211
+ status: "invoice_sent";
1114
1212
  jobId: string;
1115
1213
  };
1116
1214
  JobPostingSendVerificationBody: {
@@ -1119,7 +1217,7 @@ interface components {
1119
1217
  };
1120
1218
  JobPostingSubscriptionEntitlements: {
1121
1219
  /** @enum {string} */
1122
- object: 'job_posting_subscription_entitlements';
1220
+ object: "job_posting_subscription_entitlements";
1123
1221
  hasSubscription: boolean;
1124
1222
  subscriptionId: string | null;
1125
1223
  canFeature: boolean | null;
@@ -1141,7 +1239,7 @@ interface components {
1141
1239
  * @description String representing the object's type. Objects of the same type share the same value.
1142
1240
  * @enum {string}
1143
1241
  */
1144
- object: 'job';
1242
+ object: "job";
1145
1243
  /** @description The job title. */
1146
1244
  title: string;
1147
1245
  /** @description URL-friendly slug used in public board URLs, or `null` if no slug is set. */
@@ -1150,24 +1248,24 @@ interface components {
1150
1248
  * @description Current status of the job. One of `draft`, `published`, `expired`, or `archived`.
1151
1249
  * @enum {string}
1152
1250
  */
1153
- status: 'draft' | 'published' | 'expired' | 'archived';
1251
+ status: "draft" | "published" | "expired" | "archived";
1154
1252
  /** @description Identifier of the company the job belongs to, or `null` if no company is attached. */
1155
1253
  companyId: string | null;
1156
1254
  /**
1157
1255
  * @description Employment type of the role, or `null` if not specified.
1158
1256
  * @enum {string|null}
1159
1257
  */
1160
- employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1258
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1161
1259
  /**
1162
1260
  * @description Whether the role is on-site, hybrid, or fully remote, or `null` if not specified.
1163
1261
  * @enum {string|null}
1164
1262
  */
1165
- remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1263
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
1166
1264
  /**
1167
1265
  * @description Seniority level of the role, or `null` if not specified.
1168
1266
  * @enum {string|null}
1169
1267
  */
1170
- seniority: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive' | null;
1268
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
1171
1269
  /** @description Minimum salary in `salaryCurrency` units, or `null` if not specified. */
1172
1270
  salaryMin: number | null;
1173
1271
  /** @description Maximum salary in `salaryCurrency` units, or `null` if not specified. */
@@ -1178,7 +1276,7 @@ interface components {
1178
1276
  * @description Period the salary range is quoted against, or `null` if no salary is specified.
1179
1277
  * @enum {string|null}
1180
1278
  */
1181
- salaryTimeframe: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour' | null;
1279
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
1182
1280
  /** @description Whether the job appears in featured slots on the public board. */
1183
1281
  isFeatured: boolean;
1184
1282
  /** @description Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime. */
@@ -1195,11 +1293,11 @@ interface components {
1195
1293
  customFieldValues: {
1196
1294
  [key: string]: string | string[] | boolean | number;
1197
1295
  };
1198
- links: components['schemas']['AdminOnlyResourceLinks'];
1296
+ links: components["schemas"]["AdminOnlyResourceLinks"];
1199
1297
  };
1200
1298
  LegalPage: {
1201
1299
  /** @enum {string} */
1202
- object: 'legal_page';
1300
+ object: "legal_page";
1203
1301
  /** @description The resolved legal page type. */
1204
1302
  type: string;
1205
1303
  /** @description Page heading (H1), with `{{board_name}}` resolved. */
@@ -1207,7 +1305,7 @@ interface components {
1207
1305
  /** @description Owner-authored prose as portable HTML (transitional field, ADR-0039 — the starter authors the layout). Empty string when the page has no text body. */
1208
1306
  content: string;
1209
1307
  /** @enum {string} */
1210
- contentFormat: 'html';
1308
+ contentFormat: "html";
1211
1309
  /** @description Structured impressum legal-entity facts; `null` for non-impressum pages. */
1212
1310
  legalEntity: {
1213
1311
  legalName: string | null;
@@ -1216,7 +1314,7 @@ interface components {
1216
1314
  };
1217
1315
  LocationSalaryDetail: {
1218
1316
  /** @enum {string} */
1219
- object: 'location_salary_detail';
1317
+ object: "location_salary_detail";
1220
1318
  /** @description Immutable English source place slug — the salary-stats key. */
1221
1319
  sourceSlug: string;
1222
1320
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -1297,7 +1395,7 @@ interface components {
1297
1395
  };
1298
1396
  LocationSkillsIndex: {
1299
1397
  /** @enum {string} */
1300
- object: 'location_skills_index';
1398
+ object: "location_skills_index";
1301
1399
  sourceSlug: string;
1302
1400
  canonicalSlug: string;
1303
1401
  placeName: string;
@@ -1311,7 +1409,7 @@ interface components {
1311
1409
  };
1312
1410
  LocationTitlesIndex: {
1313
1411
  /** @enum {string} */
1314
- object: 'location_titles_index';
1412
+ object: "location_titles_index";
1315
1413
  sourceSlug: string;
1316
1414
  canonicalSlug: string;
1317
1415
  placeName: string;
@@ -1323,7 +1421,7 @@ interface components {
1323
1421
  jobCount: number;
1324
1422
  }[];
1325
1423
  };
1326
- MediaGet: components['schemas']['MediaUpload'] & {
1424
+ MediaGet: components["schemas"]["MediaUpload"] & {
1327
1425
  /** @description Time at which the file was uploaded. ISO 8601 datetime. */
1328
1426
  uploadedAt: string;
1329
1427
  /** @description Resources currently referencing this file. Currently always `[]` — the resolver is not yet implemented. */
@@ -1341,7 +1439,7 @@ interface components {
1341
1439
  * @description String representing the object's type. Objects of the same type share the same value.
1342
1440
  * @enum {string}
1343
1441
  */
1344
- object: 'media_upload';
1442
+ object: "media_upload";
1345
1443
  /** @description URL where the file can be downloaded. Permanent for files served from the assets domain; a signed URL for legacy files. Always set on the upload response; may be `null` on retrieval if the underlying blob has been deleted. */
1346
1444
  url: string | null;
1347
1445
  /** @description Time at which the signed `url` expires (ISO 8601 datetime), or `null` when the `url` is permanent and never expires. */
@@ -1354,7 +1452,15 @@ interface components {
1354
1452
  * @description Resource type the file was uploaded for.
1355
1453
  * @enum {string}
1356
1454
  */
1357
- purpose: 'board_logo' | 'board_hero' | 'account_avatar' | 'company_logo' | 'blog_image';
1455
+ purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
1456
+ };
1457
+ NotificationPreference: {
1458
+ /** @enum {string} */
1459
+ object: "notification_preference";
1460
+ /** @enum {string} */
1461
+ channel: "messageEmails" | "applicationEmails";
1462
+ subscribed: boolean;
1463
+ updatedAt: number | null;
1358
1464
  };
1359
1465
  /** @description Error envelope, populated once the operation reaches `failed`. `null` otherwise. */
1360
1466
  OperationErrorEnvelope: {
@@ -1385,20 +1491,20 @@ interface components {
1385
1491
  * @description String representing the object's type. Objects of the same type share the same value.
1386
1492
  * @enum {string}
1387
1493
  */
1388
- object: 'operation';
1494
+ object: "operation";
1389
1495
  /** @description Operation kind, identifying which workflow the operation runs. */
1390
1496
  kind: string;
1391
1497
  /**
1392
1498
  * @description Current state of the operation.
1393
1499
  * @enum {string}
1394
1500
  */
1395
- state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled';
1501
+ state: "pending" | "running" | "succeeded" | "failed" | "cancelled";
1396
1502
  /** @description Identifier of the account the operation belongs to. */
1397
1503
  accountId: string;
1398
- progress: components['schemas']['OperationProgress'];
1504
+ progress: components["schemas"]["OperationProgress"];
1399
1505
  /** @description Operation result, populated once the operation reaches `succeeded`. Shape varies by `kind`. */
1400
1506
  result?: unknown;
1401
- error: components['schemas']['OperationErrorEnvelope'];
1507
+ error: components["schemas"]["OperationErrorEnvelope"];
1402
1508
  /** @description Time at which the operation was created. ISO 8601 datetime. */
1403
1509
  createdAt: string;
1404
1510
  /** @description Time at which the operation was last updated. ISO 8601 datetime. */
@@ -1450,23 +1556,23 @@ interface components {
1450
1556
  /** @description Default expiry, in days, applied to newly published jobs when no `expiresAt` is supplied. */
1451
1557
  defaultJobDurationDays?: number;
1452
1558
  /** @description Public contact email shown on the board. Pass `null` to clear. */
1453
- contactEmail?: string | '' | unknown | unknown;
1559
+ contactEmail?: string | "" | unknown | unknown;
1454
1560
  /** @description Legal name of the entity operating the board. Pass `null` to clear. */
1455
- companyLegalName?: string | '' | unknown | unknown;
1561
+ companyLegalName?: string | "" | unknown | unknown;
1456
1562
  /** @description Postal address of the entity operating the board. Pass `null` to clear. */
1457
- companyAddress?: string | '' | unknown | unknown;
1563
+ companyAddress?: string | "" | unknown | unknown;
1458
1564
  /** @description Public company website URL. Pass `null` to clear. */
1459
- companyWebsiteUrl?: string | '' | unknown | unknown;
1565
+ companyWebsiteUrl?: string | "" | unknown | unknown;
1460
1566
  /** @description Company X (Twitter) handle or profile URL. Pass `null` to clear. */
1461
- companyXHandle?: string | '' | unknown | unknown;
1567
+ companyXHandle?: string | "" | unknown | unknown;
1462
1568
  /** @description Company Facebook page URL. Pass `null` to clear. */
1463
- companyFacebookUrl?: string | '' | unknown | unknown;
1569
+ companyFacebookUrl?: string | "" | unknown | unknown;
1464
1570
  /** @description Company LinkedIn page URL. Pass `null` to clear. */
1465
- companyLinkedinUrl?: string | '' | unknown | unknown;
1571
+ companyLinkedinUrl?: string | "" | unknown | unknown;
1466
1572
  /** @description Label shown for the talent directory in the public navigation. 1–50 characters. */
1467
1573
  talentNavLabel?: string;
1468
1574
  /** @description Custom copy displayed on the password gate. Up to 500 characters. Pass `null` to clear. */
1469
- passwordProtectionMessage?: string | '' | unknown | unknown;
1575
+ passwordProtectionMessage?: string | "" | unknown | unknown;
1470
1576
  /** @description Free-form configuration object merged into the existing config. Reserved keys (e.g. `passwordProtectionEnabled`, `adsenseClientId`, `jobAccessPaywallEnabled`) cannot be set here — use the dedicated endpoints instead. */
1471
1577
  config?: {
1472
1578
  [key: string]: unknown;
@@ -1474,21 +1580,21 @@ interface components {
1474
1580
  };
1475
1581
  Plan: {
1476
1582
  /** @enum {string} */
1477
- object: 'plan';
1583
+ object: "plan";
1478
1584
  id: string;
1479
1585
  name: string;
1480
1586
  description: string | null;
1481
1587
  /** @enum {string} */
1482
- purpose: 'job_posting' | 'talent_access';
1588
+ purpose: "job_posting" | "talent_access";
1483
1589
  /** @enum {string} */
1484
- kind: 'free' | 'subscription' | 'one_time' | 'bundle';
1590
+ kind: "free" | "subscription" | "one_time" | "bundle";
1485
1591
  /** @enum {string|null} */
1486
- billingInterval: 'month' | 'year' | null;
1592
+ billingInterval: "month" | "year" | null;
1487
1593
  isRecommended: boolean;
1488
1594
  displayOrder: number;
1489
1595
  invoiceOnly: boolean;
1490
1596
  /** @enum {string|null} */
1491
- publishTiming: 'on_issue' | 'on_payment' | null;
1597
+ publishTiming: "on_issue" | "on_payment" | null;
1492
1598
  netTermsDays: number | null;
1493
1599
  price: {
1494
1600
  currency: string;
@@ -1501,7 +1607,7 @@ interface components {
1501
1607
  maxActiveJobs: number;
1502
1608
  featuredSlots: number;
1503
1609
  /** @enum {string} */
1504
- featureSelectionMode: 'auto' | 'manual';
1610
+ featureSelectionMode: "auto" | "manual";
1505
1611
  };
1506
1612
  /** @description Talent-access allowances (per billing period). Present only when `purpose` is `talent_access`. `"unlimited"` is a sentinel value. */
1507
1613
  talent?: {
@@ -1511,13 +1617,13 @@ interface components {
1511
1617
  };
1512
1618
  PublicBlogAdjacentPosts: {
1513
1619
  /** @enum {string} */
1514
- object: 'blog_adjacent_posts';
1515
- previous: components['schemas']['PublicBlogPostSummary'] | null;
1516
- next: components['schemas']['PublicBlogPostSummary'] | null;
1620
+ object: "blog_adjacent_posts";
1621
+ previous: components["schemas"]["PublicBlogPostSummary"] | null;
1622
+ next: components["schemas"]["PublicBlogPostSummary"] | null;
1517
1623
  };
1518
- PublicBlogAuthor: components['schemas']['PublicBlogAuthorEmbed'] & {
1624
+ PublicBlogAuthor: components["schemas"]["PublicBlogAuthorEmbed"] & {
1519
1625
  /** @enum {string} */
1520
- object: 'public_blog_author';
1626
+ object: "public_blog_author";
1521
1627
  };
1522
1628
  PublicBlogAuthorEmbed: {
1523
1629
  id: string;
@@ -1530,7 +1636,7 @@ interface components {
1530
1636
  linkedinUrl: string | null;
1531
1637
  githubUrl: string | null;
1532
1638
  };
1533
- PublicBlogPost: components['schemas']['PublicBlogPostSummary'] & {
1639
+ PublicBlogPost: components["schemas"]["PublicBlogPostSummary"] & {
1534
1640
  html: string | null;
1535
1641
  ogImageUrl: string | null;
1536
1642
  featureImageCaption: string | null;
@@ -1542,7 +1648,7 @@ interface components {
1542
1648
  PublicBlogPostSummary: {
1543
1649
  id: string;
1544
1650
  /** @enum {string} */
1545
- object: 'public_blog_post';
1651
+ object: "public_blog_post";
1546
1652
  title: string;
1547
1653
  slug: string;
1548
1654
  featured: boolean;
@@ -1553,8 +1659,8 @@ interface components {
1553
1659
  publishedAt: string | null;
1554
1660
  canonicalUrl: string | null;
1555
1661
  createdAt: string;
1556
- authors: components['schemas']['PublicBlogAuthorEmbed'][];
1557
- tags: components['schemas']['PublicBlogTagEmbed'][];
1662
+ authors: components["schemas"]["PublicBlogAuthorEmbed"][];
1663
+ tags: components["schemas"]["PublicBlogTagEmbed"][];
1558
1664
  };
1559
1665
  PublicBlogSearchBody: {
1560
1666
  /** @description Free-text search query. Up to 200 characters. */
@@ -1564,9 +1670,9 @@ interface components {
1564
1670
  /** @description A limit on the number of objects to be returned. Limit can range between 1 and 50. */
1565
1671
  limit?: number;
1566
1672
  };
1567
- PublicBlogTag: components['schemas']['PublicBlogTagEmbed'] & {
1673
+ PublicBlogTag: components["schemas"]["PublicBlogTagEmbed"] & {
1568
1674
  /** @enum {string} */
1569
- object: 'public_blog_tag';
1675
+ object: "public_blog_tag";
1570
1676
  };
1571
1677
  PublicBlogTagEmbed: {
1572
1678
  id: string;
@@ -1576,7 +1682,7 @@ interface components {
1576
1682
  };
1577
1683
  PublicBoardContext: {
1578
1684
  /** @enum {string} */
1579
- object: 'public_board';
1685
+ object: "public_board";
1580
1686
  /** @description Immutable board identifier (`boards_…`). */
1581
1687
  id: string;
1582
1688
  /** @description Mutable canonical board slug. */
@@ -1650,7 +1756,7 @@ interface components {
1650
1756
  * @description String representing the object's type. Objects of the same type share the same value.
1651
1757
  * @enum {string}
1652
1758
  */
1653
- object: 'public_job';
1759
+ object: "public_job";
1654
1760
  /** @description The job title. */
1655
1761
  title: string;
1656
1762
  /** @description URL-friendly slug used in public board URLs, or `null` if no slug is set. */
@@ -1659,24 +1765,24 @@ interface components {
1659
1765
  * @description Current status of the job. One of `draft`, `published`, `expired`, or `archived`.
1660
1766
  * @enum {string}
1661
1767
  */
1662
- status: 'draft' | 'published' | 'expired' | 'archived';
1768
+ status: "draft" | "published" | "expired" | "archived";
1663
1769
  /** @description Identifier of the company the job belongs to, or `null` if no company is attached. */
1664
1770
  companyId: string | null;
1665
1771
  /**
1666
1772
  * @description Employment type of the role, or `null` if not specified.
1667
1773
  * @enum {string|null}
1668
1774
  */
1669
- employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1775
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1670
1776
  /**
1671
1777
  * @description Whether the role is on-site, hybrid, or fully remote, or `null` if not specified.
1672
1778
  * @enum {string|null}
1673
1779
  */
1674
- remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1780
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
1675
1781
  /**
1676
1782
  * @description Seniority level of the role, or `null` if not specified.
1677
1783
  * @enum {string|null}
1678
1784
  */
1679
- seniority: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive' | null;
1785
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
1680
1786
  /** @description Minimum salary in `salaryCurrency` units, or `null` if not specified. */
1681
1787
  salaryMin: number | null;
1682
1788
  /** @description Maximum salary in `salaryCurrency` units, or `null` if not specified. */
@@ -1687,7 +1793,7 @@ interface components {
1687
1793
  * @description Period the salary range is quoted against, or `null` if no salary is specified.
1688
1794
  * @enum {string|null}
1689
1795
  */
1690
- salaryTimeframe: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour' | null;
1796
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
1691
1797
  /** @description Whether the job appears in featured slots on the public board. */
1692
1798
  isFeatured: boolean;
1693
1799
  /** @description Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime. */
@@ -1698,7 +1804,7 @@ interface components {
1698
1804
  createdAt: string;
1699
1805
  /** @description Time at which the job was last updated. ISO 8601 datetime. */
1700
1806
  updatedAt: string;
1701
- links: components['schemas']['PublicJobLinks'];
1807
+ links: components["schemas"]["PublicJobLinks"];
1702
1808
  /** @description Long-form description of the role, or `null` if not specified. */
1703
1809
  description: string | null;
1704
1810
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
@@ -1726,9 +1832,9 @@ interface components {
1726
1832
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
1727
1833
  * @enum {string}
1728
1834
  */
1729
- remoteSponsorship: 'yes' | 'no' | 'unknown';
1835
+ remoteSponsorship: "yes" | "no" | "unknown";
1730
1836
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
1731
- educationRequirements: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
1837
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
1732
1838
  /** @description Minimum required experience in months, or `null` if not specified. */
1733
1839
  experienceMonths: number | null;
1734
1840
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. `null` if not specified. */
@@ -1737,12 +1843,12 @@ interface components {
1737
1843
  * @description Period denominator for `inOfficeFrequency`, or `null` if not specified.
1738
1844
  * @enum {string|null}
1739
1845
  */
1740
- inOfficePeriod: 'per_week' | 'per_month' | 'per_year' | null;
1846
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
1741
1847
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
1742
1848
  inOfficeFrequency: number | null;
1743
- company: components['schemas']['JobCompany'];
1849
+ company: components["schemas"]["JobCompany"];
1744
1850
  /** @description Physical office locations associated with the job. */
1745
- officeLocations: components['schemas']['JobOfficeLocation'][];
1851
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
1746
1852
  /** @description Resolved job categories (slug + board display name) — same shape as the card; names joined server-side. */
1747
1853
  categories: {
1748
1854
  slug: string;
@@ -1761,21 +1867,21 @@ interface components {
1761
1867
  };
1762
1868
  PublicJobAlertConfirmation: {
1763
1869
  /** @enum {string} */
1764
- object: 'job_alert_confirmation';
1870
+ object: "job_alert_confirmation";
1765
1871
  /**
1766
1872
  * @description Outcome of the confirmation. Always returned with HTTP 200 so the consumer renders by status (the token may be valid, stale, or unknown).
1767
1873
  * @enum {string}
1768
1874
  */
1769
- status: 'confirmed' | 'already_confirmed' | 'expired' | 'not_found';
1875
+ status: "confirmed" | "already_confirmed" | "expired" | "not_found";
1770
1876
  };
1771
1877
  PublicJobAlertManageResult: {
1772
1878
  /** @enum {string} */
1773
- object: 'job_alert_manage_result';
1879
+ object: "job_alert_manage_result";
1774
1880
  success: boolean;
1775
1881
  };
1776
1882
  PublicJobAlertManageState: {
1777
1883
  /** @enum {string} */
1778
- object: 'job_alert_manage_state';
1884
+ object: "job_alert_manage_state";
1779
1885
  email: string;
1780
1886
  confirmed: boolean;
1781
1887
  unsubscribed: boolean;
@@ -1798,18 +1904,18 @@ interface components {
1798
1904
  };
1799
1905
  PublicJobAlertResend: {
1800
1906
  /** @enum {string} */
1801
- object: 'job_alert_confirmation_resend';
1907
+ object: "job_alert_confirmation_resend";
1802
1908
  /** @enum {string} */
1803
- status: 'sent' | 'not_found' | 'already_confirmed' | 'throttled' | 'send_failed';
1909
+ status: "sent" | "not_found" | "already_confirmed" | "throttled" | "send_failed";
1804
1910
  };
1805
1911
  PublicJobAlertSubscription: {
1806
1912
  /** @enum {string} */
1807
- object: 'job_alert_subscription';
1913
+ object: "job_alert_subscription";
1808
1914
  /**
1809
1915
  * @description `created` on a new subscription; `duplicate` if it existed.
1810
1916
  * @enum {string}
1811
1917
  */
1812
- status: 'created' | 'duplicate';
1918
+ status: "created" | "duplicate";
1813
1919
  /** @description True when a double-opt-in confirmation email was sent. */
1814
1920
  requiresConfirmation: boolean;
1815
1921
  /** @description True if the subscriber was already email-confirmed. */
@@ -1818,7 +1924,7 @@ interface components {
1818
1924
  PublicJobCard: {
1819
1925
  id: string;
1820
1926
  /** @enum {string} */
1821
- object: 'job_card';
1927
+ object: "job_card";
1822
1928
  slug: string;
1823
1929
  title: string;
1824
1930
  /**
@@ -1827,9 +1933,9 @@ interface components {
1827
1933
  */
1828
1934
  publishedAt: string | null;
1829
1935
  /** @enum {string|null} */
1830
- employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1936
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1831
1937
  /** @enum {string|null} */
1832
- remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1938
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
1833
1939
  /** @description Display region label for remote jobs (e.g. "United States", "Worldwide"); `null` for non-remote jobs. */
1834
1940
  remoteLocationLabel: string | null;
1835
1941
  salaryMin: number | null;
@@ -1872,7 +1978,7 @@ interface components {
1872
1978
  };
1873
1979
  PublicPlace: {
1874
1980
  /** @enum {string} */
1875
- object: 'place';
1981
+ object: "place";
1876
1982
  /** @description Stable place identity (locations-tree edge endpoint). */
1877
1983
  id: string;
1878
1984
  /** @description Parent place's `id`; `null` for a root place. */
@@ -1893,17 +1999,17 @@ interface components {
1893
1999
  * @description Result ordering. `relevance` (default) ranks by search relevance with featured jobs first; `newest` orders by publish date and `salary_high` by salary (no-salary jobs last). Any explicit sort unpins featured jobs.
1894
2000
  * @enum {string}
1895
2001
  */
1896
- sort?: 'relevance' | 'newest' | 'salary_high';
2002
+ sort?: "relevance" | "newest" | "salary_high";
1897
2003
  /** @description Optional faceted filters to narrow search results. Multi-value filters match jobs in any of the supplied values; range filters accept `gte` and `lte` bounds. */
1898
2004
  filters?: {
1899
2005
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
1900
2006
  companyId?: string[];
1901
2007
  /** @description Only return jobs with any of the given remote-work options. Up to 10 values. */
1902
- remoteOption?: ('on_site' | 'hybrid' | 'remote')[];
2008
+ remoteOption?: ("on_site" | "hybrid" | "remote")[];
1903
2009
  /** @description Only return jobs with any of the given employment types. Up to 10 values. */
1904
- employmentType?: ('full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other')[];
2010
+ employmentType?: ("full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other")[];
1905
2011
  /** @description Only return jobs at any of the given seniority levels. Up to 10 values. */
1906
- seniority?: ('entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive')[];
2012
+ seniority?: ("entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive")[];
1907
2013
  /** @description Range filter on the job's `publishedAt` timestamp. */
1908
2014
  publishedAt?: {
1909
2015
  /**
@@ -1937,9 +2043,9 @@ interface components {
1937
2043
  };
1938
2044
  PublicTaxonomyResolution: {
1939
2045
  /** @enum {string} */
1940
- object: 'taxonomy_resolution';
2046
+ object: "taxonomy_resolution";
1941
2047
  /** @enum {string} */
1942
- type: 'category' | 'skill' | 'place' | 'market';
2048
+ type: "category" | "skill" | "place" | "market";
1943
2049
  /** @description Immutable English source slug — the semantic-search key. */
1944
2050
  sourceSlug: string;
1945
2051
  /** @description Board-language URL slug (the `<link rel=canonical>` target). */
@@ -1948,7 +2054,7 @@ interface components {
1948
2054
  displayName: string;
1949
2055
  /** @description The canonical slug to emit a 308 redirect to when the inbound slug differs; `null` otherwise. */
1950
2056
  redirectTo: string | null;
1951
- geo: components['schemas']['TaxonomyGeo'];
2057
+ geo: components["schemas"]["TaxonomyGeo"];
1952
2058
  };
1953
2059
  PublicVerifyBoardPasswordBody: {
1954
2060
  /** @description The board password. */
@@ -1963,7 +2069,7 @@ interface components {
1963
2069
  };
1964
2070
  RedirectResolution: {
1965
2071
  /** @enum {string} */
1966
- object: 'redirect_resolution';
2072
+ object: "redirect_resolution";
1967
2073
  path: string;
1968
2074
  /** @description The redirect target (board-relative), or `null` when no redirect matches. The consumer 308s to `target`, or 404s when `null`. */
1969
2075
  target: string | null;
@@ -2003,7 +2109,7 @@ interface components {
2003
2109
  * @description Hint indicating whether `token` is an `access_token` or `refresh_token`. Optional.
2004
2110
  * @enum {string}
2005
2111
  */
2006
- token_type_hint?: 'access_token' | 'refresh_token';
2112
+ token_type_hint?: "access_token" | "refresh_token";
2007
2113
  /** @description OAuth client identifier. May be supplied here or via HTTP Basic authentication. */
2008
2114
  client_id?: string;
2009
2115
  /** @description OAuth client secret. May be supplied here or via HTTP Basic authentication. */
@@ -2011,7 +2117,7 @@ interface components {
2011
2117
  };
2012
2118
  SalaryCompanyIndexItem: {
2013
2119
  /** @enum {string} */
2014
- object: 'salary_company';
2120
+ object: "salary_company";
2015
2121
  companySlug: string;
2016
2122
  companyName: string;
2017
2123
  logoPath: string | null;
@@ -2022,7 +2128,7 @@ interface components {
2022
2128
  };
2023
2129
  SalaryLocationIndexItem: {
2024
2130
  /** @enum {string} */
2025
- object: 'salary_location';
2131
+ object: "salary_location";
2026
2132
  placeSlug: string;
2027
2133
  placeName: string;
2028
2134
  /** @description Slug of the parent place; `null` for a top-level node. */
@@ -2033,7 +2139,7 @@ interface components {
2033
2139
  };
2034
2140
  SalarySkillIndexItem: {
2035
2141
  /** @enum {string} */
2036
- object: 'salary_skill';
2142
+ object: "salary_skill";
2037
2143
  slug: string;
2038
2144
  name: string;
2039
2145
  avgSalaryMin: number;
@@ -2045,7 +2151,7 @@ interface components {
2045
2151
  };
2046
2152
  SalaryTitleIndexItem: {
2047
2153
  /** @enum {string} */
2048
- object: 'salary_title';
2154
+ object: "salary_title";
2049
2155
  slug: string;
2050
2156
  name: string;
2051
2157
  avgSalaryMin: number;
@@ -2057,7 +2163,7 @@ interface components {
2057
2163
  };
2058
2164
  SalesLedPlan: {
2059
2165
  /** @enum {string} */
2060
- object: 'sales_led_plan';
2166
+ object: "sales_led_plan";
2061
2167
  id: string;
2062
2168
  name: string;
2063
2169
  description: string;
@@ -2076,17 +2182,17 @@ interface components {
2076
2182
  /** @description Saved-job row ID. */
2077
2183
  id: string;
2078
2184
  /** @enum {string} */
2079
- object: 'saved_job';
2185
+ object: "saved_job";
2080
2186
  /** @description The saved job — also the DELETE path key. */
2081
2187
  jobId: string;
2082
2188
  /** Format: date-time */
2083
2189
  savedAt: string;
2084
- job: components['schemas']['PublicJob'];
2190
+ job: components["schemas"]["PublicJob"];
2085
2191
  };
2086
2192
  SearchBlogPostsBody: {
2087
2193
  query?: string;
2088
2194
  /** @enum {string} */
2089
- status?: 'draft' | 'scheduled' | 'published';
2195
+ status?: "draft" | "scheduled" | "published";
2090
2196
  cursor?: string | null;
2091
2197
  limit?: number;
2092
2198
  };
@@ -2107,15 +2213,15 @@ interface components {
2107
2213
  /** @description Optional faceted filters to narrow search results. Multi-value filters match jobs in any of the supplied values; range filters accept `gte` and `lte` bounds. */
2108
2214
  filters?: {
2109
2215
  /** @description Only return jobs in any of the given statuses. Up to 10 values. */
2110
- status?: ('draft' | 'published' | 'expired' | 'archived')[];
2216
+ status?: ("draft" | "published" | "expired" | "archived")[];
2111
2217
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
2112
2218
  companyId?: string[];
2113
2219
  /** @description Only return jobs with any of the given remote-work options. Up to 10 values. */
2114
- remoteOption?: ('on_site' | 'hybrid' | 'remote')[];
2220
+ remoteOption?: ("on_site" | "hybrid" | "remote")[];
2115
2221
  /** @description Only return jobs with any of the given employment types. Up to 10 values. */
2116
- employmentType?: ('full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other')[];
2222
+ employmentType?: ("full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other")[];
2117
2223
  /** @description Only return jobs at any of the given seniority levels. Up to 10 values. */
2118
- seniority?: ('entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive')[];
2224
+ seniority?: ("entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive")[];
2119
2225
  /** @description Range filter on the job's `publishedAt` timestamp. */
2120
2226
  publishedAt?: {
2121
2227
  /**
@@ -2142,25 +2248,25 @@ interface components {
2142
2248
  /** @description Whether AdSense placements are rendered on the public board. */
2143
2249
  adsenseEnabled?: boolean;
2144
2250
  /** @description AdSense publisher ID in `ca-pub-XXXXXXXXXXXXXXXX` format. Pass an empty string or `null` to clear. */
2145
- adsenseClientId?: string | '' | unknown | unknown;
2251
+ adsenseClientId?: string | "" | unknown | unknown;
2146
2252
  /** @description Map of placement key to slot configuration. Placement keys are lowercase alphanumeric with `-`, `_`, `.`, or `:`. */
2147
2253
  adsenseSlots?: {
2148
- [key: string]: components['schemas']['SettingsAdsenseSlot'];
2254
+ [key: string]: components["schemas"]["SettingsAdsenseSlot"];
2149
2255
  };
2150
2256
  /** @description Contents to serve from `/ads.txt`. Up to 2,000 characters. Pass an empty string or `null` to clear. */
2151
- adsTxt?: string | '' | unknown | unknown;
2257
+ adsTxt?: string | "" | unknown | unknown;
2152
2258
  };
2153
2259
  SettingsAdsenseSlot: {
2154
2260
  /** @description Whether this placement is rendered. */
2155
2261
  enabled: boolean;
2156
2262
  /** @description Ten-digit AdSense slot ID. Pass an empty string or `null` to clear. */
2157
- slotId: string | '' | unknown | unknown;
2263
+ slotId: string | "" | unknown | unknown;
2158
2264
  /** @description AdSense layout type for the placement. */
2159
- layout?: ('auto' | 'in-article' | 'in-feed' | 'fluid') | '' | unknown | unknown;
2265
+ layout?: ("auto" | "in-article" | "in-feed" | "fluid") | "" | unknown | unknown;
2160
2266
  /** @description AdSense ad format. */
2161
- format?: ('auto' | 'horizontal' | 'vertical' | 'rectangle' | 'responsive') | '' | unknown | unknown;
2267
+ format?: ("auto" | "horizontal" | "vertical" | "rectangle" | "responsive") | "" | unknown | unknown;
2162
2268
  /** @description Visual style override for the placement. */
2163
- style?: ('default' | 'light' | 'dark' | 'contrast') | '' | unknown | unknown;
2269
+ style?: ("default" | "light" | "dark" | "contrast") | "" | unknown | unknown;
2164
2270
  /** @description How often the placement is shown (e.g. once every N items). */
2165
2271
  frequency?: number | unknown | unknown;
2166
2272
  };
@@ -2194,7 +2300,7 @@ interface components {
2194
2300
  };
2195
2301
  SkillLocationSalary: {
2196
2302
  /** @enum {string} */
2197
- object: 'skill_location_salary';
2303
+ object: "skill_location_salary";
2198
2304
  skillSourceSlug: string;
2199
2305
  skillCanonicalSlug: string;
2200
2306
  locationSourceSlug: string;
@@ -2261,16 +2367,16 @@ interface components {
2261
2367
  };
2262
2368
  SkillLocationsIndex: {
2263
2369
  /** @enum {string} */
2264
- object: 'skill_locations_index';
2370
+ object: "skill_locations_index";
2265
2371
  sourceSlug: string;
2266
2372
  canonicalSlug: string;
2267
2373
  skillName: string;
2268
2374
  currency: string;
2269
- locations: components['schemas']['SalaryLocationIndexItem'][];
2375
+ locations: components["schemas"]["SalaryLocationIndexItem"][];
2270
2376
  };
2271
2377
  SkillSalaryDetail: {
2272
2378
  /** @enum {string} */
2273
- object: 'skill_salary_detail';
2379
+ object: "skill_salary_detail";
2274
2380
  /** @description Immutable English source slug — the salary-stats key. */
2275
2381
  sourceSlug: string;
2276
2382
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -2333,7 +2439,7 @@ interface components {
2333
2439
  };
2334
2440
  TalentDirectoryEntry: {
2335
2441
  /** @enum {string} */
2336
- object: 'talent_directory_entry';
2442
+ object: "talent_directory_entry";
2337
2443
  handle: string | null;
2338
2444
  displayName: string | null;
2339
2445
  headline: string | null;
@@ -2356,7 +2462,7 @@ interface components {
2356
2462
  };
2357
2463
  TalentProfile: {
2358
2464
  /** @enum {string} */
2359
- object: 'talent_profile';
2465
+ object: "talent_profile";
2360
2466
  handle: string | null;
2361
2467
  displayName: string | null;
2362
2468
  headline: string | null;
@@ -2415,7 +2521,7 @@ interface components {
2415
2521
  } | null;
2416
2522
  TitleLocationSalary: {
2417
2523
  /** @enum {string} */
2418
- object: 'title_location_salary';
2524
+ object: "title_location_salary";
2419
2525
  categorySourceSlug: string;
2420
2526
  categoryCanonicalSlug: string;
2421
2527
  locationSourceSlug: string;
@@ -2482,16 +2588,16 @@ interface components {
2482
2588
  };
2483
2589
  TitleLocationsIndex: {
2484
2590
  /** @enum {string} */
2485
- object: 'title_locations_index';
2591
+ object: "title_locations_index";
2486
2592
  sourceSlug: string;
2487
2593
  canonicalSlug: string;
2488
2594
  categoryName: string;
2489
2595
  currency: string;
2490
- locations: components['schemas']['SalaryLocationIndexItem'][];
2596
+ locations: components["schemas"]["SalaryLocationIndexItem"][];
2491
2597
  };
2492
2598
  TitleSalaryDetail: {
2493
2599
  /** @enum {string} */
2494
- object: 'title_salary_detail';
2600
+ object: "title_salary_detail";
2495
2601
  /** @description Immutable English source slug — the salary-stats key. */
2496
2602
  sourceSlug: string;
2497
2603
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -2563,7 +2669,7 @@ interface components {
2563
2669
  * @description OAuth grant type. Either `authorization_code` to exchange an authorization code for a new token pair, or `refresh_token` to exchange a refresh token for a new token pair.
2564
2670
  * @enum {string}
2565
2671
  */
2566
- grant_type: 'authorization_code' | 'refresh_token';
2672
+ grant_type: "authorization_code" | "refresh_token";
2567
2673
  /** @description Authorization code returned from the authorization endpoint. Required when `grant_type` is `authorization_code`. */
2568
2674
  code?: string;
2569
2675
  /** @description Redirect URI used in the original authorization request. Must match exactly. Required when `grant_type` is `authorization_code`. */
@@ -2586,7 +2692,7 @@ interface components {
2586
2692
  * @description Always `Bearer`.
2587
2693
  * @enum {string}
2588
2694
  */
2589
- token_type: 'Bearer';
2695
+ token_type: "Bearer";
2590
2696
  /** @description Lifetime of the access token, in seconds. */
2591
2697
  expires_in: number;
2592
2698
  /** @description Newly issued refresh token. Single-use; reusing it revokes the entire token chain. */
@@ -2594,6 +2700,12 @@ interface components {
2594
2700
  /** @description Space-separated list of scopes granted on the issued token. */
2595
2701
  scope: string;
2596
2702
  };
2703
+ UnsubscribeBody: {
2704
+ boardUserId: string;
2705
+ /** @enum {string} */
2706
+ channel: "messageEmails" | "applicationEmails";
2707
+ token: string;
2708
+ };
2597
2709
  UpdateAuthorBody: {
2598
2710
  /** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
2599
2711
  slug?: string;
@@ -2608,7 +2720,7 @@ interface components {
2608
2720
  * @description Author visibility status. One of `active` or `inactive`.
2609
2721
  * @enum {string}
2610
2722
  */
2611
- status?: 'active' | 'inactive';
2723
+ status?: "active" | "inactive";
2612
2724
  /** @description Storage ID of an uploaded avatar image (from `POST /v1/media/upload`). Pass `null` to clear an existing avatar. */
2613
2725
  avatarStorageId?: string | null;
2614
2726
  /** @description The author's personal website URL. Normalized to a canonical URL when stored. */
@@ -2646,7 +2758,21 @@ interface components {
2646
2758
  publishedAt?: string;
2647
2759
  title?: string;
2648
2760
  /** @enum {string} */
2649
- status?: 'draft' | 'scheduled' | 'published';
2761
+ status?: "draft" | "scheduled" | "published";
2762
+ };
2763
+ UpdateCandidateProfileBody: {
2764
+ displayName?: string;
2765
+ bio?: string;
2766
+ handle?: string;
2767
+ headline?: string;
2768
+ location?: string;
2769
+ /** @enum {string} */
2770
+ profileVisibility?: "hidden" | "logged_in_only" | "public";
2771
+ /** @enum {string} */
2772
+ jobSearchStatus?: "actively_looking" | "open_to_offers" | "not_looking";
2773
+ /** @enum {string} */
2774
+ jobSearchStatusVisibleTo?: "everyone" | "employers_only";
2775
+ openToRelocate?: boolean;
2650
2776
  };
2651
2777
  UpdateCompanyBody: {
2652
2778
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
@@ -2666,6 +2792,31 @@ interface components {
2666
2792
  /** @description URL-friendly slug for the company. */
2667
2793
  slug?: string;
2668
2794
  };
2795
+ UpdateEducationBody: {
2796
+ institutionName?: string;
2797
+ institutionUrl?: string;
2798
+ degree?: string;
2799
+ fieldOfStudy?: string;
2800
+ grade?: string;
2801
+ activitiesAndSocieties?: string;
2802
+ startDate?: string;
2803
+ endDate?: string;
2804
+ description?: string;
2805
+ sortOrder?: number;
2806
+ };
2807
+ UpdateExperienceBody: {
2808
+ title?: string;
2809
+ companyName?: string;
2810
+ startDate?: string;
2811
+ companyUrl?: string;
2812
+ location?: string;
2813
+ employmentType?: string;
2814
+ locationType?: string;
2815
+ foundVia?: string;
2816
+ endDate?: string;
2817
+ description?: string;
2818
+ sortOrder?: number;
2819
+ };
2669
2820
  UpdateJobBody: {
2670
2821
  /** @description Identifier of the company the job belongs to. */
2671
2822
  companyId?: string;
@@ -2677,22 +2828,22 @@ interface components {
2677
2828
  * @description Employment type of the role.
2678
2829
  * @enum {string}
2679
2830
  */
2680
- employmentType?: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other';
2831
+ employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
2681
2832
  /**
2682
2833
  * @description Whether the role is on-site, hybrid, or fully remote.
2683
2834
  * @enum {string}
2684
2835
  */
2685
- remoteOption?: 'on_site' | 'hybrid' | 'remote';
2836
+ remoteOption?: "on_site" | "hybrid" | "remote";
2686
2837
  /** @description Where remote candidates must hold work authorization. Each entry is the smallest relevant scope: `worldwide`, a `world_region` (EMEA / LATAM / NA / APAC), a `continent`, a `region`, a `subregion`, a `custom` group (e.g. `EU`), a `country` (ISO 3166-1 alpha-2), or a `subdivision` (ISO 3166-2). Subdivisions auto-imply their parent country in the derived `remoteWorkPermitCountryCodes` output. Worldwide is mutually exclusive with all other entries. The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-permits`. Pass `[]` to clear an existing constraint. */
2687
2838
  remotePermits?: {
2688
2839
  /** @enum {string} */
2689
- type: 'worldwide' | 'world_region' | 'continent' | 'region' | 'subregion' | 'subdivision' | 'country' | 'custom';
2840
+ type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
2690
2841
  value: string;
2691
2842
  }[];
2692
2843
  /** @description Where remote candidates must be timezone-compatible. Each entry mirrors the `remotePermits` shape (`world_region`, `continent`, `region`, `subregion`, `country`) plus `timezone` (specific IANA name with optional `plusMinus` ±N hours expansion) and `all` (every timezone — equivalent of `worldwide` for permits). The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-timezones`. **When omitted on POST**, the server auto-derives this from `remotePermits` (or `[{all,all}]` if neither was provided). **PATCH never auto-re-derives** — once set, only an explicit replacement updates the stored value, even when `remotePermits` changes. Pass `[]` to clear an existing constraint. */
2693
2844
  remoteTimezones?: {
2694
2845
  /** @enum {string} */
2695
- type: 'all' | 'world_region' | 'continent' | 'region' | 'subregion' | 'country' | 'timezone';
2846
+ type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
2696
2847
  value: string;
2697
2848
  plusMinus?: number;
2698
2849
  }[];
@@ -2700,12 +2851,12 @@ interface components {
2700
2851
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
2701
2852
  * @enum {string}
2702
2853
  */
2703
- remoteSponsorship?: 'yes' | 'no' | 'unknown';
2854
+ remoteSponsorship?: "yes" | "no" | "unknown";
2704
2855
  /**
2705
2856
  * @description Seniority level of the role.
2706
2857
  * @enum {string}
2707
2858
  */
2708
- seniority?: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive';
2859
+ seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
2709
2860
  /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (which is normalized to `mailto:` form). */
2710
2861
  applicationUrl?: string;
2711
2862
  /** @description Minimum salary, in `salaryCurrency` units. */
@@ -2718,7 +2869,7 @@ interface components {
2718
2869
  * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
2719
2870
  * @enum {string}
2720
2871
  */
2721
- salaryTimeframe?: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour';
2872
+ salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
2722
2873
  /** @description Whether the job appears in featured slots on the public board. */
2723
2874
  isFeatured?: boolean;
2724
2875
  /** @description Job expiry as a Unix epoch in milliseconds. On create, omitted or `null` defaults to 30 days from creation. On PATCH, pass `null` to clear an existing expiry. Past timestamps remove the job from the public board. */
@@ -2726,7 +2877,7 @@ interface components {
2726
2877
  /** @description Time at which the job was first published, as a Unix epoch in milliseconds. When omitted on create with `status: "published"`, the server stamps the current time. Useful for bulk-importing historical jobs while preserving original publication dates. PATCH may overwrite an existing value but cannot clear it. */
2727
2878
  publishedAt?: number;
2728
2879
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
2729
- educationRequirements?: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
2880
+ educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
2730
2881
  /** @description Minimum required experience, expressed in months. */
2731
2882
  experienceMonths?: number;
2732
2883
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
@@ -2735,11 +2886,11 @@ interface components {
2735
2886
  * @description Period denominator for `inOfficeFrequency`.
2736
2887
  * @enum {string}
2737
2888
  */
2738
- inOfficePeriod?: 'per_week' | 'per_month' | 'per_year';
2889
+ inOfficePeriod?: "per_week" | "per_month" | "per_year";
2739
2890
  /** @description How often the candidate must be in-office over `inOfficePeriod`. */
2740
2891
  inOfficeFrequency?: number;
2741
2892
  /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
2742
- officeLocations?: components['schemas']['JobOfficeLocationInput'][];
2893
+ officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
2743
2894
  /** @description An external identifier for the job from your own system, such as an ATS requisition ID. Use this value to look up the job later via `GET /v1/jobs?externalId=...` for deduplication. Scoped per-account: two different accounts may reuse the same `externalId` without collision. Up to 255 characters. */
2744
2895
  externalId?: string;
2745
2896
  /** @description Board-defined custom-field values, keyed by the field `key` (definitions, including type and option keys, are published at `GET /v1/settings/job-form`). Writes are **additive**: on `PATCH` a key you send is set/overwritten and a key you omit is preserved (unsent keys are never cleared); on `POST` this initializes the bag. Send a key with an intentional-empty value — `null`, `""`, or `[]` — to **clear** it (`""`/`null` clear any type; `[]` clears a `multi_select`); `false` and `0` are kept as real values. Values must match the field type and `single_select`/`multi_select` must use defined option **keys** (not labels); a wrong-typed value is rejected (`custom_field_wrong_type`), never silently cleared. Unknown keys are ignored. The stored bag never contains `null`/empty values. */
@@ -2749,6 +2900,20 @@ interface components {
2749
2900
  /** @description The job title. */
2750
2901
  title?: string;
2751
2902
  };
2903
+ UpdateLanguagesBody: {
2904
+ languages: {
2905
+ name: string;
2906
+ proficiency: string;
2907
+ }[];
2908
+ };
2909
+ UpdateNotificationPreferenceBody: {
2910
+ /** @enum {string} */
2911
+ channel: "messageEmails" | "applicationEmails";
2912
+ subscribed: boolean;
2913
+ };
2914
+ UpdateSkillsBody: {
2915
+ skills: string[];
2916
+ };
2752
2917
  UpdateTagBody: {
2753
2918
  /** @description URL-friendly slug for the tag. Auto-generated from `name` when omitted. */
2754
2919
  slug?: string;
@@ -2758,7 +2923,7 @@ interface components {
2758
2923
  * @description Tag visibility. One of `public` or `internal`.
2759
2924
  * @enum {string}
2760
2925
  */
2761
- visibility?: 'public' | 'internal';
2926
+ visibility?: "public" | "internal";
2762
2927
  /** @description SEO meta title for the tag page. */
2763
2928
  metaTitle?: string;
2764
2929
  /** @description SEO meta description for the tag page. */
@@ -2773,7 +2938,7 @@ interface components {
2773
2938
  * @description String representing the object's type. Objects of the same type share the same value.
2774
2939
  * @enum {string}
2775
2940
  */
2776
- object: 'usage';
2941
+ object: "usage";
2777
2942
  /** @description Number of jobs currently in `published` status. */
2778
2943
  activeJobs: number;
2779
2944
  /** @description Plan-enforced cap on the number of published jobs. */
@@ -3006,7 +3171,7 @@ declare function isConflict(e: unknown): e is BoardApiError;
3006
3171
  * constant because the package is platform-neutral and cannot read
3007
3172
  * package.json at runtime.
3008
3173
  */
3009
- declare const SDK_VERSION = "1.19.1";
3174
+ declare const SDK_VERSION = "1.20.0";
3010
3175
 
3011
3176
  type BoardUser = Schemas['BoardUser'];
3012
3177
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -3199,6 +3364,27 @@ type SavedJobsListQuery = {
3199
3364
  limit?: number;
3200
3365
  };
3201
3366
  type SaveJobBody = Schemas['SaveJobBody'];
3367
+ /** The authenticated user's lean candidate profile singleton. */
3368
+ type CandidateProfile = Schemas['CandidateProfile'];
3369
+ /** Optional-field merge-patch body for `board.me.profile.update`. */
3370
+ type UpdateCandidateProfileBody = Schemas['UpdateCandidateProfileBody'];
3371
+ /** The result of `board.me.profile.handleAvailable(handle)`. */
3372
+ type HandleAvailability = Schemas['HandleAvailability'];
3373
+ type CandidateExperience = Schemas['CandidateExperience'];
3374
+ type CreateExperienceBody = Schemas['CreateExperienceBody'];
3375
+ type UpdateExperienceBody = Schemas['UpdateExperienceBody'];
3376
+ type CandidateEducation = Schemas['CandidateEducation'];
3377
+ type CreateEducationBody = Schemas['CreateEducationBody'];
3378
+ type UpdateEducationBody = Schemas['UpdateEducationBody'];
3379
+ type CandidateSkill = Schemas['CandidateSkill'];
3380
+ type UpdateSkillsBody = Schemas['UpdateSkillsBody'];
3381
+ type CandidateLanguage = Schemas['CandidateLanguage'];
3382
+ type UpdateLanguagesBody = Schemas['UpdateLanguagesBody'];
3383
+ /** The result of `board.me.profile.uploadAvatar(file)`. */
3384
+ type CandidateAvatar = Schemas['CandidateAvatar'];
3385
+ type NotificationPreference = Schemas['NotificationPreference'];
3386
+ type UpdateNotificationPreferenceBody = Schemas['UpdateNotificationPreferenceBody'];
3387
+ type UnsubscribeBody = Schemas['UnsubscribeBody'];
3202
3388
 
3203
3389
  type JobAlertFrequency = 'daily' | 'weekly';
3204
3390
  type JobAlertRemoteOption = 'on_site' | 'hybrid' | 'remote';
@@ -3934,6 +4120,173 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3934
4120
  displayName: string | null;
3935
4121
  emailVerified: boolean;
3936
4122
  }>;
4123
+ delete(options?: FetchOptions): Promise<void>;
4124
+ profile: {
4125
+ retrieve(query?: Record<string, never>, options?: FetchOptions): Promise<{
4126
+ id: string;
4127
+ object: "candidate_profile";
4128
+ displayName: string | null;
4129
+ bio: string | null;
4130
+ avatarUrl: string | null;
4131
+ handle: string | null;
4132
+ headline: string | null;
4133
+ location: string | null;
4134
+ profileVisibility: "hidden" | "logged_in_only" | "public";
4135
+ jobSearchStatus: "actively_looking" | "open_to_offers" | "not_looking";
4136
+ jobSearchStatusVisibleTo: "everyone" | "employers_only";
4137
+ openToRelocate: boolean;
4138
+ }>;
4139
+ update(body: UpdateCandidateProfileBody, query?: Record<string, never>, options?: FetchOptions): Promise<{
4140
+ id: string;
4141
+ object: "candidate_profile";
4142
+ displayName: string | null;
4143
+ bio: string | null;
4144
+ avatarUrl: string | null;
4145
+ handle: string | null;
4146
+ headline: string | null;
4147
+ location: string | null;
4148
+ profileVisibility: "hidden" | "logged_in_only" | "public";
4149
+ jobSearchStatus: "actively_looking" | "open_to_offers" | "not_looking";
4150
+ jobSearchStatusVisibleTo: "everyone" | "employers_only";
4151
+ openToRelocate: boolean;
4152
+ }>;
4153
+ handleAvailable(handle: string, options?: FetchOptions): Promise<{
4154
+ object: "handle_availability";
4155
+ handle: string;
4156
+ available: boolean;
4157
+ }>;
4158
+ listExperience(options?: FetchOptions): Promise<ListEnvelope<{
4159
+ id: string;
4160
+ object: "candidate_experience";
4161
+ title: string;
4162
+ companyName: string;
4163
+ companyUrl: string | null;
4164
+ location: string | null;
4165
+ employmentType: string | null;
4166
+ locationType: string | null;
4167
+ foundVia: string | null;
4168
+ startDate: string;
4169
+ endDate: string | null;
4170
+ description: string | null;
4171
+ sortOrder: number;
4172
+ experienceSkills: string[];
4173
+ }>>;
4174
+ createExperience(body: CreateExperienceBody, options?: FetchOptions): Promise<{
4175
+ id: string;
4176
+ object: "candidate_experience";
4177
+ title: string;
4178
+ companyName: string;
4179
+ companyUrl: string | null;
4180
+ location: string | null;
4181
+ employmentType: string | null;
4182
+ locationType: string | null;
4183
+ foundVia: string | null;
4184
+ startDate: string;
4185
+ endDate: string | null;
4186
+ description: string | null;
4187
+ sortOrder: number;
4188
+ experienceSkills: string[];
4189
+ }>;
4190
+ updateExperience(id: string, body: UpdateExperienceBody, options?: FetchOptions): Promise<{
4191
+ id: string;
4192
+ object: "candidate_experience";
4193
+ title: string;
4194
+ companyName: string;
4195
+ companyUrl: string | null;
4196
+ location: string | null;
4197
+ employmentType: string | null;
4198
+ locationType: string | null;
4199
+ foundVia: string | null;
4200
+ startDate: string;
4201
+ endDate: string | null;
4202
+ description: string | null;
4203
+ sortOrder: number;
4204
+ experienceSkills: string[];
4205
+ }>;
4206
+ deleteExperience(id: string, options?: FetchOptions): Promise<void>;
4207
+ listEducation(options?: FetchOptions): Promise<ListEnvelope<{
4208
+ id: string;
4209
+ object: "candidate_education";
4210
+ institutionName: string;
4211
+ institutionUrl: string | null;
4212
+ degree: string | null;
4213
+ fieldOfStudy: string | null;
4214
+ grade: string | null;
4215
+ activitiesAndSocieties: string | null;
4216
+ startDate: string | null;
4217
+ endDate: string | null;
4218
+ description: string | null;
4219
+ sortOrder: number;
4220
+ }>>;
4221
+ createEducation(body: CreateEducationBody, options?: FetchOptions): Promise<{
4222
+ id: string;
4223
+ object: "candidate_education";
4224
+ institutionName: string;
4225
+ institutionUrl: string | null;
4226
+ degree: string | null;
4227
+ fieldOfStudy: string | null;
4228
+ grade: string | null;
4229
+ activitiesAndSocieties: string | null;
4230
+ startDate: string | null;
4231
+ endDate: string | null;
4232
+ description: string | null;
4233
+ sortOrder: number;
4234
+ }>;
4235
+ updateEducation(id: string, body: UpdateEducationBody, options?: FetchOptions): Promise<{
4236
+ id: string;
4237
+ object: "candidate_education";
4238
+ institutionName: string;
4239
+ institutionUrl: string | null;
4240
+ degree: string | null;
4241
+ fieldOfStudy: string | null;
4242
+ grade: string | null;
4243
+ activitiesAndSocieties: string | null;
4244
+ startDate: string | null;
4245
+ endDate: string | null;
4246
+ description: string | null;
4247
+ sortOrder: number;
4248
+ }>;
4249
+ deleteEducation(id: string, options?: FetchOptions): Promise<void>;
4250
+ listSkills(options?: FetchOptions): Promise<ListEnvelope<{
4251
+ object: "candidate_skill";
4252
+ name: string;
4253
+ jobSkillId: string | null;
4254
+ }>>;
4255
+ updateSkills(body: UpdateSkillsBody, options?: FetchOptions): Promise<ListEnvelope<{
4256
+ object: "candidate_skill";
4257
+ name: string;
4258
+ jobSkillId: string | null;
4259
+ }>>;
4260
+ listLanguages(options?: FetchOptions): Promise<ListEnvelope<{
4261
+ object: "candidate_language";
4262
+ name: string;
4263
+ proficiency: string;
4264
+ }>>;
4265
+ updateLanguages(body: UpdateLanguagesBody, options?: FetchOptions): Promise<ListEnvelope<{
4266
+ object: "candidate_language";
4267
+ name: string;
4268
+ proficiency: string;
4269
+ }>>;
4270
+ uploadAvatar(file: Blob, options?: FetchOptions): Promise<{
4271
+ object: "candidate_avatar";
4272
+ avatarUrl: string | null;
4273
+ }>;
4274
+ };
4275
+ notificationPreferences: {
4276
+ retrieve(options?: FetchOptions): Promise<ListEnvelope<{
4277
+ object: "notification_preference";
4278
+ channel: "messageEmails" | "applicationEmails";
4279
+ subscribed: boolean;
4280
+ updatedAt: number | null;
4281
+ }>>;
4282
+ update(body: UpdateNotificationPreferenceBody, options?: FetchOptions): Promise<ListEnvelope<{
4283
+ object: "notification_preference";
4284
+ channel: "messageEmails" | "applicationEmails";
4285
+ subscribed: boolean;
4286
+ updatedAt: number | null;
4287
+ }>>;
4288
+ unsubscribeWithToken(body: UnsubscribeBody, options?: FetchOptions): Promise<void>;
4289
+ };
3937
4290
  savedJobs: {
3938
4291
  list(query?: SavedJobsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
3939
4292
  id: string;
@@ -4650,4 +5003,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4650
5003
  };
4651
5004
  type BoardSdk = ReturnType<typeof createBoardClient>;
4652
5005
 
4653
- export { ACCESS_TOKEN_KEY, type Awaitable, BOARD_ACCESS_GRANT_KEY, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type CompaniesListQuery, type CompaniesSearchBody, type CompanyCategorySalary, type CompanyJobsListQuery, type CompanyListEnvelope, type CompanyMarket, type CompanyMarketRef, type CompanyMarketsListQuery, type CompanySalary, type CompanySimilarQuery, type ConsumeMagicLinkBody, type CreateBoardClientOptions, type CreateJobPostingInput, type CustomStorage, type EducationRequirement, type EmbedJobsQuery, type EmploymentType, type FetchOptions, type ForgotPasswordBody, 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, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobPostingBillingCheck, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, type JobPostingSubscriptionEntitlements, type JobSort, type JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type LocationSkillsIndex, type LocationTitlesIndex, type Logger, type LoginBody, type LogoutBody, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type OfficeLocation, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicCompanyDetail, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type RequestMagicLinkBody, type ResetPasswordBody, SDK_VERSION, type SalaryCompany, type SalaryDetailQuery, type SalaryLocation, type SalarySkill, type SalaryTitle, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type Seniority, type SkillLocationSalary, type SkillLocationsIndex, type SkillSalaryDetail, type StorageMode, type StorefrontPagination, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyResolution, type TitleLocationSalary, type TitleLocationsIndex, type TitleSalaryDetail, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };
5006
+ export { ACCESS_TOKEN_KEY, type Awaitable, BOARD_ACCESS_GRANT_KEY, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type CompaniesListQuery, type CompaniesSearchBody, type CompanyCategorySalary, type CompanyJobsListQuery, type CompanyListEnvelope, type CompanyMarket, type CompanyMarketRef, type CompanyMarketsListQuery, type CompanySalary, type CompanySimilarQuery, type ConsumeMagicLinkBody, type CreateBoardClientOptions, type CreateEducationBody, type CreateExperienceBody, type CreateJobPostingInput, type CustomStorage, type EducationRequirement, type EmbedJobsQuery, type EmploymentType, type FetchOptions, 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, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobPostingBillingCheck, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, type JobPostingSubscriptionEntitlements, type JobSort, type JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type LocationSkillsIndex, type LocationTitlesIndex, type Logger, type LoginBody, type LogoutBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type OfficeLocation, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicCompanyDetail, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type RequestMagicLinkBody, type ResetPasswordBody, SDK_VERSION, type SalaryCompany, type SalaryDetailQuery, type SalaryLocation, type SalarySkill, type SalaryTitle, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type Seniority, type SkillLocationSalary, type SkillLocationsIndex, type SkillSalaryDetail, type StorageMode, type StorefrontPagination, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyResolution, type TitleLocationSalary, type TitleLocationsIndex, type TitleSalaryDetail, type UnsubscribeBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };