@cavuno/board 1.43.0 → 1.44.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.
@@ -128,7 +128,7 @@ interface components {
128
128
  remaining: number;
129
129
  };
130
130
  Alert: {
131
- /** @description Job-alert preference ID also the path key. */
131
+ /** @description Job-alert preference ID. Also the path key. */
132
132
  id: string;
133
133
  /** @enum {string} */
134
134
  object: "alert";
@@ -189,7 +189,7 @@ interface components {
189
189
  expiresAt: number | null;
190
190
  };
191
191
  Application: {
192
- /** @description Application ID the `:applicationId` path key. */
192
+ /** @description Application ID. Also the `:applicationId` path key. */
193
193
  id: string;
194
194
  /** @enum {string} */
195
195
  object: "application";
@@ -825,7 +825,7 @@ interface components {
825
825
  };
826
826
  /** @description Signed Convex storage URL + metadata for the uploaded resume, or `null` when no resume is on file (or the storage blob is missing). Treat the URL as sensitive PII. */
827
827
  CandidateResumeFile: {
828
- /** @description Convex storage download URL for the candidate resume. Unguessable; treat as sensitive PII it serves the candidate’s actual resume file. Short-lived: do not cache or store it; re-fetch the candidate to get a fresh URL. */
828
+ /** @description Convex storage download URL for the candidate resume. Unguessable; treat as sensitive PII. It serves the candidate’s actual resume file. Short-lived: do not cache or store it; re-fetch the candidate to get a fresh URL. */
829
829
  url: string;
830
830
  /** @description MIME type of the stored resume file. */
831
831
  contentType: string;
@@ -1396,7 +1396,7 @@ interface components {
1396
1396
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1397
1397
  value: string;
1398
1398
  }[];
1399
- /** @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. */
1399
+ /** @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. */
1400
1400
  remoteTimezones?: {
1401
1401
  /** @enum {string} */
1402
1402
  type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
@@ -1453,7 +1453,7 @@ interface components {
1453
1453
  officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
1454
1454
  /** @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. */
1455
1455
  externalId?: string;
1456
- /** @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. */
1456
+ /** @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. */
1457
1457
  customFieldValues?: {
1458
1458
  [key: string]: string | string[] | boolean | number | unknown | unknown;
1459
1459
  };
@@ -1461,7 +1461,7 @@ interface components {
1461
1461
  title: string;
1462
1462
  company?: components["schemas"]["InlineCompanyInput"];
1463
1463
  /**
1464
- * @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.
1464
+ * @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.
1465
1465
  * @enum {string}
1466
1466
  */
1467
1467
  status?: "draft" | "published";
@@ -1899,7 +1899,7 @@ interface components {
1899
1899
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1900
1900
  value: string;
1901
1901
  }[];
1902
- /** @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. */
1902
+ /** @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. */
1903
1903
  remoteTimezones?: {
1904
1904
  /** @enum {string} */
1905
1905
  type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
@@ -1961,7 +1961,7 @@ interface components {
1961
1961
  type: string;
1962
1962
  value: string;
1963
1963
  }[];
1964
- /** @description Read-only derived from `remotePermits`. */
1964
+ /** @description Read-only: derived from `remotePermits`. */
1965
1965
  remoteWorldwide: boolean | null;
1966
1966
  /** @description Hierarchical timezone selection. The flat `remoteAllowedTzOffsets` below is the read-only derived projection. */
1967
1967
  remoteTimezones: {
@@ -1969,11 +1969,11 @@ interface components {
1969
1969
  value: string;
1970
1970
  plusMinus?: number;
1971
1971
  }[];
1972
- /** @description Read-only derived from `remoteTimezones`. UTC hour offsets. */
1972
+ /** @description Read-only: derived from `remoteTimezones`. UTC hour offsets. */
1973
1973
  remoteAllowedTzOffsets: number[];
1974
- /** @description Read-only derived from `remotePermits`. ISO 3166-1 alpha-2. */
1974
+ /** @description Read-only: derived from `remotePermits`. ISO 3166-1 alpha-2. */
1975
1975
  remoteWorkPermitCountryCodes: string[];
1976
- /** @description Read-only derived from `remotePermits`. ISO 3166-2. */
1976
+ /** @description Read-only: derived from `remotePermits`. ISO 3166-2. */
1977
1977
  remoteWorkPermitSubdivisionCodes: string[];
1978
1978
  /**
1979
1979
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
@@ -2131,6 +2131,20 @@ interface components {
2131
2131
  hidden: boolean;
2132
2132
  position: number;
2133
2133
  };
2134
+ EmployerProfileStats: {
2135
+ /** @enum {string} */
2136
+ object: "employer_profile_stats";
2137
+ /** @description Company profile-page views over the all-time window (tabs and bots excluded). */
2138
+ profileViews: number;
2139
+ };
2140
+ EmployerProfileViewsPoint: {
2141
+ /** @enum {string} */
2142
+ object: "employer_profile_views_point";
2143
+ /** @description The UTC day this bucket covers (`YYYY-MM-DD`). */
2144
+ date: string;
2145
+ /** @description Company profile-page views on this day. */
2146
+ views: number;
2147
+ };
2134
2148
  EmployerSubscription: {
2135
2149
  id: string;
2136
2150
  /** @enum {string} */
@@ -2171,7 +2185,7 @@ interface components {
2171
2185
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
2172
2186
  value: string;
2173
2187
  }[];
2174
- /** @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. */
2188
+ /** @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. */
2175
2189
  remoteTimezones?: {
2176
2190
  /** @enum {string} */
2177
2191
  type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
@@ -2223,6 +2237,19 @@ interface components {
2223
2237
  /** @description The job title. */
2224
2238
  title?: string;
2225
2239
  };
2240
+ /** @description The error envelope returned by every non-2xx response. */
2241
+ Error: {
2242
+ error: {
2243
+ /** @description Machine-readable error code, such as `validation_bad_request` or `jobs_not_found`. */
2244
+ code: string;
2245
+ /** @description Human-readable explanation. */
2246
+ message: string;
2247
+ /** @description Unique id for this request. Include it when contacting support. */
2248
+ requestId: string;
2249
+ /** @description Structured context for some errors, such as per-field validation issues. */
2250
+ details?: unknown;
2251
+ };
2252
+ };
2226
2253
  FeatureDefinition: {
2227
2254
  id: string;
2228
2255
  /** @enum {string} */
@@ -2516,24 +2543,24 @@ interface components {
2516
2543
  description: string | null;
2517
2544
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
2518
2545
  applicationUrl: string | null;
2519
- /** @description Hierarchical permit selection authored by the caller. Lossless round-trip with the input `[{type:"world_region",value:"EMEA"}]` goes in and comes out the same. The three `remoteWorkPermit*` and `remoteWorldwide` fields below are read-only derived projections of this list. */
2546
+ /** @description Hierarchical permit selection authored by the caller. Lossless round-trip with the input: `[{type:"world_region",value:"EMEA"}]` goes in and comes out the same. The three `remoteWorkPermit*` and `remoteWorldwide` fields below are read-only derived projections of this list. */
2520
2547
  remotePermits: {
2521
2548
  type: string;
2522
2549
  value: string;
2523
2550
  }[];
2524
- /** @description Read-only derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
2551
+ /** @description Read-only: derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
2525
2552
  remoteWorldwide: boolean | null;
2526
- /** @description Hierarchical timezone selection. Lossless round-trip with the authored input. 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. The flat `remoteAllowedTzOffsets` field below is the read-only derived projection used by search. */
2553
+ /** @description Hierarchical timezone selection. Lossless round-trip with the authored input. 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. The flat `remoteAllowedTzOffsets` field below is the read-only derived projection used by search. */
2527
2554
  remoteTimezones: {
2528
2555
  type: string;
2529
2556
  value: string;
2530
2557
  plusMinus?: number;
2531
2558
  }[];
2532
- /** @description Read-only derived from `remoteTimezones` (per-country/per-region offset fan-out). UTC hour offsets used by the job-search index. */
2559
+ /** @description Read-only: derived from `remoteTimezones` (per-country/per-region offset fan-out). UTC hour offsets used by the job-search index. */
2533
2560
  remoteAllowedTzOffsets: number[];
2534
- /** @description Read-only derived from `remotePermits` (hierarchical groups fan out to alpha2 sets; subdivisions auto-add the parent country). ISO 3166-1 alpha-2 codes. */
2561
+ /** @description Read-only: derived from `remotePermits` (hierarchical groups fan out to alpha2 sets; subdivisions auto-add the parent country). ISO 3166-1 alpha-2 codes. */
2535
2562
  remoteWorkPermitCountryCodes: string[];
2536
- /** @description Read-only derived from `remotePermits` (subdivision entries only). ISO 3166-2 codes. */
2563
+ /** @description Read-only: derived from `remotePermits` (subdivision entries only). ISO 3166-2 codes. */
2537
2564
  remoteWorkPermitSubdivisionCodes: string[];
2538
2565
  /**
2539
2566
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
@@ -2788,7 +2815,7 @@ interface components {
2788
2815
  categories: string[];
2789
2816
  /** @description External identifier supplied by the caller on create, used for deduplication via `GET /v1/jobs?externalId=...`. `null` when no external identifier was set. */
2790
2817
  externalId: string | null;
2791
- /** @description Board-defined custom-field values for this job, keyed by the field `key` (the definitions are published at `GET /v1/settings/job-form`). Each value is returned as stored: a string (`short_text` / `long_text` / a `single_select` option key), a string array (`multi_select` option keys), a boolean, or a number. Always an object `{}` when the job has no custom-field values, never `null` or a missing field. Only real values are stored, so this never contains `null` or empty values. */
2818
+ /** @description Board-defined custom-field values for this job, keyed by the field `key` (the definitions are published at `GET /v1/settings/job-form`). Each value is returned as stored: a string (`short_text` / `long_text` / a `single_select` option key), a string array (`multi_select` option keys), a boolean, or a number. Always an object: `{}` when the job has no custom-field values, never `null` or a missing field. Only real values are stored, so this never contains `null` or empty values. */
2792
2819
  customFieldValues: {
2793
2820
  [key: string]: string | string[] | boolean | number;
2794
2821
  };
@@ -2801,7 +2828,7 @@ interface components {
2801
2828
  type: string;
2802
2829
  /** @description Page heading (H1), with `{{board_name}}` resolved. */
2803
2830
  title: string;
2804
- /** @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. */
2831
+ /** @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. */
2805
2832
  content: string;
2806
2833
  /** @enum {string} */
2807
2834
  contentFormat: "html";
@@ -2814,9 +2841,9 @@ interface components {
2814
2841
  LocationSalaryDetail: {
2815
2842
  /** @enum {string} */
2816
2843
  object: "location_salary_detail";
2817
- /** @description Immutable English source place slug the salary-stats key. */
2844
+ /** @description Immutable English source place slug: the salary-stats key. */
2818
2845
  sourceSlug: string;
2819
- /** @description Board-language canonical URL slug the starter 308 target. */
2846
+ /** @description Board-language canonical URL slug: the starter 308 target. */
2820
2847
  canonicalSlug: string;
2821
2848
  placeName: string;
2822
2849
  placeId: string;
@@ -2933,7 +2960,7 @@ interface components {
2933
2960
  MediaGet: components["schemas"]["MediaUpload"] & {
2934
2961
  /** @description Time at which the file was uploaded. ISO 8601 datetime. */
2935
2962
  uploadedAt: string;
2936
- /** @description Resources currently referencing this file. Currently always `[]` the resolver is not yet implemented. */
2963
+ /** @description Resources currently referencing this file. Currently always `[]`. The resolver is not yet implemented. */
2937
2964
  referencedBy: {
2938
2965
  /** @description Type of the resource referencing this file. */
2939
2966
  resourceType: string;
@@ -3156,7 +3183,7 @@ interface components {
3156
3183
  requireApprovalAggregatedJobs?: boolean;
3157
3184
  /** @description Whether visitors must sign in to view jobs. */
3158
3185
  registrationWallEnabled?: boolean;
3159
- /** @description Whether the board's built-in ATS receives applications. When `false` (external-applications-only board), posting surfaces require an external `applicationUrl` and `POST /boards/:identifier/jobs/:jobSlug/apply` rejects with `applications_native_disabled`. Turning this off UNPUBLISHES every published native-apply job (those with no external `applicationUrl`) back to draft via an asynchronous batched drain expect published job counts to shrink over the following seconds. Nothing is deleted, and re-enabling does NOT republish the drafted jobs. Absent means `true`. */
3186
+ /** @description Whether the board's built-in ATS receives applications. When `false` (external-applications-only board), posting surfaces require an external `applicationUrl` and `POST /boards/:identifier/jobs/:jobSlug/apply` rejects with `applications_native_disabled`. Turning this off UNPUBLISHES every published native-apply job (those with no external `applicationUrl`) back to draft via an asynchronous batched drain. Expect published job counts to shrink over the following seconds. Nothing is deleted, and re-enabling does NOT republish the drafted jobs. Absent means `true`. */
3160
3187
  nativeApplicationsEnabled?: boolean;
3161
3188
  /** @description Whether applicant↔employer messaging is enabled. When `false`, the `me/conversations` route family rejects with `messaging_disabled` and new-message emails are suppressed. Absent means `true`. */
3162
3189
  applicantMessagingEnabled?: boolean;
@@ -3201,7 +3228,7 @@ interface components {
3201
3228
  talentNavLabel?: string;
3202
3229
  /** @description Custom copy displayed on the password gate. Up to 500 characters. Pass `null` to clear. */
3203
3230
  passwordProtectionMessage?: string | "" | unknown | unknown;
3204
- /** @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. */
3231
+ /** @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. */
3205
3232
  config?: {
3206
3233
  [key: string]: unknown;
3207
3234
  };
@@ -3404,6 +3431,11 @@ interface components {
3404
3431
  cursor?: string | null;
3405
3432
  /** @description A limit on the number of objects to be returned. Limit can range between 1 and 50. */
3406
3433
  limit?: number;
3434
+ /**
3435
+ * @description The number of posts to skip — the search page offset. Takes precedence over `cursor`; pair with the response `count` to page in parallel. `offset + limit` may not exceed 10,000.
3436
+ * @example 0
3437
+ */
3438
+ offset?: number;
3407
3439
  };
3408
3440
  PublicBlogTag: components["schemas"]["PublicBlogTagEmbed"] & {
3409
3441
  /** @enum {string} */
@@ -3430,7 +3462,7 @@ interface components {
3430
3462
  primaryDomain: string | null;
3431
3463
  /** @description Whitelabel toggle (default `true`). Render the "Powered by Cavuno" badge unless `false`. */
3432
3464
  showCavunoBranding: boolean;
3433
- /** @description True ONLY for the platform sandbox fixture tenant the safe target for write probes (doctor tier 3); data is reset nightly. Every real tenant board is `false`. */
3465
+ /** @description True ONLY for the platform sandbox fixture tenant: the safe target for write probes (doctor tier 3); data is reset nightly. Every real tenant board is `false`. */
3434
3466
  sandbox: boolean;
3435
3467
  features: {
3436
3468
  jobAlerts: boolean;
@@ -3445,11 +3477,11 @@ interface components {
3445
3477
  impressum: boolean;
3446
3478
  /** @description Whether the board accepts native (on-board ATS) applications. `false` means external-applications-only: the server rejects native submissions to `POST /jobs/:jobSlug/apply` with `applications_native_disabled` (422). Clients should hide native apply UI and treat a job with no external `applicationUrl` as not-applyable. */
3447
3479
  nativeApplications: boolean;
3448
- /** @description Whether applicant↔employer messaging is enabled on the board. `false` means the `me/conversations` route family rejects with `messaging_disabled` (403) hide inbox/dock/Message CTAs. */
3480
+ /** @description Whether applicant↔employer messaging is enabled on the board. `false` means the `me/conversations` route family rejects with `messaging_disabled` (403). Hide inbox/dock/Message CTAs. */
3449
3481
  messaging: boolean;
3450
3482
  };
3451
3483
  /**
3452
- * @description The tri-state behind `features.talentDirectory` (which is `visibility === 'public'`). Link /talent whenever this is not `'off'` an employers-only directory renders a sign-in upsell for anonymous visitors, matching the hosted chrome.
3484
+ * @description The tri-state behind `features.talentDirectory` (which is `visibility === 'public'`). Link /talent whenever this is not `'off'`. An employers-only directory renders a sign-in upsell for anonymous visitors, matching the hosted chrome.
3453
3485
  * @enum {string}
3454
3486
  */
3455
3487
  talentDirectoryVisibility: "off" | "public" | "employers_only";
@@ -3476,9 +3508,9 @@ interface components {
3476
3508
  };
3477
3509
  };
3478
3510
  } | null;
3479
- /** @description Operator-defined custom job-field definitions (CAV-294), in display order. Board-wide; the frontend uses these to render and localize each job's opaque `customFieldValues`. Empty when the board defines none. Display-only not filterable or searchable in v1. */
3511
+ /** @description Operator-defined custom job-field definitions (CAV-294), in display order. Board-wide; the frontend uses these to render and localize each job's opaque `customFieldValues`. Empty when the board defines none. Display-only: not filterable or searchable in v1. */
3480
3512
  customFields: components["schemas"]["CustomFieldDefinition"][];
3481
- /** @description Stored operator label overrides by config group (`jobCardLabels`, `navLabels`, `breadcrumbsLabels`, …) plain-text chrome copy to merge over the `@cavuno/board` `uiCopy(language)` catalog via `uiCopy(language, labels)` (ADR-0059). Empty object when the board stores none. */
3513
+ /** @description Stored operator label overrides by config group (`jobCardLabels`, `navLabels`, `breadcrumbsLabels`, …): plain-text chrome copy to merge over the `@cavuno/board` `uiCopy(language)` catalog via `uiCopy(language, labels)` (ADR-0059). Empty object when the board stores none. */
3482
3514
  labels: {
3483
3515
  [key: string]: {
3484
3516
  [key: string]: string;
@@ -3486,7 +3518,7 @@ interface components {
3486
3518
  };
3487
3519
  /** @description Footer/brand data the hosted board footer renders (description, contact, website + social links, navigation order). The brand/social URLs (`websiteUrl`, `facebookUrl`, `linkedinUrl`, `xUrl`) are sanitized to absolute http(s); `customLinks[].url` is served verbatim (see its own note). */
3488
3520
  footer: {
3489
- /** @description Operator-written footer brand description. May carry a `{{board_name}}` placeholder resolve it before rendering. When null, fall back to the label catalog's `footer.defaultDescription` template. */
3521
+ /** @description Operator-written footer brand description. May carry a `{{board_name}}` placeholder. Resolve it before rendering. When null, fall back to the label catalog's `footer.defaultDescription` template. */
3490
3522
  description: string | null;
3491
3523
  /** @description Public contact email for the footer About column (render as `mailto:`). */
3492
3524
  contactEmail: string | null;
@@ -3495,9 +3527,9 @@ interface components {
3495
3527
  xUrl: string | null;
3496
3528
  facebookUrl: string | null;
3497
3529
  linkedinUrl: string | null;
3498
- /** @description Operator-configured navigation order: system item ids (`home`, `companies`, `pricing`, `blog`) and `custom:<id>` refs into `customLinks`. Empty when the operator never reordered render the system defaults. System items still gate on their feature flags (e.g. `blog` only when `features.blog`). */
3530
+ /** @description Operator-configured navigation order: system item ids (`home`, `companies`, `pricing`, `blog`) and `custom:<id>` refs into `customLinks`. Empty when the operator never reordered. Render the system defaults. System items still gate on their feature flags (e.g. `blog` only when `features.blog`). */
3499
3531
  navigationOrder: string[];
3500
- /** @description Operator-defined navigation links referenced from `navigationOrder` as `custom:<id>`; links not referenced there append after the system items (hosted-footer behavior). Each `url` is served verbatim (trimmed only) and may be a relative path (e.g. `/hub`) unlike the brand/social URLs it is NOT run through http(s) sanitization (matching the hosted footer, which supports relative links), so a consumer MUST sanitize it before binding to an anchor href. */
3532
+ /** @description Operator-defined navigation links referenced from `navigationOrder` as `custom:<id>`; links not referenced there append after the system items (hosted-footer behavior). Each `url` is served verbatim (trimmed only) and may be a relative path (e.g. `/hub`): unlike the brand/social URLs it is NOT run through http(s) sanitization (matching the hosted footer, which supports relative links), so a consumer MUST sanitize it before binding to an anchor href. */
3501
3533
  customLinks: {
3502
3534
  id: string;
3503
3535
  label: string;
@@ -3516,6 +3548,11 @@ interface components {
3516
3548
  cursor?: string | null;
3517
3549
  /** @description A limit on the number of objects to be returned. Limit can range between 1 and 100. */
3518
3550
  limit?: number;
3551
+ /**
3552
+ * @description The number of companies to skip — the company catalog page offset. Takes precedence over `cursor`; pair with the response `count` to page in parallel. `offset + limit` may not exceed 10,000.
3553
+ * @example 0
3554
+ */
3555
+ offset?: number;
3519
3556
  };
3520
3557
  /** @description Public-only links. The admin URL is intentionally omitted on public-board responses. */
3521
3558
  PublicCompanyLinks: {
@@ -3606,7 +3643,7 @@ interface components {
3606
3643
  type: string;
3607
3644
  value: string;
3608
3645
  }[];
3609
- /** @description Read-only derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
3646
+ /** @description Read-only: derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
3610
3647
  remoteWorldwide: boolean | null;
3611
3648
  /** @description Hierarchical timezone selection. The flat `remoteAllowedTzOffsets` field below is the read-only derived projection. */
3612
3649
  remoteTimezones: {
@@ -3614,11 +3651,11 @@ interface components {
3614
3651
  value: string;
3615
3652
  plusMinus?: number;
3616
3653
  }[];
3617
- /** @description Read-only derived from `remoteTimezones`. UTC hour offsets used by the job-search index. */
3654
+ /** @description Read-only: derived from `remoteTimezones`. UTC hour offsets used by the job-search index. */
3618
3655
  remoteAllowedTzOffsets: number[];
3619
- /** @description Read-only derived from `remotePermits` (hierarchical groups fan out to alpha2 sets; subdivisions auto-add the parent country). ISO 3166-1 alpha-2 codes. */
3656
+ /** @description Read-only: derived from `remotePermits` (hierarchical groups fan out to alpha2 sets; subdivisions auto-add the parent country). ISO 3166-1 alpha-2 codes. */
3620
3657
  remoteWorkPermitCountryCodes: string[];
3621
- /** @description Read-only derived from `remotePermits` (subdivision entries only). ISO 3166-2 codes. */
3658
+ /** @description Read-only: derived from `remotePermits` (subdivision entries only). ISO 3166-2 codes. */
3622
3659
  remoteWorkPermitSubdivisionCodes: string[];
3623
3660
  /**
3624
3661
  * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
@@ -3641,7 +3678,7 @@ interface components {
3641
3678
  company: components["schemas"]["JobCompany"];
3642
3679
  /** @description Physical office locations associated with the job. */
3643
3680
  officeLocations: components["schemas"]["JobOfficeLocation"][];
3644
- /** @description Resolved job categories (slug + board display name) same shape as the card; names joined server-side. */
3681
+ /** @description Resolved job categories (slug + board display name): same shape as the card; names joined server-side. */
3645
3682
  categories: {
3646
3683
  slug: string;
3647
3684
  name: string;
@@ -3656,7 +3693,7 @@ interface components {
3656
3693
  slug: string;
3657
3694
  name: string;
3658
3695
  }[];
3659
- /** @description Opaque, display-only custom-field values (CAV-294), keyed by each field's `key`. Values are the option `key`(s) for select fields, or the raw boolean/number/text otherwise resolve labels via the board's `customFields` definitions (see `GET /v1/boards/:identifier`). `{}` when the board defines no custom fields. Not filterable or searchable in v1. */
3696
+ /** @description Opaque, display-only custom-field values (CAV-294), keyed by each field's `key`. Values are the option `key`(s) for select fields, or the raw boolean/number/text otherwise. Resolve labels via the board's `customFields` definitions (see `GET /v1/boards/:identifier`). `{}` when the board defines no custom fields. Not filterable or searchable in v1. */
3660
3697
  customFieldValues: {
3661
3698
  [key: string]: string | string[] | boolean | number;
3662
3699
  };
@@ -3834,7 +3871,7 @@ interface components {
3834
3871
  */
3835
3872
  limit?: number;
3836
3873
  /**
3837
- * @description The number of jobs to skip the job catalog page offset. Takes precedence over `cursor`. `offset + limit` may not exceed 10,000.
3874
+ * @description The number of jobs to skip: the job catalog page offset. Takes precedence over `cursor`. `offset + limit` may not exceed 10,000.
3838
3875
  * @example 0
3839
3876
  */
3840
3877
  offset?: number;
@@ -3987,9 +4024,9 @@ interface components {
3987
4024
  segment: string;
3988
4025
  /** @description The aggregation interval (e.g. `1d`). */
3989
4026
  interval: string;
3990
- /** @description ISO date string inclusive start of the snapshot range. */
4027
+ /** @description ISO date string: inclusive start of the snapshot range. */
3991
4028
  rangeStart: string;
3992
- /** @description ISO date string inclusive end of the snapshot range. */
4029
+ /** @description ISO date string: inclusive end of the snapshot range. */
3993
4030
  rangeEnd: string;
3994
4031
  /** @description Provider-specific metric payload as collected. */
3995
4032
  payload?: unknown;
@@ -4006,15 +4043,15 @@ interface components {
4006
4043
  provider: string;
4007
4044
  /** @description Whether the integration is already fully connected. */
4008
4045
  connected: boolean;
4009
- /** @description OAuth providers only the URL the user must visit to grant access. */
4046
+ /** @description OAuth providers only. The URL the user must visit to grant access. */
4010
4047
  authorizationUrl?: string;
4011
- /** @description Search Console only the site-verification DNS token. */
4048
+ /** @description Search Console only: the site-verification DNS token. */
4012
4049
  verificationToken?: string;
4013
4050
  /** @description The board site URL the integration reports on. */
4014
4051
  siteUrl?: string;
4015
- /** @description Stripe only the Monetization settings deep link. */
4052
+ /** @description Stripe only: the Monetization settings deep link. */
4016
4053
  redirectUrl?: string;
4017
- /** @description Stripe only why no OAuth URL is returned. */
4054
+ /** @description Stripe only: why no OAuth URL is returned. */
4018
4055
  reason?: string;
4019
4056
  };
4020
4057
  ReportingIntegration: {
@@ -4172,7 +4209,7 @@ interface components {
4172
4209
  /** @description Display price text, e.g. "Contact us". */
4173
4210
  priceText: string;
4174
4211
  ctaText: string;
4175
- /** @description The CTA target a URL, mailto:, or tel: link. */
4212
+ /** @description The CTA target: a URL, mailto:, or tel: link. */
4176
4213
  ctaDestination: string;
4177
4214
  featuredBullets: string[];
4178
4215
  displayOrder: number;
@@ -4193,7 +4230,7 @@ interface components {
4193
4230
  id: string;
4194
4231
  /** @enum {string} */
4195
4232
  object: "saved_job";
4196
- /** @description The saved job also the DELETE path key. */
4233
+ /** @description The saved job id. Also the DELETE path key. */
4197
4234
  jobId: string;
4198
4235
  /** Format: date-time */
4199
4236
  savedAt: string;
@@ -4422,9 +4459,9 @@ interface components {
4422
4459
  SkillSalaryDetail: {
4423
4460
  /** @enum {string} */
4424
4461
  object: "skill_salary_detail";
4425
- /** @description Immutable English source slug the salary-stats key. */
4462
+ /** @description Immutable English source slug: the salary-stats key. */
4426
4463
  sourceSlug: string;
4427
- /** @description Board-language canonical URL slug the starter 308 target. */
4464
+ /** @description Board-language canonical URL slug: the starter 308 target. */
4428
4465
  canonicalSlug: string;
4429
4466
  skillName: string;
4430
4467
  overallSalary: {
@@ -4603,7 +4640,7 @@ interface components {
4603
4640
  title: string;
4604
4641
  companyName: string;
4605
4642
  companyUrl: string | null;
4606
- /** @description Absolute logo URL for the company, resolved from `companyUrl` the same way the hosted profile renders it; `null` when the company has no usable website. Render a monogram/initials fallback when `null` (and on image error the URL 404s when the brand has no icon). */
4643
+ /** @description Absolute logo URL for the company, resolved from `companyUrl` the same way the hosted profile renders it; `null` when the company has no usable website. Render a monogram/initials fallback when `null` (and on image error: the URL 404s when the brand has no icon). */
4607
4644
  companyLogoUrl: string | null;
4608
4645
  location: string | null;
4609
4646
  employmentType: string | null;
@@ -4752,9 +4789,9 @@ interface components {
4752
4789
  TitleSalaryDetail: {
4753
4790
  /** @enum {string} */
4754
4791
  object: "title_salary_detail";
4755
- /** @description Immutable English source slug the salary-stats key. */
4792
+ /** @description Immutable English source slug: the salary-stats key. */
4756
4793
  sourceSlug: string;
4757
- /** @description Board-language canonical URL slug the starter 308 target. */
4794
+ /** @description Board-language canonical URL slug: the starter 308 target. */
4758
4795
  canonicalSlug: string;
4759
4796
  categoryName: string;
4760
4797
  overallSalary: {
@@ -4836,7 +4873,7 @@ interface components {
4836
4873
  client_id?: string;
4837
4874
  /** @description OAuth client secret. May be supplied here or via HTTP Basic authentication. */
4838
4875
  client_secret?: string;
4839
- /** @description Optional scope narrowing. Currently ignored issued tokens always carry the full scope registered for the client. */
4876
+ /** @description Optional scope narrowing. Currently ignored: issued tokens always carry the full scope registered for the client. */
4840
4877
  scope?: string;
4841
4878
  };
4842
4879
  TokenResponse: {
@@ -5082,7 +5119,7 @@ interface components {
5082
5119
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
5083
5120
  value: string;
5084
5121
  }[];
5085
- /** @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. */
5122
+ /** @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. */
5086
5123
  remoteTimezones?: {
5087
5124
  /** @enum {string} */
5088
5125
  type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
@@ -5139,7 +5176,7 @@ interface components {
5139
5176
  officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
5140
5177
  /** @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. */
5141
5178
  externalId?: string;
5142
- /** @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. */
5179
+ /** @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. */
5143
5180
  customFieldValues?: {
5144
5181
  [key: string]: string | string[] | boolean | number | unknown | unknown;
5145
5182
  };
@@ -5227,7 +5264,7 @@ interface components {
5227
5264
  name?: string;
5228
5265
  };
5229
5266
  Usage: {
5230
- /** @description Unique identifier for the object. Equal to the account ID usage is a per-account singleton. */
5267
+ /** @description Unique identifier for the object. Equal to the account ID: usage is a per-account singleton. */
5231
5268
  id: string;
5232
5269
  /**
5233
5270
  * @description String representing the object's type. Objects of the same type share the same value.