@cavuno/board 1.17.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts 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
  };
@@ -234,12 +234,12 @@ interface components {
234
234
  * @description Which role profile to create on the board.
235
235
  * @enum {string}
236
236
  */
237
- role: "candidate" | "employer";
237
+ role: 'candidate' | 'employer';
238
238
  /**
239
239
  * @description Registration method. Only `emailpass` is supported.
240
240
  * @enum {string}
241
241
  */
242
- method: "emailpass";
242
+ method: 'emailpass';
243
243
  /** Format: email */
244
244
  email: string;
245
245
  /** @description Minimum 8 characters. */
@@ -253,21 +253,21 @@ interface components {
253
253
  };
254
254
  BoardAuthSession: {
255
255
  /** @enum {string} */
256
- object: "board_auth_session";
256
+ object: 'board_auth_session';
257
257
  /** @description Short-lived JWT (1 hour). Send as `Authorization: Bearer`. */
258
258
  accessToken: string;
259
259
  /** @description Opaque single-use refresh token (30 days). Each refresh returns a replacement; a reused token is rejected. */
260
260
  refreshToken: string;
261
261
  /** @description Access-token expiry, epoch milliseconds. */
262
262
  expiresAt: number;
263
- boardUser: components["schemas"]["BoardUser"];
263
+ boardUser: components['schemas']['BoardUser'];
264
264
  };
265
265
  BoardAuthVerifyEmailBody: {
266
266
  token: string;
267
267
  };
268
268
  BoardSeo: {
269
269
  /** @enum {string} */
270
- object: "board_seo";
270
+ object: 'board_seo';
271
271
  /** @description Verbatim `ads.txt` content, or `null` when not configured. */
272
272
  adsTxt: string | null;
273
273
  /** @description IndexNow key-file content, or `null` when not configured. */
@@ -298,9 +298,9 @@ interface components {
298
298
  /** @description Board user ID. */
299
299
  id: string;
300
300
  /** @enum {string} */
301
- object: "board_user";
301
+ object: 'board_user';
302
302
  /** @enum {string} */
303
- role: "candidate" | "employer";
303
+ role: 'candidate' | 'employer';
304
304
  email: string;
305
305
  displayName: string | null;
306
306
  emailVerified: boolean;
@@ -310,24 +310,24 @@ interface components {
310
310
  operations: ({
311
311
  id: string;
312
312
  /** @enum {string} */
313
- method: "POST";
313
+ method: 'POST';
314
314
  body?: unknown;
315
315
  action?: string;
316
316
  resourceId?: string;
317
317
  } | {
318
318
  id: string;
319
319
  /** @enum {string} */
320
- method: "PATCH";
320
+ method: 'PATCH';
321
321
  body?: unknown;
322
322
  resourceId: string;
323
323
  } | {
324
324
  id: string;
325
325
  /** @enum {string} */
326
- method: "DELETE";
326
+ method: 'DELETE';
327
327
  resourceId: string;
328
328
  })[];
329
329
  };
330
- Company: components["schemas"]["CompanySummary"] & {
330
+ Company: components['schemas']['CompanySummary'] & {
331
331
  /** @description Long-form description of the company, or `null` if not set. */
332
332
  description: string | null;
333
333
  /** @description Whether automated backfill of jobs from this company is supported, or `null` if not yet evaluated. */
@@ -339,7 +339,7 @@ interface components {
339
339
  };
340
340
  CompanyCategorySalary: {
341
341
  /** @enum {string} */
342
- object: "company_category_salary";
342
+ object: 'company_category_salary';
343
343
  categorySourceSlug: string;
344
344
  categoryCanonicalSlug: string;
345
345
  companyName: string;
@@ -383,7 +383,7 @@ interface components {
383
383
  };
384
384
  CompanyMarket: {
385
385
  /** @enum {string} */
386
- object: "company_market";
386
+ object: 'company_market';
387
387
  slug: string;
388
388
  name: string;
389
389
  /** @description Number of companies on the board in this market. */
@@ -402,7 +402,7 @@ interface components {
402
402
  * @description String representing the object's type. Objects of the same type share the same value.
403
403
  * @enum {string}
404
404
  */
405
- object: "public_company";
405
+ object: 'public_company';
406
406
  /** @description Display name of the company. */
407
407
  name: string;
408
408
  /** @description URL-friendly slug for the company. */
@@ -417,15 +417,15 @@ interface components {
417
417
  jobCount: number;
418
418
  /** @description Number of currently-published, non-expired jobs at this company. */
419
419
  publishedJobCount: number;
420
- links: components["schemas"]["PublicCompanyLinks"];
420
+ links: components['schemas']['PublicCompanyLinks'];
421
421
  };
422
- CompanyPublicDetail: components["schemas"]["CompanyPublic"] & {
422
+ CompanyPublicDetail: components['schemas']['CompanyPublic'] & {
423
423
  /** @description Markets (sectors) this company operates in, each with its source slug. Empty when the company has no markets. */
424
- markets: components["schemas"]["CompanyMarketRef"][];
424
+ markets: components['schemas']['CompanyMarketRef'][];
425
425
  };
426
426
  CompanySalary: {
427
427
  /** @enum {string} */
428
- object: "company_salary";
428
+ object: 'company_salary';
429
429
  companyName: string;
430
430
  companySlug: string;
431
431
  companyLogoPath: string | null;
@@ -490,7 +490,7 @@ interface components {
490
490
  * @description String representing the object's type. Objects of the same type share the same value.
491
491
  * @enum {string}
492
492
  */
493
- object: "company";
493
+ object: 'company';
494
494
  /** @description Display name of the company. */
495
495
  name: string;
496
496
  /** @description URL-friendly slug for the company. */
@@ -512,7 +512,7 @@ interface components {
512
512
  /** @description Time at which the company was last updated, or `null` if it has never been updated. ISO 8601 datetime. */
513
513
  updatedAt: string | null;
514
514
  /** @description Public + admin URLs for this company. `public` may be `null` if the company lacks a slug. */
515
- links: components["schemas"]["ResourceLinks"] & {
515
+ links: components['schemas']['ResourceLinks'] & {
516
516
  /**
517
517
  * Format: uri
518
518
  * @description Canonical public URL for this company on the board, or `null` when no slug is set.
@@ -534,7 +534,7 @@ interface components {
534
534
  * @description Author visibility status. One of `active` or `inactive`.
535
535
  * @enum {string}
536
536
  */
537
- status?: "active" | "inactive";
537
+ status?: 'active' | 'inactive';
538
538
  /** @description Storage ID of an uploaded avatar image (from `POST /v1/media/upload`). Pass `null` to clear an existing avatar. */
539
539
  avatarStorageId?: string | null;
540
540
  /** @description The author's personal website URL. Normalized to a canonical URL when stored. */
@@ -572,7 +572,7 @@ interface components {
572
572
  publishedAt?: string;
573
573
  title: string;
574
574
  /** @enum {string} */
575
- status?: "draft" | "scheduled" | "published";
575
+ status?: 'draft' | 'scheduled' | 'published';
576
576
  };
577
577
  CreateCompanyBody: {
578
578
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
@@ -603,22 +603,22 @@ interface components {
603
603
  * @description Employment type of the role.
604
604
  * @enum {string}
605
605
  */
606
- employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
606
+ employmentType?: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other';
607
607
  /**
608
608
  * @description Whether the role is on-site, hybrid, or fully remote.
609
609
  * @enum {string}
610
610
  */
611
- remoteOption?: "on_site" | "hybrid" | "remote";
611
+ remoteOption?: 'on_site' | 'hybrid' | 'remote';
612
612
  /** @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. */
613
613
  remotePermits?: {
614
614
  /** @enum {string} */
615
- type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
615
+ type: 'worldwide' | 'world_region' | 'continent' | 'region' | 'subregion' | 'subdivision' | 'country' | 'custom';
616
616
  value: string;
617
617
  }[];
618
618
  /** @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. */
619
619
  remoteTimezones?: {
620
620
  /** @enum {string} */
621
- type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
621
+ type: 'all' | 'world_region' | 'continent' | 'region' | 'subregion' | 'country' | 'timezone';
622
622
  value: string;
623
623
  plusMinus?: number;
624
624
  }[];
@@ -626,12 +626,12 @@ interface components {
626
626
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
627
627
  * @enum {string}
628
628
  */
629
- remoteSponsorship?: "yes" | "no" | "unknown";
629
+ remoteSponsorship?: 'yes' | 'no' | 'unknown';
630
630
  /**
631
631
  * @description Seniority level of the role.
632
632
  * @enum {string}
633
633
  */
634
- seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
634
+ seniority?: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive';
635
635
  /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (which is normalized to `mailto:` form). */
636
636
  applicationUrl: string;
637
637
  /** @description Minimum salary, in `salaryCurrency` units. */
@@ -644,7 +644,7 @@ interface components {
644
644
  * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
645
645
  * @enum {string}
646
646
  */
647
- salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
647
+ salaryTimeframe?: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour';
648
648
  /** @description Whether the job appears in featured slots on the public board. */
649
649
  isFeatured?: boolean;
650
650
  /** @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. */
@@ -652,7 +652,7 @@ interface components {
652
652
  /** @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. */
653
653
  publishedAt?: number;
654
654
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
655
- educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
655
+ educationRequirements?: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
656
656
  /** @description Minimum required experience, expressed in months. */
657
657
  experienceMonths?: number;
658
658
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
@@ -661,11 +661,11 @@ interface components {
661
661
  * @description Period denominator for `inOfficeFrequency`.
662
662
  * @enum {string}
663
663
  */
664
- inOfficePeriod?: "per_week" | "per_month" | "per_year";
664
+ inOfficePeriod?: 'per_week' | 'per_month' | 'per_year';
665
665
  /** @description How often the candidate must be in-office over `inOfficePeriod`. */
666
666
  inOfficeFrequency?: number;
667
667
  /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
668
- officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
668
+ officeLocations?: components['schemas']['JobOfficeLocationInput'][];
669
669
  /** @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. */
670
670
  externalId?: string;
671
671
  /** @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. */
@@ -674,12 +674,12 @@ interface components {
674
674
  };
675
675
  /** @description The job title. */
676
676
  title: string;
677
- company?: components["schemas"]["InlineCompanyInput"];
677
+ company?: components['schemas']['InlineCompanyInput'];
678
678
  /**
679
679
  * @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.
680
680
  * @enum {string}
681
681
  */
682
- status?: "draft" | "published";
682
+ status?: 'draft' | 'published';
683
683
  };
684
684
  CreateJobPostingBody: {
685
685
  submission: {
@@ -693,7 +693,7 @@ interface components {
693
693
  remoteOption: string;
694
694
  officeLocations: {
695
695
  /** @enum {string} */
696
- provider?: "mapbox";
696
+ provider?: 'mapbox';
697
697
  providerPlaceId?: string;
698
698
  displayName: string;
699
699
  countryCode?: string;
@@ -736,7 +736,7 @@ interface components {
736
736
  offset?: number;
737
737
  }[];
738
738
  /** @enum {string} */
739
- remoteSponsorship?: "yes" | "no" | "unknown";
739
+ remoteSponsorship?: 'yes' | 'no' | 'unknown';
740
740
  customFieldValues?: {
741
741
  [key: string]: string | string[] | boolean | number;
742
742
  };
@@ -774,7 +774,7 @@ interface components {
774
774
  * @description Tag visibility. One of `public` or `internal`.
775
775
  * @enum {string}
776
776
  */
777
- visibility?: "public" | "internal";
777
+ visibility?: 'public' | 'internal';
778
778
  /** @description SEO meta title for the tag page. */
779
779
  metaTitle?: string;
780
780
  /** @description SEO meta description for the tag page. */
@@ -791,9 +791,9 @@ interface components {
791
791
  * @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.
792
792
  * @enum {string}
793
793
  */
794
- type: "short_text" | "long_text" | "single_select" | "multi_select" | "boolean" | "number";
794
+ type: 'short_text' | 'long_text' | 'single_select' | 'multi_select' | 'boolean' | 'number';
795
795
  /** @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. */
796
- options?: components["schemas"]["CustomFieldOption"][];
796
+ options?: components['schemas']['CustomFieldOption'][];
797
797
  /** @description When true, the value cannot be cleared or left empty on a write (rejected with `custom_field_required`). */
798
798
  required: boolean;
799
799
  /** @description Inclusive minimum for `number` fields, when set. */
@@ -819,7 +819,7 @@ interface components {
819
819
  * @description OAuth token endpoint authentication method. Use `none` for public PKCE clients that cannot keep a client secret.
820
820
  * @enum {string}
821
821
  */
822
- token_endpoint_auth_method?: "client_secret_basic" | "none";
822
+ token_endpoint_auth_method?: 'client_secret_basic' | 'none';
823
823
  };
824
824
  DynamicClientRegistrationResponse: {
825
825
  /** @description Public OAuth client identifier. */
@@ -868,9 +868,9 @@ interface components {
868
868
  /** @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. */
869
869
  createIfMissing?: boolean;
870
870
  };
871
- Job: components["schemas"]["JobSummary"] & {
871
+ Job: components['schemas']['JobSummary'] & {
872
872
  /** @description Public + admin URLs for this job. `public` may be `null` if the job lacks a slug or company-slug. */
873
- links?: components["schemas"]["ResourceLinks"] & {
873
+ links?: components['schemas']['ResourceLinks'] & {
874
874
  /**
875
875
  * Format: uri
876
876
  * @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).
@@ -904,9 +904,9 @@ interface components {
904
904
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
905
905
  * @enum {string}
906
906
  */
907
- remoteSponsorship: "yes" | "no" | "unknown";
907
+ remoteSponsorship: 'yes' | 'no' | 'unknown';
908
908
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
909
- educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
909
+ educationRequirements: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
910
910
  /** @description Minimum required experience in months, or `null` if not specified. */
911
911
  experienceMonths: number | null;
912
912
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. `null` if not specified. */
@@ -915,12 +915,12 @@ interface components {
915
915
  * @description Period denominator for `inOfficeFrequency`, or `null` if not specified.
916
916
  * @enum {string|null}
917
917
  */
918
- inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
918
+ inOfficePeriod: 'per_week' | 'per_month' | 'per_year' | null;
919
919
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
920
920
  inOfficeFrequency: number | null;
921
- company: components["schemas"]["JobCompany"];
921
+ company: components['schemas']['JobCompany'];
922
922
  /** @description Physical office locations associated with the job. */
923
- officeLocations: components["schemas"]["JobOfficeLocation"][];
923
+ officeLocations: components['schemas']['JobOfficeLocation'][];
924
924
  };
925
925
  /** @description Embedded company resource for the job, or `null` if no company is attached. */
926
926
  JobCompany: {
@@ -962,7 +962,7 @@ interface components {
962
962
  allowedCountries?: string[];
963
963
  };
964
964
  /** @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. */
965
- customFields?: components["schemas"]["CustomFieldDefinition"][];
965
+ customFields?: components['schemas']['CustomFieldDefinition'][];
966
966
  };
967
967
  JobOfficeLocation: {
968
968
  /** @description ISO 3166-1 alpha-2 country code, or `null` if the location was not resolved. */
@@ -997,12 +997,12 @@ interface components {
997
997
  };
998
998
  JobPostingBillingCheck: {
999
999
  /** @enum {string} */
1000
- object: "job_posting_billing_check";
1000
+ object: 'job_posting_billing_check';
1001
1001
  hasActiveBilling: boolean;
1002
1002
  };
1003
1003
  JobPostingBillingOptions: {
1004
1004
  /** @enum {string} */
1005
- object: "job_posting_billing_options";
1005
+ object: 'job_posting_billing_options';
1006
1006
  options: {
1007
1007
  id: string;
1008
1008
  type: string;
@@ -1027,7 +1027,7 @@ interface components {
1027
1027
  };
1028
1028
  JobPostingBillingVerification: {
1029
1029
  /** @enum {string} */
1030
- object: "job_posting_billing_verification";
1030
+ object: 'job_posting_billing_verification';
1031
1031
  success: boolean;
1032
1032
  };
1033
1033
  JobPostingCheckBillingBody: {
@@ -1036,25 +1036,25 @@ interface components {
1036
1036
  };
1037
1037
  JobPostingLogo: {
1038
1038
  /** @enum {string} */
1039
- object: "job_posting_logo";
1039
+ object: 'job_posting_logo';
1040
1040
  publicUrl: string;
1041
1041
  };
1042
1042
  JobPostingPlan: {
1043
1043
  /** @enum {string} */
1044
- object: "job_posting_plan";
1044
+ object: 'job_posting_plan';
1045
1045
  id: string;
1046
1046
  name: string;
1047
1047
  description: string | null;
1048
1048
  kind: string;
1049
1049
  /** @enum {string|null} */
1050
- billingInterval: "month" | "year" | null;
1050
+ billingInterval: 'month' | 'year' | null;
1051
1051
  /** @enum {string|null} */
1052
- purpose: "job_posting" | "talent_access" | null;
1052
+ purpose: 'job_posting' | 'talent_access' | null;
1053
1053
  isRecommended: boolean;
1054
1054
  displayOrder: number | null;
1055
1055
  invoiceOnly: boolean;
1056
1056
  /** @enum {string|null} */
1057
- publishTiming: "on_issue" | "on_payment" | null;
1057
+ publishTiming: 'on_issue' | 'on_payment' | null;
1058
1058
  netTermsDays: number | null;
1059
1059
  prices: {
1060
1060
  currency: string;
@@ -1068,29 +1068,29 @@ interface components {
1068
1068
  };
1069
1069
  JobPostingResult: {
1070
1070
  /** @enum {string} */
1071
- object: "job_posting_result";
1071
+ object: 'job_posting_result';
1072
1072
  /** @enum {string} */
1073
- status: "checkout";
1073
+ status: 'checkout';
1074
1074
  checkoutUrl: string;
1075
1075
  jobId: string;
1076
1076
  } | {
1077
1077
  /** @enum {string} */
1078
- object: "job_posting_result";
1078
+ object: 'job_posting_result';
1079
1079
  /** @enum {string} */
1080
- status: "published";
1080
+ status: 'published';
1081
1081
  jobId: string;
1082
1082
  jobSlug: string;
1083
1083
  } | {
1084
1084
  /** @enum {string} */
1085
- object: "job_posting_result";
1085
+ object: 'job_posting_result';
1086
1086
  /** @enum {string} */
1087
- status: "pending_approval";
1087
+ status: 'pending_approval';
1088
1088
  jobId: string;
1089
1089
  } | {
1090
1090
  /** @enum {string} */
1091
- object: "job_posting_result";
1091
+ object: 'job_posting_result';
1092
1092
  /** @enum {string} */
1093
- status: "invoice_sent";
1093
+ status: 'invoice_sent';
1094
1094
  jobId: string;
1095
1095
  };
1096
1096
  JobPostingSendVerificationBody: {
@@ -1099,7 +1099,7 @@ interface components {
1099
1099
  };
1100
1100
  JobPostingSubscriptionEntitlements: {
1101
1101
  /** @enum {string} */
1102
- object: "job_posting_subscription_entitlements";
1102
+ object: 'job_posting_subscription_entitlements';
1103
1103
  hasSubscription: boolean;
1104
1104
  subscriptionId: string | null;
1105
1105
  canFeature: boolean | null;
@@ -1121,7 +1121,7 @@ interface components {
1121
1121
  * @description String representing the object's type. Objects of the same type share the same value.
1122
1122
  * @enum {string}
1123
1123
  */
1124
- object: "job";
1124
+ object: 'job';
1125
1125
  /** @description The job title. */
1126
1126
  title: string;
1127
1127
  /** @description URL-friendly slug used in public board URLs, or `null` if no slug is set. */
@@ -1130,24 +1130,24 @@ interface components {
1130
1130
  * @description Current status of the job. One of `draft`, `published`, `expired`, or `archived`.
1131
1131
  * @enum {string}
1132
1132
  */
1133
- status: "draft" | "published" | "expired" | "archived";
1133
+ status: 'draft' | 'published' | 'expired' | 'archived';
1134
1134
  /** @description Identifier of the company the job belongs to, or `null` if no company is attached. */
1135
1135
  companyId: string | null;
1136
1136
  /**
1137
1137
  * @description Employment type of the role, or `null` if not specified.
1138
1138
  * @enum {string|null}
1139
1139
  */
1140
- employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1140
+ employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1141
1141
  /**
1142
1142
  * @description Whether the role is on-site, hybrid, or fully remote, or `null` if not specified.
1143
1143
  * @enum {string|null}
1144
1144
  */
1145
- remoteOption: "on_site" | "hybrid" | "remote" | null;
1145
+ remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1146
1146
  /**
1147
1147
  * @description Seniority level of the role, or `null` if not specified.
1148
1148
  * @enum {string|null}
1149
1149
  */
1150
- seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
1150
+ seniority: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive' | null;
1151
1151
  /** @description Minimum salary in `salaryCurrency` units, or `null` if not specified. */
1152
1152
  salaryMin: number | null;
1153
1153
  /** @description Maximum salary in `salaryCurrency` units, or `null` if not specified. */
@@ -1158,7 +1158,7 @@ interface components {
1158
1158
  * @description Period the salary range is quoted against, or `null` if no salary is specified.
1159
1159
  * @enum {string|null}
1160
1160
  */
1161
- salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
1161
+ salaryTimeframe: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour' | null;
1162
1162
  /** @description Whether the job appears in featured slots on the public board. */
1163
1163
  isFeatured: boolean;
1164
1164
  /** @description Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime. */
@@ -1175,11 +1175,11 @@ interface components {
1175
1175
  customFieldValues: {
1176
1176
  [key: string]: string | string[] | boolean | number;
1177
1177
  };
1178
- links: components["schemas"]["AdminOnlyResourceLinks"];
1178
+ links: components['schemas']['AdminOnlyResourceLinks'];
1179
1179
  };
1180
1180
  LegalPage: {
1181
1181
  /** @enum {string} */
1182
- object: "legal_page";
1182
+ object: 'legal_page';
1183
1183
  /** @description The resolved legal page type. */
1184
1184
  type: string;
1185
1185
  /** @description Page heading (H1), with `{{board_name}}` resolved. */
@@ -1187,7 +1187,7 @@ interface components {
1187
1187
  /** @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. */
1188
1188
  content: string;
1189
1189
  /** @enum {string} */
1190
- contentFormat: "html";
1190
+ contentFormat: 'html';
1191
1191
  /** @description Structured impressum legal-entity facts; `null` for non-impressum pages. */
1192
1192
  legalEntity: {
1193
1193
  legalName: string | null;
@@ -1196,7 +1196,7 @@ interface components {
1196
1196
  };
1197
1197
  LocationSalaryDetail: {
1198
1198
  /** @enum {string} */
1199
- object: "location_salary_detail";
1199
+ object: 'location_salary_detail';
1200
1200
  /** @description Immutable English source place slug — the salary-stats key. */
1201
1201
  sourceSlug: string;
1202
1202
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -1277,7 +1277,7 @@ interface components {
1277
1277
  };
1278
1278
  LocationSkillsIndex: {
1279
1279
  /** @enum {string} */
1280
- object: "location_skills_index";
1280
+ object: 'location_skills_index';
1281
1281
  sourceSlug: string;
1282
1282
  canonicalSlug: string;
1283
1283
  placeName: string;
@@ -1291,7 +1291,7 @@ interface components {
1291
1291
  };
1292
1292
  LocationTitlesIndex: {
1293
1293
  /** @enum {string} */
1294
- object: "location_titles_index";
1294
+ object: 'location_titles_index';
1295
1295
  sourceSlug: string;
1296
1296
  canonicalSlug: string;
1297
1297
  placeName: string;
@@ -1303,7 +1303,7 @@ interface components {
1303
1303
  jobCount: number;
1304
1304
  }[];
1305
1305
  };
1306
- MediaGet: components["schemas"]["MediaUpload"] & {
1306
+ MediaGet: components['schemas']['MediaUpload'] & {
1307
1307
  /** @description Time at which the file was uploaded. ISO 8601 datetime. */
1308
1308
  uploadedAt: string;
1309
1309
  /** @description Resources currently referencing this file. Currently always `[]` — the resolver is not yet implemented. */
@@ -1321,7 +1321,7 @@ interface components {
1321
1321
  * @description String representing the object's type. Objects of the same type share the same value.
1322
1322
  * @enum {string}
1323
1323
  */
1324
- object: "media_upload";
1324
+ object: 'media_upload';
1325
1325
  /** @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. */
1326
1326
  url: string | null;
1327
1327
  /** @description Time at which the signed `url` expires (ISO 8601 datetime), or `null` when the `url` is permanent and never expires. */
@@ -1334,7 +1334,7 @@ interface components {
1334
1334
  * @description Resource type the file was uploaded for.
1335
1335
  * @enum {string}
1336
1336
  */
1337
- purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
1337
+ purpose: 'board_logo' | 'board_hero' | 'account_avatar' | 'company_logo' | 'blog_image';
1338
1338
  };
1339
1339
  /** @description Error envelope, populated once the operation reaches `failed`. `null` otherwise. */
1340
1340
  OperationErrorEnvelope: {
@@ -1365,20 +1365,20 @@ interface components {
1365
1365
  * @description String representing the object's type. Objects of the same type share the same value.
1366
1366
  * @enum {string}
1367
1367
  */
1368
- object: "operation";
1368
+ object: 'operation';
1369
1369
  /** @description Operation kind, identifying which workflow the operation runs. */
1370
1370
  kind: string;
1371
1371
  /**
1372
1372
  * @description Current state of the operation.
1373
1373
  * @enum {string}
1374
1374
  */
1375
- state: "pending" | "running" | "succeeded" | "failed" | "cancelled";
1375
+ state: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled';
1376
1376
  /** @description Identifier of the account the operation belongs to. */
1377
1377
  accountId: string;
1378
- progress: components["schemas"]["OperationProgress"];
1378
+ progress: components['schemas']['OperationProgress'];
1379
1379
  /** @description Operation result, populated once the operation reaches `succeeded`. Shape varies by `kind`. */
1380
1380
  result?: unknown;
1381
- error: components["schemas"]["OperationErrorEnvelope"];
1381
+ error: components['schemas']['OperationErrorEnvelope'];
1382
1382
  /** @description Time at which the operation was created. ISO 8601 datetime. */
1383
1383
  createdAt: string;
1384
1384
  /** @description Time at which the operation was last updated. ISO 8601 datetime. */
@@ -1430,23 +1430,23 @@ interface components {
1430
1430
  /** @description Default expiry, in days, applied to newly published jobs when no `expiresAt` is supplied. */
1431
1431
  defaultJobDurationDays?: number;
1432
1432
  /** @description Public contact email shown on the board. Pass `null` to clear. */
1433
- contactEmail?: string | "" | unknown | unknown;
1433
+ contactEmail?: string | '' | unknown | unknown;
1434
1434
  /** @description Legal name of the entity operating the board. Pass `null` to clear. */
1435
- companyLegalName?: string | "" | unknown | unknown;
1435
+ companyLegalName?: string | '' | unknown | unknown;
1436
1436
  /** @description Postal address of the entity operating the board. Pass `null` to clear. */
1437
- companyAddress?: string | "" | unknown | unknown;
1437
+ companyAddress?: string | '' | unknown | unknown;
1438
1438
  /** @description Public company website URL. Pass `null` to clear. */
1439
- companyWebsiteUrl?: string | "" | unknown | unknown;
1439
+ companyWebsiteUrl?: string | '' | unknown | unknown;
1440
1440
  /** @description Company X (Twitter) handle or profile URL. Pass `null` to clear. */
1441
- companyXHandle?: string | "" | unknown | unknown;
1441
+ companyXHandle?: string | '' | unknown | unknown;
1442
1442
  /** @description Company Facebook page URL. Pass `null` to clear. */
1443
- companyFacebookUrl?: string | "" | unknown | unknown;
1443
+ companyFacebookUrl?: string | '' | unknown | unknown;
1444
1444
  /** @description Company LinkedIn page URL. Pass `null` to clear. */
1445
- companyLinkedinUrl?: string | "" | unknown | unknown;
1445
+ companyLinkedinUrl?: string | '' | unknown | unknown;
1446
1446
  /** @description Label shown for the talent directory in the public navigation. 1–50 characters. */
1447
1447
  talentNavLabel?: string;
1448
1448
  /** @description Custom copy displayed on the password gate. Up to 500 characters. Pass `null` to clear. */
1449
- passwordProtectionMessage?: string | "" | unknown | unknown;
1449
+ passwordProtectionMessage?: string | '' | unknown | unknown;
1450
1450
  /** @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. */
1451
1451
  config?: {
1452
1452
  [key: string]: unknown;
@@ -1454,21 +1454,21 @@ interface components {
1454
1454
  };
1455
1455
  Plan: {
1456
1456
  /** @enum {string} */
1457
- object: "plan";
1457
+ object: 'plan';
1458
1458
  id: string;
1459
1459
  name: string;
1460
1460
  description: string | null;
1461
1461
  /** @enum {string} */
1462
- purpose: "job_posting" | "talent_access";
1462
+ purpose: 'job_posting' | 'talent_access';
1463
1463
  /** @enum {string} */
1464
- kind: "free" | "subscription" | "one_time" | "bundle";
1464
+ kind: 'free' | 'subscription' | 'one_time' | 'bundle';
1465
1465
  /** @enum {string|null} */
1466
- billingInterval: "month" | "year" | null;
1466
+ billingInterval: 'month' | 'year' | null;
1467
1467
  isRecommended: boolean;
1468
1468
  displayOrder: number;
1469
1469
  invoiceOnly: boolean;
1470
1470
  /** @enum {string|null} */
1471
- publishTiming: "on_issue" | "on_payment" | null;
1471
+ publishTiming: 'on_issue' | 'on_payment' | null;
1472
1472
  netTermsDays: number | null;
1473
1473
  price: {
1474
1474
  currency: string;
@@ -1481,7 +1481,7 @@ interface components {
1481
1481
  maxActiveJobs: number;
1482
1482
  featuredSlots: number;
1483
1483
  /** @enum {string} */
1484
- featureSelectionMode: "auto" | "manual";
1484
+ featureSelectionMode: 'auto' | 'manual';
1485
1485
  };
1486
1486
  /** @description Talent-access allowances (per billing period). Present only when `purpose` is `talent_access`. `"unlimited"` is a sentinel value. */
1487
1487
  talent?: {
@@ -1491,13 +1491,13 @@ interface components {
1491
1491
  };
1492
1492
  PublicBlogAdjacentPosts: {
1493
1493
  /** @enum {string} */
1494
- object: "blog_adjacent_posts";
1495
- previous: components["schemas"]["PublicBlogPostSummary"] | null;
1496
- next: components["schemas"]["PublicBlogPostSummary"] | null;
1494
+ object: 'blog_adjacent_posts';
1495
+ previous: components['schemas']['PublicBlogPostSummary'] | null;
1496
+ next: components['schemas']['PublicBlogPostSummary'] | null;
1497
1497
  };
1498
- PublicBlogAuthor: components["schemas"]["PublicBlogAuthorEmbed"] & {
1498
+ PublicBlogAuthor: components['schemas']['PublicBlogAuthorEmbed'] & {
1499
1499
  /** @enum {string} */
1500
- object: "public_blog_author";
1500
+ object: 'public_blog_author';
1501
1501
  };
1502
1502
  PublicBlogAuthorEmbed: {
1503
1503
  id: string;
@@ -1510,7 +1510,7 @@ interface components {
1510
1510
  linkedinUrl: string | null;
1511
1511
  githubUrl: string | null;
1512
1512
  };
1513
- PublicBlogPost: components["schemas"]["PublicBlogPostSummary"] & {
1513
+ PublicBlogPost: components['schemas']['PublicBlogPostSummary'] & {
1514
1514
  html: string | null;
1515
1515
  ogImageUrl: string | null;
1516
1516
  featureImageCaption: string | null;
@@ -1522,7 +1522,7 @@ interface components {
1522
1522
  PublicBlogPostSummary: {
1523
1523
  id: string;
1524
1524
  /** @enum {string} */
1525
- object: "public_blog_post";
1525
+ object: 'public_blog_post';
1526
1526
  title: string;
1527
1527
  slug: string;
1528
1528
  featured: boolean;
@@ -1533,8 +1533,8 @@ interface components {
1533
1533
  publishedAt: string | null;
1534
1534
  canonicalUrl: string | null;
1535
1535
  createdAt: string;
1536
- authors: components["schemas"]["PublicBlogAuthorEmbed"][];
1537
- tags: components["schemas"]["PublicBlogTagEmbed"][];
1536
+ authors: components['schemas']['PublicBlogAuthorEmbed'][];
1537
+ tags: components['schemas']['PublicBlogTagEmbed'][];
1538
1538
  };
1539
1539
  PublicBlogSearchBody: {
1540
1540
  /** @description Free-text search query. Up to 200 characters. */
@@ -1544,9 +1544,9 @@ interface components {
1544
1544
  /** @description A limit on the number of objects to be returned. Limit can range between 1 and 50. */
1545
1545
  limit?: number;
1546
1546
  };
1547
- PublicBlogTag: components["schemas"]["PublicBlogTagEmbed"] & {
1547
+ PublicBlogTag: components['schemas']['PublicBlogTagEmbed'] & {
1548
1548
  /** @enum {string} */
1549
- object: "public_blog_tag";
1549
+ object: 'public_blog_tag';
1550
1550
  };
1551
1551
  PublicBlogTagEmbed: {
1552
1552
  id: string;
@@ -1556,7 +1556,7 @@ interface components {
1556
1556
  };
1557
1557
  PublicBoardContext: {
1558
1558
  /** @enum {string} */
1559
- object: "public_board";
1559
+ object: 'public_board';
1560
1560
  /** @description Immutable board identifier (`boards_…`). */
1561
1561
  id: string;
1562
1562
  /** @description Mutable canonical board slug. */
@@ -1630,7 +1630,7 @@ interface components {
1630
1630
  * @description String representing the object's type. Objects of the same type share the same value.
1631
1631
  * @enum {string}
1632
1632
  */
1633
- object: "public_job";
1633
+ object: 'public_job';
1634
1634
  /** @description The job title. */
1635
1635
  title: string;
1636
1636
  /** @description URL-friendly slug used in public board URLs, or `null` if no slug is set. */
@@ -1639,24 +1639,24 @@ interface components {
1639
1639
  * @description Current status of the job. One of `draft`, `published`, `expired`, or `archived`.
1640
1640
  * @enum {string}
1641
1641
  */
1642
- status: "draft" | "published" | "expired" | "archived";
1642
+ status: 'draft' | 'published' | 'expired' | 'archived';
1643
1643
  /** @description Identifier of the company the job belongs to, or `null` if no company is attached. */
1644
1644
  companyId: string | null;
1645
1645
  /**
1646
1646
  * @description Employment type of the role, or `null` if not specified.
1647
1647
  * @enum {string|null}
1648
1648
  */
1649
- employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1649
+ employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1650
1650
  /**
1651
1651
  * @description Whether the role is on-site, hybrid, or fully remote, or `null` if not specified.
1652
1652
  * @enum {string|null}
1653
1653
  */
1654
- remoteOption: "on_site" | "hybrid" | "remote" | null;
1654
+ remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1655
1655
  /**
1656
1656
  * @description Seniority level of the role, or `null` if not specified.
1657
1657
  * @enum {string|null}
1658
1658
  */
1659
- seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
1659
+ seniority: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive' | null;
1660
1660
  /** @description Minimum salary in `salaryCurrency` units, or `null` if not specified. */
1661
1661
  salaryMin: number | null;
1662
1662
  /** @description Maximum salary in `salaryCurrency` units, or `null` if not specified. */
@@ -1667,7 +1667,7 @@ interface components {
1667
1667
  * @description Period the salary range is quoted against, or `null` if no salary is specified.
1668
1668
  * @enum {string|null}
1669
1669
  */
1670
- salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
1670
+ salaryTimeframe: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour' | null;
1671
1671
  /** @description Whether the job appears in featured slots on the public board. */
1672
1672
  isFeatured: boolean;
1673
1673
  /** @description Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime. */
@@ -1678,7 +1678,7 @@ interface components {
1678
1678
  createdAt: string;
1679
1679
  /** @description Time at which the job was last updated. ISO 8601 datetime. */
1680
1680
  updatedAt: string;
1681
- links: components["schemas"]["PublicJobLinks"];
1681
+ links: components['schemas']['PublicJobLinks'];
1682
1682
  /** @description Long-form description of the role, or `null` if not specified. */
1683
1683
  description: string | null;
1684
1684
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
@@ -1706,9 +1706,9 @@ interface components {
1706
1706
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
1707
1707
  * @enum {string}
1708
1708
  */
1709
- remoteSponsorship: "yes" | "no" | "unknown";
1709
+ remoteSponsorship: 'yes' | 'no' | 'unknown';
1710
1710
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
1711
- educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
1711
+ educationRequirements: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
1712
1712
  /** @description Minimum required experience in months, or `null` if not specified. */
1713
1713
  experienceMonths: number | null;
1714
1714
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. `null` if not specified. */
@@ -1717,12 +1717,12 @@ interface components {
1717
1717
  * @description Period denominator for `inOfficeFrequency`, or `null` if not specified.
1718
1718
  * @enum {string|null}
1719
1719
  */
1720
- inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
1720
+ inOfficePeriod: 'per_week' | 'per_month' | 'per_year' | null;
1721
1721
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
1722
1722
  inOfficeFrequency: number | null;
1723
- company: components["schemas"]["JobCompany"];
1723
+ company: components['schemas']['JobCompany'];
1724
1724
  /** @description Physical office locations associated with the job. */
1725
- officeLocations: components["schemas"]["JobOfficeLocation"][];
1725
+ officeLocations: components['schemas']['JobOfficeLocation'][];
1726
1726
  /** @description Resolved job categories (slug + board display name) — same shape as the card; names joined server-side. */
1727
1727
  categories: {
1728
1728
  slug: string;
@@ -1741,21 +1741,21 @@ interface components {
1741
1741
  };
1742
1742
  PublicJobAlertConfirmation: {
1743
1743
  /** @enum {string} */
1744
- object: "job_alert_confirmation";
1744
+ object: 'job_alert_confirmation';
1745
1745
  /**
1746
1746
  * @description Outcome of the confirmation. Always returned with HTTP 200 so the consumer renders by status (the token may be valid, stale, or unknown).
1747
1747
  * @enum {string}
1748
1748
  */
1749
- status: "confirmed" | "already_confirmed" | "expired" | "not_found";
1749
+ status: 'confirmed' | 'already_confirmed' | 'expired' | 'not_found';
1750
1750
  };
1751
1751
  PublicJobAlertManageResult: {
1752
1752
  /** @enum {string} */
1753
- object: "job_alert_manage_result";
1753
+ object: 'job_alert_manage_result';
1754
1754
  success: boolean;
1755
1755
  };
1756
1756
  PublicJobAlertManageState: {
1757
1757
  /** @enum {string} */
1758
- object: "job_alert_manage_state";
1758
+ object: 'job_alert_manage_state';
1759
1759
  email: string;
1760
1760
  confirmed: boolean;
1761
1761
  unsubscribed: boolean;
@@ -1778,18 +1778,18 @@ interface components {
1778
1778
  };
1779
1779
  PublicJobAlertResend: {
1780
1780
  /** @enum {string} */
1781
- object: "job_alert_confirmation_resend";
1781
+ object: 'job_alert_confirmation_resend';
1782
1782
  /** @enum {string} */
1783
- status: "sent" | "not_found" | "already_confirmed" | "throttled" | "send_failed";
1783
+ status: 'sent' | 'not_found' | 'already_confirmed' | 'throttled' | 'send_failed';
1784
1784
  };
1785
1785
  PublicJobAlertSubscription: {
1786
1786
  /** @enum {string} */
1787
- object: "job_alert_subscription";
1787
+ object: 'job_alert_subscription';
1788
1788
  /**
1789
1789
  * @description `created` on a new subscription; `duplicate` if it existed.
1790
1790
  * @enum {string}
1791
1791
  */
1792
- status: "created" | "duplicate";
1792
+ status: 'created' | 'duplicate';
1793
1793
  /** @description True when a double-opt-in confirmation email was sent. */
1794
1794
  requiresConfirmation: boolean;
1795
1795
  /** @description True if the subscriber was already email-confirmed. */
@@ -1798,7 +1798,7 @@ interface components {
1798
1798
  PublicJobCard: {
1799
1799
  id: string;
1800
1800
  /** @enum {string} */
1801
- object: "job_card";
1801
+ object: 'job_card';
1802
1802
  slug: string;
1803
1803
  title: string;
1804
1804
  /**
@@ -1807,9 +1807,9 @@ interface components {
1807
1807
  */
1808
1808
  publishedAt: string | null;
1809
1809
  /** @enum {string|null} */
1810
- employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1810
+ employmentType: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other' | null;
1811
1811
  /** @enum {string|null} */
1812
- remoteOption: "on_site" | "hybrid" | "remote" | null;
1812
+ remoteOption: 'on_site' | 'hybrid' | 'remote' | null;
1813
1813
  /** @description Display region label for remote jobs (e.g. "United States", "Worldwide"); `null` for non-remote jobs. */
1814
1814
  remoteLocationLabel: string | null;
1815
1815
  salaryMin: number | null;
@@ -1852,7 +1852,7 @@ interface components {
1852
1852
  };
1853
1853
  PublicPlace: {
1854
1854
  /** @enum {string} */
1855
- object: "place";
1855
+ object: 'place';
1856
1856
  /** @description Stable place identity (locations-tree edge endpoint). */
1857
1857
  id: string;
1858
1858
  /** @description Parent place's `id`; `null` for a root place. */
@@ -1869,16 +1869,21 @@ interface components {
1869
1869
  PublicSearchJobsBody: {
1870
1870
  /** @description Free-text search query matched against job title and description. Up to 200 characters. */
1871
1871
  query?: string;
1872
+ /**
1873
+ * @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.
1874
+ * @enum {string}
1875
+ */
1876
+ sort?: 'relevance' | 'newest' | 'salary_high';
1872
1877
  /** @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. */
1873
1878
  filters?: {
1874
1879
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
1875
1880
  companyId?: string[];
1876
1881
  /** @description Only return jobs with any of the given remote-work options. Up to 10 values. */
1877
- remoteOption?: ("on_site" | "hybrid" | "remote")[];
1882
+ remoteOption?: ('on_site' | 'hybrid' | 'remote')[];
1878
1883
  /** @description Only return jobs with any of the given employment types. Up to 10 values. */
1879
- employmentType?: ("full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other")[];
1884
+ employmentType?: ('full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other')[];
1880
1885
  /** @description Only return jobs at any of the given seniority levels. Up to 10 values. */
1881
- seniority?: ("entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive")[];
1886
+ seniority?: ('entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive')[];
1882
1887
  /** @description Range filter on the job's `publishedAt` timestamp. */
1883
1888
  publishedAt?: {
1884
1889
  /**
@@ -1912,9 +1917,9 @@ interface components {
1912
1917
  };
1913
1918
  PublicTaxonomyResolution: {
1914
1919
  /** @enum {string} */
1915
- object: "taxonomy_resolution";
1920
+ object: 'taxonomy_resolution';
1916
1921
  /** @enum {string} */
1917
- type: "category" | "skill" | "place" | "market";
1922
+ type: 'category' | 'skill' | 'place' | 'market';
1918
1923
  /** @description Immutable English source slug — the semantic-search key. */
1919
1924
  sourceSlug: string;
1920
1925
  /** @description Board-language URL slug (the `<link rel=canonical>` target). */
@@ -1923,7 +1928,7 @@ interface components {
1923
1928
  displayName: string;
1924
1929
  /** @description The canonical slug to emit a 308 redirect to when the inbound slug differs; `null` otherwise. */
1925
1930
  redirectTo: string | null;
1926
- geo: components["schemas"]["TaxonomyGeo"];
1931
+ geo: components['schemas']['TaxonomyGeo'];
1927
1932
  };
1928
1933
  PublicVerifyBoardPasswordBody: {
1929
1934
  /** @description The board password. */
@@ -1938,7 +1943,7 @@ interface components {
1938
1943
  };
1939
1944
  RedirectResolution: {
1940
1945
  /** @enum {string} */
1941
- object: "redirect_resolution";
1946
+ object: 'redirect_resolution';
1942
1947
  path: string;
1943
1948
  /** @description The redirect target (board-relative), or `null` when no redirect matches. The consumer 308s to `target`, or 404s when `null`. */
1944
1949
  target: string | null;
@@ -1978,7 +1983,7 @@ interface components {
1978
1983
  * @description Hint indicating whether `token` is an `access_token` or `refresh_token`. Optional.
1979
1984
  * @enum {string}
1980
1985
  */
1981
- token_type_hint?: "access_token" | "refresh_token";
1986
+ token_type_hint?: 'access_token' | 'refresh_token';
1982
1987
  /** @description OAuth client identifier. May be supplied here or via HTTP Basic authentication. */
1983
1988
  client_id?: string;
1984
1989
  /** @description OAuth client secret. May be supplied here or via HTTP Basic authentication. */
@@ -1986,7 +1991,7 @@ interface components {
1986
1991
  };
1987
1992
  SalaryCompanyIndexItem: {
1988
1993
  /** @enum {string} */
1989
- object: "salary_company";
1994
+ object: 'salary_company';
1990
1995
  companySlug: string;
1991
1996
  companyName: string;
1992
1997
  logoPath: string | null;
@@ -1997,7 +2002,7 @@ interface components {
1997
2002
  };
1998
2003
  SalaryLocationIndexItem: {
1999
2004
  /** @enum {string} */
2000
- object: "salary_location";
2005
+ object: 'salary_location';
2001
2006
  placeSlug: string;
2002
2007
  placeName: string;
2003
2008
  /** @description Slug of the parent place; `null` for a top-level node. */
@@ -2008,7 +2013,7 @@ interface components {
2008
2013
  };
2009
2014
  SalarySkillIndexItem: {
2010
2015
  /** @enum {string} */
2011
- object: "salary_skill";
2016
+ object: 'salary_skill';
2012
2017
  slug: string;
2013
2018
  name: string;
2014
2019
  avgSalaryMin: number;
@@ -2020,7 +2025,7 @@ interface components {
2020
2025
  };
2021
2026
  SalaryTitleIndexItem: {
2022
2027
  /** @enum {string} */
2023
- object: "salary_title";
2028
+ object: 'salary_title';
2024
2029
  slug: string;
2025
2030
  name: string;
2026
2031
  avgSalaryMin: number;
@@ -2032,7 +2037,7 @@ interface components {
2032
2037
  };
2033
2038
  SalesLedPlan: {
2034
2039
  /** @enum {string} */
2035
- object: "sales_led_plan";
2040
+ object: 'sales_led_plan';
2036
2041
  id: string;
2037
2042
  name: string;
2038
2043
  description: string;
@@ -2051,17 +2056,17 @@ interface components {
2051
2056
  /** @description Saved-job row ID. */
2052
2057
  id: string;
2053
2058
  /** @enum {string} */
2054
- object: "saved_job";
2059
+ object: 'saved_job';
2055
2060
  /** @description The saved job — also the DELETE path key. */
2056
2061
  jobId: string;
2057
2062
  /** Format: date-time */
2058
2063
  savedAt: string;
2059
- job: components["schemas"]["PublicJob"];
2064
+ job: components['schemas']['PublicJob'];
2060
2065
  };
2061
2066
  SearchBlogPostsBody: {
2062
2067
  query?: string;
2063
2068
  /** @enum {string} */
2064
- status?: "draft" | "scheduled" | "published";
2069
+ status?: 'draft' | 'scheduled' | 'published';
2065
2070
  cursor?: string | null;
2066
2071
  limit?: number;
2067
2072
  };
@@ -2082,15 +2087,15 @@ interface components {
2082
2087
  /** @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. */
2083
2088
  filters?: {
2084
2089
  /** @description Only return jobs in any of the given statuses. Up to 10 values. */
2085
- status?: ("draft" | "published" | "expired" | "archived")[];
2090
+ status?: ('draft' | 'published' | 'expired' | 'archived')[];
2086
2091
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
2087
2092
  companyId?: string[];
2088
2093
  /** @description Only return jobs with any of the given remote-work options. Up to 10 values. */
2089
- remoteOption?: ("on_site" | "hybrid" | "remote")[];
2094
+ remoteOption?: ('on_site' | 'hybrid' | 'remote')[];
2090
2095
  /** @description Only return jobs with any of the given employment types. Up to 10 values. */
2091
- employmentType?: ("full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other")[];
2096
+ employmentType?: ('full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other')[];
2092
2097
  /** @description Only return jobs at any of the given seniority levels. Up to 10 values. */
2093
- seniority?: ("entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive")[];
2098
+ seniority?: ('entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive')[];
2094
2099
  /** @description Range filter on the job's `publishedAt` timestamp. */
2095
2100
  publishedAt?: {
2096
2101
  /**
@@ -2117,25 +2122,25 @@ interface components {
2117
2122
  /** @description Whether AdSense placements are rendered on the public board. */
2118
2123
  adsenseEnabled?: boolean;
2119
2124
  /** @description AdSense publisher ID in `ca-pub-XXXXXXXXXXXXXXXX` format. Pass an empty string or `null` to clear. */
2120
- adsenseClientId?: string | "" | unknown | unknown;
2125
+ adsenseClientId?: string | '' | unknown | unknown;
2121
2126
  /** @description Map of placement key to slot configuration. Placement keys are lowercase alphanumeric with `-`, `_`, `.`, or `:`. */
2122
2127
  adsenseSlots?: {
2123
- [key: string]: components["schemas"]["SettingsAdsenseSlot"];
2128
+ [key: string]: components['schemas']['SettingsAdsenseSlot'];
2124
2129
  };
2125
2130
  /** @description Contents to serve from `/ads.txt`. Up to 2,000 characters. Pass an empty string or `null` to clear. */
2126
- adsTxt?: string | "" | unknown | unknown;
2131
+ adsTxt?: string | '' | unknown | unknown;
2127
2132
  };
2128
2133
  SettingsAdsenseSlot: {
2129
2134
  /** @description Whether this placement is rendered. */
2130
2135
  enabled: boolean;
2131
2136
  /** @description Ten-digit AdSense slot ID. Pass an empty string or `null` to clear. */
2132
- slotId: string | "" | unknown | unknown;
2137
+ slotId: string | '' | unknown | unknown;
2133
2138
  /** @description AdSense layout type for the placement. */
2134
- layout?: ("auto" | "in-article" | "in-feed" | "fluid") | "" | unknown | unknown;
2139
+ layout?: ('auto' | 'in-article' | 'in-feed' | 'fluid') | '' | unknown | unknown;
2135
2140
  /** @description AdSense ad format. */
2136
- format?: ("auto" | "horizontal" | "vertical" | "rectangle" | "responsive") | "" | unknown | unknown;
2141
+ format?: ('auto' | 'horizontal' | 'vertical' | 'rectangle' | 'responsive') | '' | unknown | unknown;
2137
2142
  /** @description Visual style override for the placement. */
2138
- style?: ("default" | "light" | "dark" | "contrast") | "" | unknown | unknown;
2143
+ style?: ('default' | 'light' | 'dark' | 'contrast') | '' | unknown | unknown;
2139
2144
  /** @description How often the placement is shown (e.g. once every N items). */
2140
2145
  frequency?: number | unknown | unknown;
2141
2146
  };
@@ -2169,7 +2174,7 @@ interface components {
2169
2174
  };
2170
2175
  SkillLocationSalary: {
2171
2176
  /** @enum {string} */
2172
- object: "skill_location_salary";
2177
+ object: 'skill_location_salary';
2173
2178
  skillSourceSlug: string;
2174
2179
  skillCanonicalSlug: string;
2175
2180
  locationSourceSlug: string;
@@ -2236,16 +2241,16 @@ interface components {
2236
2241
  };
2237
2242
  SkillLocationsIndex: {
2238
2243
  /** @enum {string} */
2239
- object: "skill_locations_index";
2244
+ object: 'skill_locations_index';
2240
2245
  sourceSlug: string;
2241
2246
  canonicalSlug: string;
2242
2247
  skillName: string;
2243
2248
  currency: string;
2244
- locations: components["schemas"]["SalaryLocationIndexItem"][];
2249
+ locations: components['schemas']['SalaryLocationIndexItem'][];
2245
2250
  };
2246
2251
  SkillSalaryDetail: {
2247
2252
  /** @enum {string} */
2248
- object: "skill_salary_detail";
2253
+ object: 'skill_salary_detail';
2249
2254
  /** @description Immutable English source slug — the salary-stats key. */
2250
2255
  sourceSlug: string;
2251
2256
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -2308,7 +2313,7 @@ interface components {
2308
2313
  };
2309
2314
  TalentDirectoryEntry: {
2310
2315
  /** @enum {string} */
2311
- object: "talent_directory_entry";
2316
+ object: 'talent_directory_entry';
2312
2317
  handle: string | null;
2313
2318
  displayName: string | null;
2314
2319
  headline: string | null;
@@ -2331,7 +2336,7 @@ interface components {
2331
2336
  };
2332
2337
  TalentProfile: {
2333
2338
  /** @enum {string} */
2334
- object: "talent_profile";
2339
+ object: 'talent_profile';
2335
2340
  handle: string | null;
2336
2341
  displayName: string | null;
2337
2342
  headline: string | null;
@@ -2390,7 +2395,7 @@ interface components {
2390
2395
  } | null;
2391
2396
  TitleLocationSalary: {
2392
2397
  /** @enum {string} */
2393
- object: "title_location_salary";
2398
+ object: 'title_location_salary';
2394
2399
  categorySourceSlug: string;
2395
2400
  categoryCanonicalSlug: string;
2396
2401
  locationSourceSlug: string;
@@ -2457,16 +2462,16 @@ interface components {
2457
2462
  };
2458
2463
  TitleLocationsIndex: {
2459
2464
  /** @enum {string} */
2460
- object: "title_locations_index";
2465
+ object: 'title_locations_index';
2461
2466
  sourceSlug: string;
2462
2467
  canonicalSlug: string;
2463
2468
  categoryName: string;
2464
2469
  currency: string;
2465
- locations: components["schemas"]["SalaryLocationIndexItem"][];
2470
+ locations: components['schemas']['SalaryLocationIndexItem'][];
2466
2471
  };
2467
2472
  TitleSalaryDetail: {
2468
2473
  /** @enum {string} */
2469
- object: "title_salary_detail";
2474
+ object: 'title_salary_detail';
2470
2475
  /** @description Immutable English source slug — the salary-stats key. */
2471
2476
  sourceSlug: string;
2472
2477
  /** @description Board-language canonical URL slug — the starter 308 target. */
@@ -2538,7 +2543,7 @@ interface components {
2538
2543
  * @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.
2539
2544
  * @enum {string}
2540
2545
  */
2541
- grant_type: "authorization_code" | "refresh_token";
2546
+ grant_type: 'authorization_code' | 'refresh_token';
2542
2547
  /** @description Authorization code returned from the authorization endpoint. Required when `grant_type` is `authorization_code`. */
2543
2548
  code?: string;
2544
2549
  /** @description Redirect URI used in the original authorization request. Must match exactly. Required when `grant_type` is `authorization_code`. */
@@ -2561,7 +2566,7 @@ interface components {
2561
2566
  * @description Always `Bearer`.
2562
2567
  * @enum {string}
2563
2568
  */
2564
- token_type: "Bearer";
2569
+ token_type: 'Bearer';
2565
2570
  /** @description Lifetime of the access token, in seconds. */
2566
2571
  expires_in: number;
2567
2572
  /** @description Newly issued refresh token. Single-use; reusing it revokes the entire token chain. */
@@ -2583,7 +2588,7 @@ interface components {
2583
2588
  * @description Author visibility status. One of `active` or `inactive`.
2584
2589
  * @enum {string}
2585
2590
  */
2586
- status?: "active" | "inactive";
2591
+ status?: 'active' | 'inactive';
2587
2592
  /** @description Storage ID of an uploaded avatar image (from `POST /v1/media/upload`). Pass `null` to clear an existing avatar. */
2588
2593
  avatarStorageId?: string | null;
2589
2594
  /** @description The author's personal website URL. Normalized to a canonical URL when stored. */
@@ -2621,7 +2626,7 @@ interface components {
2621
2626
  publishedAt?: string;
2622
2627
  title?: string;
2623
2628
  /** @enum {string} */
2624
- status?: "draft" | "scheduled" | "published";
2629
+ status?: 'draft' | 'scheduled' | 'published';
2625
2630
  };
2626
2631
  UpdateCompanyBody: {
2627
2632
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
@@ -2652,22 +2657,22 @@ interface components {
2652
2657
  * @description Employment type of the role.
2653
2658
  * @enum {string}
2654
2659
  */
2655
- employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
2660
+ employmentType?: 'full_time' | 'part_time' | 'contract' | 'internship' | 'temporary' | 'volunteer' | 'other';
2656
2661
  /**
2657
2662
  * @description Whether the role is on-site, hybrid, or fully remote.
2658
2663
  * @enum {string}
2659
2664
  */
2660
- remoteOption?: "on_site" | "hybrid" | "remote";
2665
+ remoteOption?: 'on_site' | 'hybrid' | 'remote';
2661
2666
  /** @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. */
2662
2667
  remotePermits?: {
2663
2668
  /** @enum {string} */
2664
- type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
2669
+ type: 'worldwide' | 'world_region' | 'continent' | 'region' | 'subregion' | 'subdivision' | 'country' | 'custom';
2665
2670
  value: string;
2666
2671
  }[];
2667
2672
  /** @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. */
2668
2673
  remoteTimezones?: {
2669
2674
  /** @enum {string} */
2670
- type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
2675
+ type: 'all' | 'world_region' | 'continent' | 'region' | 'subregion' | 'country' | 'timezone';
2671
2676
  value: string;
2672
2677
  plusMinus?: number;
2673
2678
  }[];
@@ -2675,12 +2680,12 @@ interface components {
2675
2680
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
2676
2681
  * @enum {string}
2677
2682
  */
2678
- remoteSponsorship?: "yes" | "no" | "unknown";
2683
+ remoteSponsorship?: 'yes' | 'no' | 'unknown';
2679
2684
  /**
2680
2685
  * @description Seniority level of the role.
2681
2686
  * @enum {string}
2682
2687
  */
2683
- seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
2688
+ seniority?: 'entry_level' | 'associate' | 'mid_level' | 'senior' | 'lead' | 'principal' | 'director' | 'executive';
2684
2689
  /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (which is normalized to `mailto:` form). */
2685
2690
  applicationUrl?: string;
2686
2691
  /** @description Minimum salary, in `salaryCurrency` units. */
@@ -2693,7 +2698,7 @@ interface components {
2693
2698
  * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
2694
2699
  * @enum {string}
2695
2700
  */
2696
- salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
2701
+ salaryTimeframe?: 'per_year' | 'per_month' | 'per_week' | 'per_day' | 'per_hour';
2697
2702
  /** @description Whether the job appears in featured slots on the public board. */
2698
2703
  isFeatured?: boolean;
2699
2704
  /** @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. */
@@ -2701,7 +2706,7 @@ interface components {
2701
2706
  /** @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. */
2702
2707
  publishedAt?: number;
2703
2708
  /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
2704
- educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
2709
+ educationRequirements?: ('high_school' | 'associate_degree' | 'bachelor_degree' | 'professional_certificate' | 'postgraduate_degree' | 'no_requirements')[];
2705
2710
  /** @description Minimum required experience, expressed in months. */
2706
2711
  experienceMonths?: number;
2707
2712
  /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
@@ -2710,11 +2715,11 @@ interface components {
2710
2715
  * @description Period denominator for `inOfficeFrequency`.
2711
2716
  * @enum {string}
2712
2717
  */
2713
- inOfficePeriod?: "per_week" | "per_month" | "per_year";
2718
+ inOfficePeriod?: 'per_week' | 'per_month' | 'per_year';
2714
2719
  /** @description How often the candidate must be in-office over `inOfficePeriod`. */
2715
2720
  inOfficeFrequency?: number;
2716
2721
  /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
2717
- officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
2722
+ officeLocations?: components['schemas']['JobOfficeLocationInput'][];
2718
2723
  /** @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. */
2719
2724
  externalId?: string;
2720
2725
  /** @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. */
@@ -2733,7 +2738,7 @@ interface components {
2733
2738
  * @description Tag visibility. One of `public` or `internal`.
2734
2739
  * @enum {string}
2735
2740
  */
2736
- visibility?: "public" | "internal";
2741
+ visibility?: 'public' | 'internal';
2737
2742
  /** @description SEO meta title for the tag page. */
2738
2743
  metaTitle?: string;
2739
2744
  /** @description SEO meta description for the tag page. */
@@ -2748,7 +2753,7 @@ interface components {
2748
2753
  * @description String representing the object's type. Objects of the same type share the same value.
2749
2754
  * @enum {string}
2750
2755
  */
2751
- object: "usage";
2756
+ object: 'usage';
2752
2757
  /** @description Number of jobs currently in `published` status. */
2753
2758
  activeJobs: number;
2754
2759
  /** @description Plan-enforced cap on the number of published jobs. */
@@ -2811,6 +2816,8 @@ type OfficeLocation = Schemas['JobOfficeLocation'];
2811
2816
  type RemoteOption = NonNullable<PublicJob['remoteOption']>;
2812
2817
  type EmploymentType = NonNullable<PublicJob['employmentType']>;
2813
2818
  type Seniority = NonNullable<PublicJob['seniority']>;
2819
+ /** Candidate-facing result ordering (ADR-0048); `relevance` is the default. */
2820
+ type JobSort = NonNullable<Schemas['PublicSearchJobsBody']['sort']>;
2814
2821
  type EducationRequirement = PublicJob['educationRequirements'][number];
2815
2822
  type RemotePermit = PublicJob['remotePermits'][number];
2816
2823
  type RemoteTimezone = PublicJob['remoteTimezones'][number];
@@ -2841,6 +2848,8 @@ type JobsListQuery = {
2841
2848
  remoteOption?: RemoteOption[];
2842
2849
  employmentType?: EmploymentType[];
2843
2850
  seniority?: Seniority[];
2851
+ /** Result ordering (ADR-0048). Absent ⇒ `relevance` (the featured-ranked browse). */
2852
+ sort?: JobSort;
2844
2853
  /** Place slug for a geo radius search; unresolvable slugs are ignored. */
2845
2854
  location?: string;
2846
2855
  /** Radius in km around `location` (10–250; default 50). */
@@ -2977,7 +2986,7 @@ declare function isConflict(e: unknown): e is BoardApiError;
2977
2986
  * constant because the package is platform-neutral and cannot read
2978
2987
  * package.json at runtime.
2979
2988
  */
2980
- declare const SDK_VERSION = "1.17.0";
2989
+ declare const SDK_VERSION = "1.19.0";
2981
2990
 
2982
2991
  type BoardUser = Schemas['BoardUser'];
2983
2992
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -3098,6 +3107,11 @@ type CompaniesListQuery = {
3098
3107
  marketSlug?: string;
3099
3108
  /** 1–100. */
3100
3109
  limit?: number;
3110
+ /**
3111
+ * Storefront page offset (companies to skip); takes precedence over
3112
+ * `cursor`. Pair with the response `count` to page in parallel.
3113
+ */
3114
+ offset?: number;
3101
3115
  };
3102
3116
  type CompanyJobsListQuery = {
3103
3117
  cursor?: string;
@@ -4588,4 +4602,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4588
4602
  };
4589
4603
  type BoardSdk = ReturnType<typeof createBoardClient>;
4590
4604
 
4591
- 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 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 JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type LocationSkillsIndex, type LocationTitlesIndex, type Logger, type LoginBody, type LogoutBody, 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 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 };
4605
+ 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 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 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 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 };