@cavuno/board 4.53.0 → 4.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/{_spec-B4TxcV4W.d.mts → _spec-QzRtIJNE.d.mts} +75 -10
  3. package/dist/{_spec-B4TxcV4W.d.ts → _spec-QzRtIJNE.d.ts} +75 -10
  4. package/dist/{blog-BYuzCPFi.d.mts → blog-D32ONCap.d.mts} +1 -1
  5. package/dist/{blog-C1nsaLmM.d.ts → blog-DBYumoqv.d.ts} +1 -1
  6. package/dist/{board-BtipyMwh.d.ts → board-BXRsEJR8.d.ts} +6 -3
  7. package/dist/{board-j0KFqNBp.d.mts → board-Dc9RJzZs.d.mts} +6 -3
  8. package/dist/{breadcrumbs-BCEsjVMn.d.mts → breadcrumbs-CsG5emA0.d.mts} +2 -2
  9. package/dist/{breadcrumbs-BKpfMLqi.d.ts → breadcrumbs-DuT2G4a5.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/filters.d.mts +2 -2
  12. package/dist/filters.d.ts +2 -2
  13. package/dist/filters.js +2 -1
  14. package/dist/filters.mjs +2 -1
  15. package/dist/format.d.mts +4 -4
  16. package/dist/format.d.ts +4 -4
  17. package/dist/index.d.mts +74 -15
  18. package/dist/index.d.ts +74 -15
  19. package/dist/index.js +19 -2
  20. package/dist/index.mjs +19 -2
  21. package/dist/{jobs-BMJHIKTi.d.ts → jobs-BSc8fWRd.d.ts} +7 -1
  22. package/dist/{jobs-DKo4rx45.d.mts → jobs-Cu5SX_Yp.d.mts} +7 -1
  23. package/dist/{search-DVSEJ5aj.d.ts → search-Cc0D9AIG.d.ts} +1 -1
  24. package/dist/{search-DJQkMA5T.d.mts → search-D5GiEIK5.d.mts} +1 -1
  25. package/dist/{seo-CIOAZCuc.d.ts → seo-C0NRwuve.d.ts} +1 -1
  26. package/dist/{seo-D2oDCBT0.d.mts → seo-WA9kv-W8.d.mts} +1 -1
  27. package/dist/seo-files.d.mts +2 -2
  28. package/dist/seo-files.d.ts +2 -2
  29. package/dist/seo.d.mts +10 -6
  30. package/dist/seo.d.ts +10 -6
  31. package/dist/seo.js +1 -4
  32. package/dist/seo.mjs +1 -4
  33. package/dist/server.d.mts +6 -6
  34. package/dist/server.d.ts +6 -6
  35. package/dist/sitemap.d.mts +6 -6
  36. package/dist/sitemap.d.ts +6 -6
  37. package/dist/suggest.d.mts +2 -2
  38. package/dist/suggest.d.ts +2 -2
  39. package/package.json +1 -1
  40. package/skills/cavuno-board-filters/SKILL.md +4 -2
  41. package/skills/cavuno-board-talent-access/SKILL.md +4 -0
  42. package/skills/manifest.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,59 @@
3
3
  This changelog records changes that affect Board API compatibility, exported
4
4
  types, runtime behavior, or supported integration patterns.
5
5
 
6
+ ## 4.55.0 — 2026-10-27
7
+
8
+ - Names now come in the board's language as well as English, so a starter
9
+ on a translated board can show and link them without its own lookups.
10
+ The English `name`/`term` and `slug` are unchanged, so filters keep working.
11
+ - Job `skills` and `categories` (on every job card and on job detail) and
12
+ company `markets` carry `displayName` and `canonicalSlug`.
13
+ - `relatedSearches` entries on the jobs and companies lists carry
14
+ `displayName` and `canonicalSlug`.
15
+ - Link with `canonicalSlug`; it equals `slug` when a term has no
16
+ translation.
17
+ - `remoteTimezones` entries on job detail carry `label`, the area or time
18
+ zone named in the board's language.
19
+ - `officeLocations[].displayName` names the city and region in the board's
20
+ language as well as the country (for example
21
+ "Krefeld, Nordrhein-Westfalen, Deutschland").
22
+ - Job cards carry `remotePermits`, the same `{ type, value }` remote scopes
23
+ as job detail. Continent, region and subregion entries (on cards and job
24
+ detail) carry an optional `code`, a UN M.49 area code that
25
+ `Intl.DisplayNames` with `type: 'region'` accepts (`150` for Europe), so a
26
+ client can name the area in any language. Build the card's remote label
27
+ from these and fall back to `remoteLocationLabel`.
28
+ - `listingJsonLd` links each job by its `links.public` URL when present, so
29
+ boards with translated URLs publish the URL a job lives at rather than a
30
+ redirect.
31
+
32
+ ## 4.54.0 — 2026-10-27
33
+
34
+ - Jobs can be ordered nearest-first. `jobs.list`, `jobs.search`,
35
+ `companies.listJobs` and `embed.jobs` accept `sort: 'distance'` alongside a
36
+ `location` (and optional `radius`); jobs without a map point come last.
37
+ `sort: 'distance'` without a location that resolves to coordinates returns
38
+ 400 `sort_distance_requires_location`. `JOB_SORTS` includes `'distance'`.
39
+ - Job cards carry `distanceKm`: kilometres from the search location, or
40
+ `null` when the request has no location or the job has no map point.
41
+ It is present on every sort, not only `distance`.
42
+ - `talent.list` and talent-list member queries accept `sort: 'distance'`
43
+ with a `place`.
44
+ - Candidates can share their stored resume with employers.
45
+ `board.me.resume.update({ shareWithEmployers })` turns it on or off at any
46
+ time without re-uploading, and `me.resume.upload` takes the same option
47
+ (applied only with `keepResumeOnFile: true`). `me.resume.retrieve` returns
48
+ the current `shareWithEmployers`.
49
+ - `talent.retrieve` returns `resumeUrl`, an expiring signed download URL, to
50
+ a signed-in approved employer on the board when the candidate shares their
51
+ resume and has one on file; `null` otherwise. Turning sharing off stops new
52
+ URLs; one already issued works until it expires. Directory cards never
53
+ include it.
54
+ - The jobs `location` filter can name a country or region that the board's
55
+ remote jobs are open to, and location search suggests those places.
56
+ - Category and location page responses include the board's own `metaTitle`
57
+ and `metaDescription` when it has set them, for page 1 with no filters.
58
+
6
59
  ## 4.53.0 — 2026-10-21
7
60
 
8
61
  - Sponsored jobs (`isSponsored: true`) are being restricted to callers that
@@ -678,10 +678,14 @@ interface components {
678
678
  companyCount: number;
679
679
  };
680
680
  CompanyMarketRef: {
681
- /** @description Display name of the market. */
681
+ /** @description English source name of the market. */
682
682
  name: string;
683
683
  /** @description Source slug for the market. Use it as the `:market` segment of the market-scoped company browse. */
684
684
  slug: string;
685
+ /** @description The slug of the market's page in the board language. Equals `slug` when the market has no translation. Link market chips with this slug; the market-scoped company browse resolves it too. */
686
+ canonicalSlug: string;
687
+ /** @description The market name in the board language, for the chip label. Equals `name` when the market has no translation. */
688
+ displayName: string;
685
689
  };
686
690
  CompanyMember: {
687
691
  id: string;
@@ -1354,6 +1358,8 @@ interface components {
1354
1358
  /** @enum {string} */
1355
1359
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1356
1360
  value: string;
1361
+ /** @description Ignored on input. Job reads add it to some entries; send it back or leave it out. */
1362
+ code?: string;
1357
1363
  }[];
1358
1364
  /** @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. */
1359
1365
  remoteTimezones?: {
@@ -1427,6 +1433,8 @@ interface components {
1427
1433
  remotePermits: {
1428
1434
  type: string;
1429
1435
  value: string;
1436
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
1437
+ code?: string;
1430
1438
  }[];
1431
1439
  /** @description Read-only: derived from `remotePermits`. */
1432
1440
  remoteWorldwide: boolean | null;
@@ -1665,6 +1673,8 @@ interface components {
1665
1673
  /** @enum {string} */
1666
1674
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1667
1675
  value: string;
1676
+ /** @description Ignored on input. Job reads add it to some entries; send it back or leave it out. */
1677
+ code?: string;
1668
1678
  }[];
1669
1679
  /** @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. */
1670
1680
  remoteTimezones?: {
@@ -2709,6 +2719,8 @@ interface components {
2709
2719
  remotePermits: {
2710
2720
  type: string;
2711
2721
  value: string;
2722
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
2723
+ code?: string;
2712
2724
  }[];
2713
2725
  /** @description Read-only: derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
2714
2726
  remoteWorldwide: boolean | null;
@@ -2717,6 +2729,8 @@ interface components {
2717
2729
  type: string;
2718
2730
  value: string;
2719
2731
  plusMinus?: number;
2732
+ /** @description Display name of the entry in the board language: the country, continent, region or subregion name ("Europa"), or the time zone name ("Mitteleuropäische Zeit"). A `world_region` shows its acronym ("EMEA"; the full English name on an English board), `all` the name of the world ("Welt"), and a group without a localized name its English `value`. Render this instead of `value`. */
2733
+ label: string;
2720
2734
  }[];
2721
2735
  /** @description Read-only: derived from `remoteTimezones`. UTC hour offsets used by the job-search index. */
2722
2736
  remoteAllowedTzOffsets: number[];
@@ -2743,17 +2757,29 @@ interface components {
2743
2757
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
2744
2758
  inOfficeFrequency: number | null;
2745
2759
  company: components["schemas"]["JobCompany"];
2746
- /** @description Physical office locations associated with the job. */
2760
+ /** @description Physical office locations associated with the job. Each `displayName` is in the board's language (city, region and country, each where a translation exists); `city`, `region` and `country` stay as stored. */
2747
2761
  officeLocations: components["schemas"]["JobOfficeLocation"][];
2748
- /** @description Resolved job categories (slug + board display name): same shape as the card; names joined server-side. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug` — consumers never need to re-verify before linking. */
2762
+ /** @description Resolved job categories: same shape as the card; names joined server-side. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug` — consumers never need to re-verify before linking. */
2749
2763
  categories: {
2764
+ /** @description English source slug of the category. Accepted by the jobs `category` filter. */
2750
2765
  slug: string;
2766
+ /** @description English source name of the category. */
2751
2767
  name: string;
2768
+ /** @description The slug of the category's page in the board language. Equals `slug` when the category has no translation. Link chips with this slug. */
2769
+ canonicalSlug: string;
2770
+ /** @description The category name in the board language, for the chip label. Equals `name` when the category has no translation. */
2771
+ displayName: string;
2752
2772
  }[];
2753
- /** @description Resolved job skills (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug` — consumers never need to re-verify before linking. */
2773
+ /** @description Resolved job skills. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug` — consumers never need to re-verify before linking. */
2754
2774
  skills: {
2775
+ /** @description English source slug of the skill. Accepted by the jobs `skill` filter. */
2755
2776
  slug: string;
2777
+ /** @description English source name of the skill. */
2756
2778
  name: string;
2779
+ /** @description The slug of the skill's page in the board language. Equals `slug` when the skill has no translation. Link chips with this slug. */
2780
+ canonicalSlug: string;
2781
+ /** @description The skill name in the board language, for the chip label. Equals `name` when the skill has no translation. */
2782
+ displayName: string;
2757
2783
  }[];
2758
2784
  /** @description Place ancestor chain (country → region → city) for the breadcrumb. Link each entry with `canonicalSlug`; show `name`, which is in the board's language. `slug` stays the English source slug. */
2759
2785
  placeHierarchy: {
@@ -2871,6 +2897,13 @@ interface components {
2871
2897
  remoteWorldwide: boolean | null;
2872
2898
  /** @description ISO 3166-1 alpha-2 codes the remote permit selection covers (derived expansion, mirroring the job detail field of the same name). Empty for worldwide/unconstrained and non-remote jobs. */
2873
2899
  remoteWorkPermitCountryCodes: string[];
2900
+ /** @description The remote scopes the employer picked, with the same entries and order as the job detail field of the same name: `[{"type":"continent","value":"Europe","code":"150"},{"type":"country","value":"DE"}]`. Build the card label in the board language from it: name a `country` from its `value` and an area from its `code` with `Intl.DisplayNames`, and fall back to `remoteLocationLabel` for entries you cannot name. `[]` for non-remote jobs and for a remote job that declares no scope. */
2901
+ remotePermits: {
2902
+ type: string;
2903
+ value: string;
2904
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
2905
+ code?: string;
2906
+ }[];
2874
2907
  salaryMin: number | null;
2875
2908
  salaryMax: number | null;
2876
2909
  salaryCurrency: string | null;
@@ -2881,6 +2914,8 @@ interface components {
2881
2914
  /** @description Plain-text card teaser derived from the job description (HTML stripped, first sentence / word-boundary cut). `null` when there is nothing honest to show. Always present — independent of the `?fields=+description` opt-in for the long-form HTML body. Prefer this over requesting `+description` for list/card renders. */
2882
2915
  summary: string | null;
2883
2916
  locationLabel: string | null;
2917
+ /** @description Kilometres from the selected `location` to this job’s point. Computed at read time from the listing origin and the search hit — not stored. `null` when the listing has no origin or the job has no point. */
2918
+ distanceKm: number | null;
2884
2919
  /** @description Embedded company summary, or `null` if none is attached. */
2885
2920
  company: {
2886
2921
  slug: string;
@@ -2891,15 +2926,27 @@ interface components {
2891
2926
  [key: string]: string | string[] | boolean | number;
2892
2927
  };
2893
2928
  } | null;
2894
- /** @description Job categories (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug`. */
2929
+ /** @description Job categories. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug`. */
2895
2930
  categories: {
2931
+ /** @description English source slug of the category. Accepted by the jobs `category` filter. */
2896
2932
  slug: string;
2933
+ /** @description English source name of the category. */
2897
2934
  name: string;
2935
+ /** @description The slug of the category's page in the board language. Equals `slug` when the category has no translation. Link chips with this slug. */
2936
+ canonicalSlug: string;
2937
+ /** @description The category name in the board language, for the chip label. Equals `name` when the category has no translation. */
2938
+ displayName: string;
2898
2939
  }[];
2899
- /** @description Job skills (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug`. */
2940
+ /** @description Job skills. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug`. */
2900
2941
  skills: {
2942
+ /** @description English source slug of the skill. Accepted by the jobs `skill` filter. */
2901
2943
  slug: string;
2944
+ /** @description English source name of the skill. */
2902
2945
  name: string;
2946
+ /** @description The slug of the skill's page in the board language. Equals `slug` when the skill has no translation. Link chips with this slug. */
2947
+ canonicalSlug: string;
2948
+ /** @description The skill name in the board language, for the chip label. Equals `name` when the skill has no translation. */
2949
+ displayName: string;
2903
2950
  }[];
2904
2951
  /** @description The job's custom-field values of the select, boolean, and number types, keyed by each field's `key`; select values are option `key`s. Resolve labels via the board's `customFields.job` definitions (see `GET /v1/boards/:identifier`). Values of fields no longer defined, and removed options, are omitted; text types are only on the full job (`PublicJob`). `{}` when none. */
2905
2952
  customFieldValues: {
@@ -2978,10 +3025,10 @@ interface components {
2978
3025
  /** @description Free-text search query matched against job title and description. Up to 200 characters. */
2979
3026
  query?: string;
2980
3027
  /**
2981
- * @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.
3028
+ * @description Result ordering. `relevance` (default) ranks by search relevance with featured jobs first; `newest` orders by publish date, `salary_high` by salary (no-salary jobs last), and `distance` nearest-first from `filters.location` (jobs without a point last). `distance` requires a location that resolves to coordinates (`sort_distance_requires_location` otherwise). Any explicit sort unpins featured jobs.
2982
3029
  * @enum {string}
2983
3030
  */
2984
- sort?: "relevance" | "newest" | "salary_high";
3031
+ sort?: "relevance" | "newest" | "salary_high" | "distance";
2985
3032
  /** @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. */
2986
3033
  filters?: {
2987
3034
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
@@ -3011,7 +3058,7 @@ interface components {
3011
3058
  */
3012
3059
  lte?: string;
3013
3060
  };
3014
- /** @description Only return jobs in the place with this slug, including the places inside it (a region includes its cities). Pass `radius` to widen a city or locality to nearby jobs. A place slug from `GET /places/suggest` returns jobs within `radius` km of that place, by default a distance that suits its size. Unresolvable slugs are ignored. */
3061
+ /** @description Only return jobs in the place with this slug, including the places inside it (a region includes its cities). The slug can also name a country or region remote jobs on the board are open to, as `GET /places?q=` suggests. Pass `radius` to widen a city or locality to nearby jobs. A place slug from `GET /places/suggest` returns jobs within `radius` km of that place, by default a distance that suits its size. Unresolvable slugs are ignored. */
3015
3062
  location?: string;
3016
3063
  /** @description Widen a city or locality `location` to also return jobs placed in a city or locality within this many kilometres of the place (1–250; decimals allowed, e.g. `8.05` for 5 miles). Omit for jobs in the place itself. Ignored for region and country places, and without `location`. For a place from `GET /places/suggest`, an omitted `radius` uses the place's own default distance: 15 km for a neighbourhood, 25 km for a town, 50 km for a city. */
3017
3064
  radius?: number;
@@ -3077,6 +3124,10 @@ interface components {
3077
3124
  geo: components["schemas"]["TaxonomyGeo"];
3078
3125
  /** @description The board's intro for this category or location page, as sanitized HTML. Absent when the page has none. Show it on page 1 with no filters. */
3079
3126
  introHtml?: string;
3127
+ /** @description The board's `<title>` for this category or location page, to use as written in place of your own title on page 1 with no filters. Absent when the board has not set one. */
3128
+ metaTitle?: string;
3129
+ /** @description The board's meta description for this category or location page, to use as written on page 1 with no filters. Absent when the board has not set one. */
3130
+ metaDescription?: string;
3080
3131
  /** @description Present, and `true`, when a place slug resolved to a place from `GET /boards/{identifier}/places/suggest` instead of one of the board's places; absent for every other resolution. Its location page lists the jobs within the place's own default distance (pass the slug as the jobs `location` with no `radius`). Index that page only when it lists at least 5 on-site or hybrid jobs: read `count` from `GET /boards/{identifier}/jobs?location={slug}&remoteOption=on_site&remoteOption=hybrid&limit=1`, in parallel with the page's own job read, and emit `noindex, follow` below 5. Remote jobs still list on the page and count in its headline; they only do not count toward indexing. A view with an explicit `radius` stays `noindex, follow`. Only suggested places need this read. */
3081
3132
  suggested?: boolean;
3082
3133
  /** @description The breadcrumb above a suggested place, country first: its country, its region and, for a neighbourhood or suburb (`geo.placeType` `locality`), its city. Present when `suggested` is `true`, absent otherwise. Render Jobs > each ancestor > the place (`displayName`), with the same BreadcrumbList JSON-LD as for the board's own places; link an ancestor to `/jobs/locations/:canonicalSlug` only when its `canonicalSlug` is not `null`. */
@@ -3338,6 +3389,8 @@ interface components {
3338
3389
  parsedAt: string | null;
3339
3390
  keepResumeOnFile: boolean | null;
3340
3391
  hasResumeOnFile: boolean;
3392
+ /** @description When true, signed-in approved employers on this board receive an expiring `resumeUrl` on `GET /talent/{handle}`. Default false. Distinct from `keepResumeOnFile` (application downloads). */
3393
+ shareWithEmployers: boolean;
3341
3394
  file: {
3342
3395
  /** @description Short-lived signed download URL. */
3343
3396
  url: string;
@@ -3616,11 +3669,15 @@ interface components {
3616
3669
  StartConversationBody: {
3617
3670
  candidateBoardUserId: string;
3618
3671
  body: string;
3672
+ /** @description Approved company whose message credits to use. Omit to retain the default company. */
3673
+ companyId?: string;
3619
3674
  /** @description Optional job id. When set, this send is from that job pipeline and may auto-advance Shortlisted to Contacted. */
3620
3675
  job?: string;
3621
3676
  } | {
3622
3677
  candidateHandle: string;
3623
3678
  body: string;
3679
+ /** @description Approved company whose message credits to use. Omit to retain the default company. */
3680
+ companyId?: string;
3624
3681
  /** @description Optional job id. When set, this send is from that job pipeline and may auto-advance Shortlisted to Contacted. */
3625
3682
  job?: string;
3626
3683
  };
@@ -3715,6 +3772,8 @@ interface components {
3715
3772
  displayName: string | null;
3716
3773
  headline: string | null;
3717
3774
  location: string | null;
3775
+ /** @description Kilometres from the selected `place` to this candidate’s home point. Computed at read time from the listing origin and the search hit — not stored. `null` when the listing has no origin or the candidate has no point. */
3776
+ distanceKm: number | null;
3718
3777
  avatarUrl: string | null;
3719
3778
  /** @description Plain-text card teaser derived from `bio` (HTML stripped, first sentence / word-boundary cut). `null` when there is nothing honest to show. Prefer this over `bio` for directory/card renders; cards still lead with `headline` when present. */
3720
3779
  summary: string | null;
@@ -3769,7 +3828,7 @@ interface components {
3769
3828
  openToRelocate?: boolean;
3770
3829
  place?: string;
3771
3830
  /** @enum {string} */
3772
- sort?: "relevance" | "newest";
3831
+ sort?: "relevance" | "newest" | "distance";
3773
3832
  seniority?: string;
3774
3833
  permitCountry?: string;
3775
3834
  interestedRole?: string;
@@ -3853,6 +3912,8 @@ interface components {
3853
3912
  * @enum {string|null}
3854
3913
  */
3855
3914
  lastActive: "today" | "this_week" | "this_month" | "last_3_months" | "over_3_months" | null;
3915
+ /** @description Expiring signed download URL for the candidate’s stored resume. Only returned to a signed-in approved employer on this board, and only when the candidate opted in to share it with employers and a file is on file; `null` otherwise. Turning sharing off stops new URLs; a URL already issued works until it expires. Never present on directory cards. */
3916
+ resumeUrl: string | null;
3856
3917
  };
3857
3918
  TalentUnlock: {
3858
3919
  /** @enum {string} */
@@ -4161,6 +4222,10 @@ interface components {
4161
4222
  label?: string;
4162
4223
  hidden?: boolean;
4163
4224
  };
4225
+ UpdateResumeBody: {
4226
+ /** @description When true, signed-in approved employers on this board receive an expiring `resumeUrl` on `GET /talent/{handle}`. Distinct from `keepResumeOnFile`. */
4227
+ shareWithEmployers: boolean;
4228
+ };
4164
4229
  UpdateSkillsBody: {
4165
4230
  skills: string[];
4166
4231
  };
@@ -678,10 +678,14 @@ interface components {
678
678
  companyCount: number;
679
679
  };
680
680
  CompanyMarketRef: {
681
- /** @description Display name of the market. */
681
+ /** @description English source name of the market. */
682
682
  name: string;
683
683
  /** @description Source slug for the market. Use it as the `:market` segment of the market-scoped company browse. */
684
684
  slug: string;
685
+ /** @description The slug of the market's page in the board language. Equals `slug` when the market has no translation. Link market chips with this slug; the market-scoped company browse resolves it too. */
686
+ canonicalSlug: string;
687
+ /** @description The market name in the board language, for the chip label. Equals `name` when the market has no translation. */
688
+ displayName: string;
685
689
  };
686
690
  CompanyMember: {
687
691
  id: string;
@@ -1354,6 +1358,8 @@ interface components {
1354
1358
  /** @enum {string} */
1355
1359
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1356
1360
  value: string;
1361
+ /** @description Ignored on input. Job reads add it to some entries; send it back or leave it out. */
1362
+ code?: string;
1357
1363
  }[];
1358
1364
  /** @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. */
1359
1365
  remoteTimezones?: {
@@ -1427,6 +1433,8 @@ interface components {
1427
1433
  remotePermits: {
1428
1434
  type: string;
1429
1435
  value: string;
1436
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
1437
+ code?: string;
1430
1438
  }[];
1431
1439
  /** @description Read-only: derived from `remotePermits`. */
1432
1440
  remoteWorldwide: boolean | null;
@@ -1665,6 +1673,8 @@ interface components {
1665
1673
  /** @enum {string} */
1666
1674
  type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1667
1675
  value: string;
1676
+ /** @description Ignored on input. Job reads add it to some entries; send it back or leave it out. */
1677
+ code?: string;
1668
1678
  }[];
1669
1679
  /** @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. */
1670
1680
  remoteTimezones?: {
@@ -2709,6 +2719,8 @@ interface components {
2709
2719
  remotePermits: {
2710
2720
  type: string;
2711
2721
  value: string;
2722
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
2723
+ code?: string;
2712
2724
  }[];
2713
2725
  /** @description Read-only: derived from `remotePermits`. `true` only when the authored selection is a single `{type:"worldwide"}` entry. */
2714
2726
  remoteWorldwide: boolean | null;
@@ -2717,6 +2729,8 @@ interface components {
2717
2729
  type: string;
2718
2730
  value: string;
2719
2731
  plusMinus?: number;
2732
+ /** @description Display name of the entry in the board language: the country, continent, region or subregion name ("Europa"), or the time zone name ("Mitteleuropäische Zeit"). A `world_region` shows its acronym ("EMEA"; the full English name on an English board), `all` the name of the world ("Welt"), and a group without a localized name its English `value`. Render this instead of `value`. */
2733
+ label: string;
2720
2734
  }[];
2721
2735
  /** @description Read-only: derived from `remoteTimezones`. UTC hour offsets used by the job-search index. */
2722
2736
  remoteAllowedTzOffsets: number[];
@@ -2743,17 +2757,29 @@ interface components {
2743
2757
  /** @description How often the candidate must be in-office over `inOfficePeriod`, or `null` if not specified. */
2744
2758
  inOfficeFrequency: number | null;
2745
2759
  company: components["schemas"]["JobCompany"];
2746
- /** @description Physical office locations associated with the job. */
2760
+ /** @description Physical office locations associated with the job. Each `displayName` is in the board's language (city, region and country, each where a translation exists); `city`, `region` and `country` stay as stored. */
2747
2761
  officeLocations: components["schemas"]["JobOfficeLocation"][];
2748
- /** @description Resolved job categories (slug + board display name): same shape as the card; names joined server-side. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug` — consumers never need to re-verify before linking. */
2762
+ /** @description Resolved job categories: same shape as the card; names joined server-side. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug` — consumers never need to re-verify before linking. */
2749
2763
  categories: {
2764
+ /** @description English source slug of the category. Accepted by the jobs `category` filter. */
2750
2765
  slug: string;
2766
+ /** @description English source name of the category. */
2751
2767
  name: string;
2768
+ /** @description The slug of the category's page in the board language. Equals `slug` when the category has no translation. Link chips with this slug. */
2769
+ canonicalSlug: string;
2770
+ /** @description The category name in the board language, for the chip label. Equals `name` when the category has no translation. */
2771
+ displayName: string;
2752
2772
  }[];
2753
- /** @description Resolved job skills (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug` — consumers never need to re-verify before linking. */
2773
+ /** @description Resolved job skills. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug` — consumers never need to re-verify before linking. */
2754
2774
  skills: {
2775
+ /** @description English source slug of the skill. Accepted by the jobs `skill` filter. */
2755
2776
  slug: string;
2777
+ /** @description English source name of the skill. */
2756
2778
  name: string;
2779
+ /** @description The slug of the skill's page in the board language. Equals `slug` when the skill has no translation. Link chips with this slug. */
2780
+ canonicalSlug: string;
2781
+ /** @description The skill name in the board language, for the chip label. Equals `name` when the skill has no translation. */
2782
+ displayName: string;
2757
2783
  }[];
2758
2784
  /** @description Place ancestor chain (country → region → city) for the breadcrumb. Link each entry with `canonicalSlug`; show `name`, which is in the board's language. `slug` stays the English source slug. */
2759
2785
  placeHierarchy: {
@@ -2871,6 +2897,13 @@ interface components {
2871
2897
  remoteWorldwide: boolean | null;
2872
2898
  /** @description ISO 3166-1 alpha-2 codes the remote permit selection covers (derived expansion, mirroring the job detail field of the same name). Empty for worldwide/unconstrained and non-remote jobs. */
2873
2899
  remoteWorkPermitCountryCodes: string[];
2900
+ /** @description The remote scopes the employer picked, with the same entries and order as the job detail field of the same name: `[{"type":"continent","value":"Europe","code":"150"},{"type":"country","value":"DE"}]`. Build the card label in the board language from it: name a `country` from its `value` and an area from its `code` with `Intl.DisplayNames`, and fall back to `remoteLocationLabel` for entries you cannot name. `[]` for non-remote jobs and for a remote job that declares no scope. */
2901
+ remotePermits: {
2902
+ type: string;
2903
+ value: string;
2904
+ /** @description UN M.49 area code of a `continent`, `region` or `subregion` entry (e.g. `"150"` for Europe, `"019"` for the Americas, `"155"` for Western Europe). It is a code `Intl.DisplayNames` with `type: "region"` accepts, so a client can name the area in any language: `new Intl.DisplayNames(["de"], { type: "region" }).of("150")` is `"Europa"`. Absent for areas without a standard code (e.g. "Central Europe"), for `world_region` and `custom` entries, and for `country` and `subdivision` entries, whose `value` is already an ISO 3166-1 alpha-2 or ISO 3166-2 code. */
2905
+ code?: string;
2906
+ }[];
2874
2907
  salaryMin: number | null;
2875
2908
  salaryMax: number | null;
2876
2909
  salaryCurrency: string | null;
@@ -2881,6 +2914,8 @@ interface components {
2881
2914
  /** @description Plain-text card teaser derived from the job description (HTML stripped, first sentence / word-boundary cut). `null` when there is nothing honest to show. Always present — independent of the `?fields=+description` opt-in for the long-form HTML body. Prefer this over requesting `+description` for list/card renders. */
2882
2915
  summary: string | null;
2883
2916
  locationLabel: string | null;
2917
+ /** @description Kilometres from the selected `location` to this job’s point. Computed at read time from the listing origin and the search hit — not stored. `null` when the listing has no origin or the job has no point. */
2918
+ distanceKm: number | null;
2884
2919
  /** @description Embedded company summary, or `null` if none is attached. */
2885
2920
  company: {
2886
2921
  slug: string;
@@ -2891,15 +2926,27 @@ interface components {
2891
2926
  [key: string]: string | string[] | boolean | number;
2892
2927
  };
2893
2928
  } | null;
2894
- /** @description Job categories (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug`. */
2929
+ /** @description Job categories. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/categories/:slug`. */
2895
2930
  categories: {
2931
+ /** @description English source slug of the category. Accepted by the jobs `category` filter. */
2896
2932
  slug: string;
2933
+ /** @description English source name of the category. */
2897
2934
  name: string;
2935
+ /** @description The slug of the category's page in the board language. Equals `slug` when the category has no translation. Link chips with this slug. */
2936
+ canonicalSlug: string;
2937
+ /** @description The category name in the board language, for the chip label. Equals `name` when the category has no translation. */
2938
+ displayName: string;
2898
2939
  }[];
2899
- /** @description Job skills (slug + board display name). Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug`. */
2940
+ /** @description Job skills. Show `displayName` and link with `canonicalSlug` (board language); `name` and `slug` stay English. Guaranteed resolvable: every emitted slug resolves via `GET /v1/boards/:identifier/skills/:slug`. */
2900
2941
  skills: {
2942
+ /** @description English source slug of the skill. Accepted by the jobs `skill` filter. */
2901
2943
  slug: string;
2944
+ /** @description English source name of the skill. */
2902
2945
  name: string;
2946
+ /** @description The slug of the skill's page in the board language. Equals `slug` when the skill has no translation. Link chips with this slug. */
2947
+ canonicalSlug: string;
2948
+ /** @description The skill name in the board language, for the chip label. Equals `name` when the skill has no translation. */
2949
+ displayName: string;
2903
2950
  }[];
2904
2951
  /** @description The job's custom-field values of the select, boolean, and number types, keyed by each field's `key`; select values are option `key`s. Resolve labels via the board's `customFields.job` definitions (see `GET /v1/boards/:identifier`). Values of fields no longer defined, and removed options, are omitted; text types are only on the full job (`PublicJob`). `{}` when none. */
2905
2952
  customFieldValues: {
@@ -2978,10 +3025,10 @@ interface components {
2978
3025
  /** @description Free-text search query matched against job title and description. Up to 200 characters. */
2979
3026
  query?: string;
2980
3027
  /**
2981
- * @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.
3028
+ * @description Result ordering. `relevance` (default) ranks by search relevance with featured jobs first; `newest` orders by publish date, `salary_high` by salary (no-salary jobs last), and `distance` nearest-first from `filters.location` (jobs without a point last). `distance` requires a location that resolves to coordinates (`sort_distance_requires_location` otherwise). Any explicit sort unpins featured jobs.
2982
3029
  * @enum {string}
2983
3030
  */
2984
- sort?: "relevance" | "newest" | "salary_high";
3031
+ sort?: "relevance" | "newest" | "salary_high" | "distance";
2985
3032
  /** @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. */
2986
3033
  filters?: {
2987
3034
  /** @description Only return jobs at any of the given company IDs. Up to 10 values. */
@@ -3011,7 +3058,7 @@ interface components {
3011
3058
  */
3012
3059
  lte?: string;
3013
3060
  };
3014
- /** @description Only return jobs in the place with this slug, including the places inside it (a region includes its cities). Pass `radius` to widen a city or locality to nearby jobs. A place slug from `GET /places/suggest` returns jobs within `radius` km of that place, by default a distance that suits its size. Unresolvable slugs are ignored. */
3061
+ /** @description Only return jobs in the place with this slug, including the places inside it (a region includes its cities). The slug can also name a country or region remote jobs on the board are open to, as `GET /places?q=` suggests. Pass `radius` to widen a city or locality to nearby jobs. A place slug from `GET /places/suggest` returns jobs within `radius` km of that place, by default a distance that suits its size. Unresolvable slugs are ignored. */
3015
3062
  location?: string;
3016
3063
  /** @description Widen a city or locality `location` to also return jobs placed in a city or locality within this many kilometres of the place (1–250; decimals allowed, e.g. `8.05` for 5 miles). Omit for jobs in the place itself. Ignored for region and country places, and without `location`. For a place from `GET /places/suggest`, an omitted `radius` uses the place's own default distance: 15 km for a neighbourhood, 25 km for a town, 50 km for a city. */
3017
3064
  radius?: number;
@@ -3077,6 +3124,10 @@ interface components {
3077
3124
  geo: components["schemas"]["TaxonomyGeo"];
3078
3125
  /** @description The board's intro for this category or location page, as sanitized HTML. Absent when the page has none. Show it on page 1 with no filters. */
3079
3126
  introHtml?: string;
3127
+ /** @description The board's `<title>` for this category or location page, to use as written in place of your own title on page 1 with no filters. Absent when the board has not set one. */
3128
+ metaTitle?: string;
3129
+ /** @description The board's meta description for this category or location page, to use as written on page 1 with no filters. Absent when the board has not set one. */
3130
+ metaDescription?: string;
3080
3131
  /** @description Present, and `true`, when a place slug resolved to a place from `GET /boards/{identifier}/places/suggest` instead of one of the board's places; absent for every other resolution. Its location page lists the jobs within the place's own default distance (pass the slug as the jobs `location` with no `radius`). Index that page only when it lists at least 5 on-site or hybrid jobs: read `count` from `GET /boards/{identifier}/jobs?location={slug}&remoteOption=on_site&remoteOption=hybrid&limit=1`, in parallel with the page's own job read, and emit `noindex, follow` below 5. Remote jobs still list on the page and count in its headline; they only do not count toward indexing. A view with an explicit `radius` stays `noindex, follow`. Only suggested places need this read. */
3081
3132
  suggested?: boolean;
3082
3133
  /** @description The breadcrumb above a suggested place, country first: its country, its region and, for a neighbourhood or suburb (`geo.placeType` `locality`), its city. Present when `suggested` is `true`, absent otherwise. Render Jobs > each ancestor > the place (`displayName`), with the same BreadcrumbList JSON-LD as for the board's own places; link an ancestor to `/jobs/locations/:canonicalSlug` only when its `canonicalSlug` is not `null`. */
@@ -3338,6 +3389,8 @@ interface components {
3338
3389
  parsedAt: string | null;
3339
3390
  keepResumeOnFile: boolean | null;
3340
3391
  hasResumeOnFile: boolean;
3392
+ /** @description When true, signed-in approved employers on this board receive an expiring `resumeUrl` on `GET /talent/{handle}`. Default false. Distinct from `keepResumeOnFile` (application downloads). */
3393
+ shareWithEmployers: boolean;
3341
3394
  file: {
3342
3395
  /** @description Short-lived signed download URL. */
3343
3396
  url: string;
@@ -3616,11 +3669,15 @@ interface components {
3616
3669
  StartConversationBody: {
3617
3670
  candidateBoardUserId: string;
3618
3671
  body: string;
3672
+ /** @description Approved company whose message credits to use. Omit to retain the default company. */
3673
+ companyId?: string;
3619
3674
  /** @description Optional job id. When set, this send is from that job pipeline and may auto-advance Shortlisted to Contacted. */
3620
3675
  job?: string;
3621
3676
  } | {
3622
3677
  candidateHandle: string;
3623
3678
  body: string;
3679
+ /** @description Approved company whose message credits to use. Omit to retain the default company. */
3680
+ companyId?: string;
3624
3681
  /** @description Optional job id. When set, this send is from that job pipeline and may auto-advance Shortlisted to Contacted. */
3625
3682
  job?: string;
3626
3683
  };
@@ -3715,6 +3772,8 @@ interface components {
3715
3772
  displayName: string | null;
3716
3773
  headline: string | null;
3717
3774
  location: string | null;
3775
+ /** @description Kilometres from the selected `place` to this candidate’s home point. Computed at read time from the listing origin and the search hit — not stored. `null` when the listing has no origin or the candidate has no point. */
3776
+ distanceKm: number | null;
3718
3777
  avatarUrl: string | null;
3719
3778
  /** @description Plain-text card teaser derived from `bio` (HTML stripped, first sentence / word-boundary cut). `null` when there is nothing honest to show. Prefer this over `bio` for directory/card renders; cards still lead with `headline` when present. */
3720
3779
  summary: string | null;
@@ -3769,7 +3828,7 @@ interface components {
3769
3828
  openToRelocate?: boolean;
3770
3829
  place?: string;
3771
3830
  /** @enum {string} */
3772
- sort?: "relevance" | "newest";
3831
+ sort?: "relevance" | "newest" | "distance";
3773
3832
  seniority?: string;
3774
3833
  permitCountry?: string;
3775
3834
  interestedRole?: string;
@@ -3853,6 +3912,8 @@ interface components {
3853
3912
  * @enum {string|null}
3854
3913
  */
3855
3914
  lastActive: "today" | "this_week" | "this_month" | "last_3_months" | "over_3_months" | null;
3915
+ /** @description Expiring signed download URL for the candidate’s stored resume. Only returned to a signed-in approved employer on this board, and only when the candidate opted in to share it with employers and a file is on file; `null` otherwise. Turning sharing off stops new URLs; a URL already issued works until it expires. Never present on directory cards. */
3916
+ resumeUrl: string | null;
3856
3917
  };
3857
3918
  TalentUnlock: {
3858
3919
  /** @enum {string} */
@@ -4161,6 +4222,10 @@ interface components {
4161
4222
  label?: string;
4162
4223
  hidden?: boolean;
4163
4224
  };
4225
+ UpdateResumeBody: {
4226
+ /** @description When true, signed-in approved employers on this board receive an expiring `resumeUrl` on `GET /talent/{handle}`. Distinct from `keepResumeOnFile`. */
4227
+ shareWithEmployers: boolean;
4228
+ };
4164
4229
  UpdateSkillsBody: {
4165
4230
  skills: string[];
4166
4231
  };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B4TxcV4W.mjs';
1
+ import { S as Schemas } from './_spec-QzRtIJNE.mjs';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B4TxcV4W.js';
1
+ import { S as Schemas } from './_spec-QzRtIJNE.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,8 +1,11 @@
1
- import { S as Schemas } from './_spec-B4TxcV4W.js';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-BMJHIKTi.js';
1
+ import { S as Schemas } from './_spec-QzRtIJNE.js';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-BSc8fWRd.js';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
- /** A market (sector) a company operates in — name + its source slug. */
5
+ /**
6
+ * A market (sector) a company operates in — English name + source slug, plus
7
+ * its board-language `displayName` and the `canonicalSlug` its page lives at.
8
+ */
6
9
  type CompanyMarketRef = Schemas['CompanyMarketRef'];
7
10
  /** The company DETAIL shape — `PublicCompany` plus `markets` (detail-only). */
8
11
  type PublicCompanyDetail = Schemas['CompanyPublicDetail'];
@@ -1,8 +1,11 @@
1
- import { S as Schemas } from './_spec-B4TxcV4W.mjs';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-DKo4rx45.mjs';
1
+ import { S as Schemas } from './_spec-QzRtIJNE.mjs';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-Cu5SX_Yp.mjs';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
- /** A market (sector) a company operates in — name + its source slug. */
5
+ /**
6
+ * A market (sector) a company operates in — English name + source slug, plus
7
+ * its board-language `displayName` and the `canonicalSlug` its page lives at.
8
+ */
6
9
  type CompanyMarketRef = Schemas['CompanyMarketRef'];
7
10
  /** The company DETAIL shape — `PublicCompany` plus `markets` (detail-only). */
8
11
  type PublicCompanyDetail = Schemas['CompanyPublicDetail'];
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-j0KFqNBp.mjs';
2
- import { P as PublicJob } from './jobs-DKo4rx45.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-Dc9RJzZs.mjs';
2
+ import { P as PublicJob } from './jobs-Cu5SX_Yp.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any