@cavuno/board 4.66.0 → 4.68.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 (41) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{_spec-DBI6azWs.d.mts → _spec-t2B6ioRS.d.mts} +100 -2
  3. package/dist/{_spec-DBI6azWs.d.ts → _spec-t2B6ioRS.d.ts} +100 -2
  4. package/dist/{blog-Bx-rjH4V.d.mts → blog-B8UJJza1.d.mts} +1 -1
  5. package/dist/{blog--VKuBIdw.d.ts → blog-W1cBNXyS.d.ts} +1 -1
  6. package/dist/{board-BsUhxdjL.d.mts → board-8RMVpFBw.d.mts} +2 -2
  7. package/dist/{board-USJ9ZZab.d.ts → board-On_r_ixp.d.ts} +2 -2
  8. package/dist/{breadcrumbs-BVN_gIJq.d.mts → breadcrumbs-BgBj_AiZ.d.mts} +2 -2
  9. package/dist/{breadcrumbs-maV86vZP.d.ts → breadcrumbs-eV2OQqf6.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-R62XFNS7.mjs → chunk-ZA5TZ6UH.mjs} +4 -0
  12. package/dist/filters.d.mts +2 -2
  13. package/dist/filters.d.ts +2 -2
  14. package/dist/format.d.mts +4 -4
  15. package/dist/format.d.ts +4 -4
  16. package/dist/index.d.mts +67 -13
  17. package/dist/index.d.ts +67 -13
  18. package/dist/index.js +66 -10
  19. package/dist/index.mjs +63 -11
  20. package/dist/{jobs-qoVMh_Zd.d.mts → jobs-CrGBikhJ.d.mts} +1 -1
  21. package/dist/{jobs-Dyj1HZ8W.d.ts → jobs-D_LjWgIk.d.ts} +1 -1
  22. package/dist/{search-DPHLf8pI.d.ts → search-ClbqUjkA.d.ts} +1 -1
  23. package/dist/{search-CrXCM8Hq.d.mts → search-Yw5qsooq.d.mts} +1 -1
  24. package/dist/{seo-DRVgmTCQ.d.mts → seo-Bjevxvzd.d.mts} +1 -1
  25. package/dist/{seo-BDwe8PwT.d.ts → seo-CY5Vl13y.d.ts} +1 -1
  26. package/dist/seo-files.d.mts +2 -2
  27. package/dist/seo-files.d.ts +2 -2
  28. package/dist/seo.d.mts +6 -6
  29. package/dist/seo.d.ts +6 -6
  30. package/dist/server.d.mts +6 -6
  31. package/dist/server.d.ts +6 -6
  32. package/dist/server.mjs +1 -1
  33. package/dist/sitemap.d.mts +6 -6
  34. package/dist/sitemap.d.ts +6 -6
  35. package/dist/sitemap.mjs +1 -1
  36. package/dist/suggest.d.mts +2 -2
  37. package/dist/suggest.d.ts +2 -2
  38. package/package.json +1 -1
  39. package/skills/cavuno-board-account/SKILL.md +11 -0
  40. package/skills/cavuno-board-collections/SKILL.md +31 -2
  41. package/skills/manifest.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
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.68.0 — 2026-11-11
7
+
8
+ - Company market resolutions return `companyCount`: the number of companies
9
+ tagged with the market. Use it to tell whether a market page has enough
10
+ companies to index. The hosted sitemap lists a market page once at least
11
+ 5 companies carry it.
12
+ - Work arrangement pages: the place slugs `remote`, `hybrid` and `on-site`
13
+ name a work arrangement. Job list filters return that arrangement's jobs,
14
+ and place resolve returns its board-language label with `geo: null`. The
15
+ `jobs-locations` sitemap bucket lists the Remote page once the board has
16
+ enough remote jobs.
17
+
18
+ ## 4.67.0 — 2026-11-11
19
+
20
+ - Job seekers can fill their own image gallery and file profile fields: new
21
+ `board.me.profile.uploadCustomFieldFile(fieldKey, file)` uploads one file
22
+ (up to 10 MB; galleries take JPEG, PNG, WebP or GIF) to a field the profile
23
+ owner can edit and returns it as a draft. Save its `id` with
24
+ `board.me.profile.updateCustomFields` to attach it; drafts never saved are
25
+ deleted after 24 hours. New error codes `candidate_custom_field_not_found`
26
+ (404) and `candidate_custom_field_not_editable` (403).
27
+ - Talent profile and directory reads, and the job seeker's own custom-field
28
+ reads, return `customFieldMedia`: the files of public image gallery and file
29
+ fields with signed links that expire after at least 24 hours. Redacted
30
+ previews return none.
31
+ - New `board.collections.entries(key)` lists the active entries of a
32
+ collection the operator made public, with only its public fields. A
33
+ collection that is not public returns `collections_not_found`.
34
+
6
35
  ## 4.66.0 — 2026-11-11
7
36
 
8
37
  - Embedded checkout for paid job postings: send `checkoutUiMode:
@@ -539,7 +539,7 @@ interface components {
539
539
  BoardSitemap: {
540
540
  /** @enum {string} */
541
541
  object: "board_sitemap";
542
- /** @description The buckets the board publishes, in the canonical bucket order. Empty buckets are omitted — exactly the set the hosted `/sitemap.xml` index lists. */
542
+ /** @description The buckets the board publishes, in the canonical bucket order. Empty buckets are omitted. This is the set the hosted `/sitemap.xml` index lists, plus the Remote work arrangement page (`/jobs/locations/remote`) in `jobs-locations` once the board has enough remote jobs. */
543
543
  buckets: components["schemas"]["BoardSitemapBucketSummary"][];
544
544
  };
545
545
  BoardSitemapBucketSummary: {
@@ -2356,6 +2356,12 @@ interface components {
2356
2356
  /** @description The target stage id. */
2357
2357
  stageId: string;
2358
2358
  };
2359
+ MyCandidateProfileFieldValuesResponse: components["schemas"]["ProfileFieldValuesResponse"] & {
2360
+ /** @description Resolved files for the candidate’s saved `image_gallery` and `file` values, keyed by field key like `values`, in the stored order, including private fields. Each file `id` matches a value in `values`. `url` is a signed link for the profile owner that expires after at least 24 hours, so read it from the response rather than storing it. Unsaved uploads are not listed. Fields with no files are omitted. */
2361
+ customFieldMedia: {
2362
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
2363
+ };
2364
+ };
2359
2365
  MyItemVerification: components["schemas"]["ItemVerification"] & {
2360
2366
  /** @description The verification's id. For an item with no verification yet (`unverified`), its `itemKey`. */
2361
2367
  id?: string;
@@ -2918,6 +2924,10 @@ interface components {
2918
2924
  placeSuggestions: boolean;
2919
2925
  /** @description Whether the board serves its public MCP server, which AI assistants connect to at `/mcp` on the board's own host, with a setup page for job seekers at `/mcp/docs`. `true` on a paid board that is not password-protected and has not turned the server off. Show a link to `/mcp/docs` (for example in the footer) only when `true`. */
2920
2926
  mcp: boolean;
2927
+ /** @description Whether the board has a tip jar that is on (not archived). Matches `GET /v1/boards/{identifier}/tip-jar` answering 200 instead of `tip_jar_not_found`, so chrome can decide whether to link to the tip page from this context alone. */
2928
+ tipJar: boolean;
2929
+ /** @description Whether the board lists at least one digital product. Matches `GET /v1/boards/{identifier}/products` returning a non-empty first page with no filters, so chrome can decide whether to link to the products page from this context alone. */
2930
+ products: boolean;
2921
2931
  };
2922
2932
  /**
2923
2933
  * @description How the operator charges employers for the candidate directory. `paid_messaging` leaves profiles fully visible and spends a credit on a first cold message; `paid_unlocks_and_messaging` also redacts directory cards and gates the opaque `/p/{id}` profile route behind an unlock credit. `null` means the operator has not chosen explicitly, in which case infer it from the published `talent_access` plans: any plan granting profile unlocks means `paid_unlocks_and_messaging`, otherwise `paid_messaging`. The paywall is inert regardless when the board publishes no talent plan. An anonymous viewer has no entitlement read to derive this from, so it ships here rather than only on `me/talent-access`.
@@ -3044,6 +3054,84 @@ interface components {
3044
3054
  youtubeUrl: string | null;
3045
3055
  };
3046
3056
  };
3057
+ PublicCollectionEntry: {
3058
+ /** @description The entry's ID. */
3059
+ id: string;
3060
+ /** @description The entry's name. */
3061
+ name: string;
3062
+ /** @description URL-safe identifier, unique within the collection. Changing it keeps the previous value reserved. */
3063
+ slug?: string;
3064
+ /** @description The entry's logo: the image in the collection's logo field when that field is public, or a legacy logo URL on older entries. Absent when the entry has neither. */
3065
+ logoUrl?: string;
3066
+ /** @description The collection's public field definitions in display order. Take labels and select options from here. */
3067
+ fields: {
3068
+ key: string;
3069
+ label: string;
3070
+ /** @enum {string} */
3071
+ type: "short_text" | "long_text" | "rich_text" | "single_select" | "multi_select" | "boolean" | "number" | "date" | "url" | "email" | "phone" | "image" | "image_gallery" | "file" | "reference";
3072
+ helpText?: string;
3073
+ options?: {
3074
+ key: string;
3075
+ label: string;
3076
+ }[];
3077
+ }[];
3078
+ /** @description The entry's values, keyed by public field key. Media values are `{ id, name, contentType, sizeBytes, url }` objects (an array for an image gallery). Reference values are in `references` instead. A field with no value is absent. */
3079
+ values: {
3080
+ [key: string]: string | string[] | boolean | number | {
3081
+ id: string;
3082
+ name: string;
3083
+ contentType: string;
3084
+ sizeBytes: number;
3085
+ url: string;
3086
+ } | {
3087
+ id: string;
3088
+ name: string;
3089
+ contentType: string;
3090
+ sizeBytes: number;
3091
+ url: string;
3092
+ }[];
3093
+ };
3094
+ /** @description Entries that public reference fields point at, keyed by field key. Always an array, even for a single reference. */
3095
+ references?: {
3096
+ [key: string]: {
3097
+ id: string;
3098
+ name: string;
3099
+ /** @description URL-safe identifier, unique within the collection. Changing it keeps the previous value reserved. */
3100
+ slug?: string;
3101
+ fields: {
3102
+ key: string;
3103
+ label: string;
3104
+ /** @enum {string} */
3105
+ type: "short_text" | "long_text" | "rich_text" | "single_select" | "multi_select" | "boolean" | "number" | "date" | "url" | "email" | "phone" | "image" | "image_gallery" | "file" | "reference";
3106
+ helpText?: string;
3107
+ options?: {
3108
+ key: string;
3109
+ label: string;
3110
+ }[];
3111
+ }[];
3112
+ values: {
3113
+ [key: string]: string | string[] | boolean | number | {
3114
+ id: string;
3115
+ name: string;
3116
+ contentType: string;
3117
+ sizeBytes: number;
3118
+ url: string;
3119
+ } | {
3120
+ id: string;
3121
+ name: string;
3122
+ contentType: string;
3123
+ sizeBytes: number;
3124
+ url: string;
3125
+ }[];
3126
+ };
3127
+ }[];
3128
+ };
3129
+ };
3130
+ PublicCollectionEntryList: {
3131
+ data: components["schemas"]["PublicCollectionEntry"][];
3132
+ /** @description Pass as `cursor` for the next page; null on the last page. */
3133
+ nextCursor: string | null;
3134
+ };
3047
3135
  PublicCompaniesSearchBody: {
3048
3136
  /** @description Free-text search query matched against company name. Up to 200 characters. */
3049
3137
  query?: string;
@@ -3506,7 +3594,7 @@ interface components {
3506
3594
  */
3507
3595
  lte?: string;
3508
3596
  };
3509
- /** @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. */
3597
+ /** @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. The reserved slugs `remote`, `hybrid` and `on-site` name a work arrangement, not a place: they return the jobs `remoteOption` `remote`, `hybrid` or `on_site` returns, ignore `radius`, and combined with a `remoteOption` that leaves that arrangement out return no jobs. */
3510
3598
  location?: string;
3511
3599
  /** @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. */
3512
3600
  radius?: number;
@@ -3582,6 +3670,8 @@ interface components {
3582
3670
  ancestors?: components["schemas"]["PublicPlaceAncestor"][];
3583
3671
  /** @description The distance in kilometres the jobs search applies around this place when no `radius` is passed: a city or locality with coordinates gets the market default (25 miles, 40.2336 km, in the US, GB, LR and MM; 50 km elsewhere), applied with `defaultRadius=true`; a suggested place gets its own default for its size, with or without `defaultRadius`. Absent for regions, countries, places without coordinates, and categories and skills. Show it as the selected distance when the visitor has not picked one. */
3584
3672
  defaultRadiusKm?: number;
3673
+ /** @description The number of the board's companies tagged with this market. Present on market resolutions only. The board's sitemap lists a market page only when this is at least 5; emit `noindex, follow` on the plain market page below 5 so the two agree. */
3674
+ companyCount?: number;
3585
3675
  };
3586
3676
  PublicTaxonomyTerm: {
3587
3677
  /** @enum {string} */
@@ -4404,6 +4494,10 @@ interface components {
4404
4494
  customFieldValues: {
4405
4495
  [key: string]: string | number | boolean | string[];
4406
4496
  };
4497
+ /** @description Resolved files for public `image_gallery` and `file` candidate custom fields, keyed by field key like `customFieldValues`, in the stored order. Each file `id` matches a value in `customFieldValues`. `url` is a signed link that expires after at least 24 hours. Anyone holding it can load the file until then, or until the profile is hidden, the field made private or the board password changed, so read it from the response rather than storing or sharing it. The candidate’s own read returns owner links instead, which also load while the profile is hidden or the field is private. Empty on redacted previews, and on an `employers_only` board for viewers other than approved employers and the candidate. Fields with no files are omitted. */
4498
+ customFieldMedia: {
4499
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
4500
+ };
4407
4501
  objectReferences: components["schemas"]["ResolvedProfileObjectReference"][];
4408
4502
  /**
4409
4503
  * @description Roughly when the candidate was last active on the board: `today` (within 24 hours), `this_week` (7 days), `this_month` (30 days), `last_3_months` (90 days) or `over_3_months`, counted back from the request. Only returned to a signed-in employer on this board, and only when the candidate’s job search status is `actively_looking` or `open_to_offers`; `null` otherwise. The exact time is never exposed.
@@ -4513,6 +4607,10 @@ interface components {
4513
4607
  customFieldValues: {
4514
4608
  [key: string]: string | number | boolean | string[];
4515
4609
  };
4610
+ /** @description Resolved files for public `image_gallery` and `file` candidate custom fields, keyed by field key like `customFieldValues`, in the stored order. Each file `id` matches a value in `customFieldValues`. `url` is a signed link that expires after at least 24 hours. Anyone holding it can load the file until then, or until the profile is hidden, the field made private or the board password changed, so read it from the response rather than storing or sharing it. The candidate’s own read returns owner links instead, which also load while the profile is hidden or the field is private. Empty on redacted previews, and on an `employers_only` board for viewers other than approved employers and the candidate. Fields with no files are omitted. */
4611
+ customFieldMedia: {
4612
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
4613
+ };
4516
4614
  objectReferences: components["schemas"]["ResolvedProfileObjectReference"][];
4517
4615
  /**
4518
4616
  * @description Roughly when the candidate was last active on the board: `today` (within 24 hours), `this_week` (7 days), `this_month` (30 days), `last_3_months` (90 days) or `over_3_months`, counted back from the request. Only returned to a signed-in employer on this board, and only when the candidate’s job search status is `actively_looking` or `open_to_offers`; `null` otherwise. The exact time is never exposed.
@@ -539,7 +539,7 @@ interface components {
539
539
  BoardSitemap: {
540
540
  /** @enum {string} */
541
541
  object: "board_sitemap";
542
- /** @description The buckets the board publishes, in the canonical bucket order. Empty buckets are omitted — exactly the set the hosted `/sitemap.xml` index lists. */
542
+ /** @description The buckets the board publishes, in the canonical bucket order. Empty buckets are omitted. This is the set the hosted `/sitemap.xml` index lists, plus the Remote work arrangement page (`/jobs/locations/remote`) in `jobs-locations` once the board has enough remote jobs. */
543
543
  buckets: components["schemas"]["BoardSitemapBucketSummary"][];
544
544
  };
545
545
  BoardSitemapBucketSummary: {
@@ -2356,6 +2356,12 @@ interface components {
2356
2356
  /** @description The target stage id. */
2357
2357
  stageId: string;
2358
2358
  };
2359
+ MyCandidateProfileFieldValuesResponse: components["schemas"]["ProfileFieldValuesResponse"] & {
2360
+ /** @description Resolved files for the candidate’s saved `image_gallery` and `file` values, keyed by field key like `values`, in the stored order, including private fields. Each file `id` matches a value in `values`. `url` is a signed link for the profile owner that expires after at least 24 hours, so read it from the response rather than storing it. Unsaved uploads are not listed. Fields with no files are omitted. */
2361
+ customFieldMedia: {
2362
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
2363
+ };
2364
+ };
2359
2365
  MyItemVerification: components["schemas"]["ItemVerification"] & {
2360
2366
  /** @description The verification's id. For an item with no verification yet (`unverified`), its `itemKey`. */
2361
2367
  id?: string;
@@ -2918,6 +2924,10 @@ interface components {
2918
2924
  placeSuggestions: boolean;
2919
2925
  /** @description Whether the board serves its public MCP server, which AI assistants connect to at `/mcp` on the board's own host, with a setup page for job seekers at `/mcp/docs`. `true` on a paid board that is not password-protected and has not turned the server off. Show a link to `/mcp/docs` (for example in the footer) only when `true`. */
2920
2926
  mcp: boolean;
2927
+ /** @description Whether the board has a tip jar that is on (not archived). Matches `GET /v1/boards/{identifier}/tip-jar` answering 200 instead of `tip_jar_not_found`, so chrome can decide whether to link to the tip page from this context alone. */
2928
+ tipJar: boolean;
2929
+ /** @description Whether the board lists at least one digital product. Matches `GET /v1/boards/{identifier}/products` returning a non-empty first page with no filters, so chrome can decide whether to link to the products page from this context alone. */
2930
+ products: boolean;
2921
2931
  };
2922
2932
  /**
2923
2933
  * @description How the operator charges employers for the candidate directory. `paid_messaging` leaves profiles fully visible and spends a credit on a first cold message; `paid_unlocks_and_messaging` also redacts directory cards and gates the opaque `/p/{id}` profile route behind an unlock credit. `null` means the operator has not chosen explicitly, in which case infer it from the published `talent_access` plans: any plan granting profile unlocks means `paid_unlocks_and_messaging`, otherwise `paid_messaging`. The paywall is inert regardless when the board publishes no talent plan. An anonymous viewer has no entitlement read to derive this from, so it ships here rather than only on `me/talent-access`.
@@ -3044,6 +3054,84 @@ interface components {
3044
3054
  youtubeUrl: string | null;
3045
3055
  };
3046
3056
  };
3057
+ PublicCollectionEntry: {
3058
+ /** @description The entry's ID. */
3059
+ id: string;
3060
+ /** @description The entry's name. */
3061
+ name: string;
3062
+ /** @description URL-safe identifier, unique within the collection. Changing it keeps the previous value reserved. */
3063
+ slug?: string;
3064
+ /** @description The entry's logo: the image in the collection's logo field when that field is public, or a legacy logo URL on older entries. Absent when the entry has neither. */
3065
+ logoUrl?: string;
3066
+ /** @description The collection's public field definitions in display order. Take labels and select options from here. */
3067
+ fields: {
3068
+ key: string;
3069
+ label: string;
3070
+ /** @enum {string} */
3071
+ type: "short_text" | "long_text" | "rich_text" | "single_select" | "multi_select" | "boolean" | "number" | "date" | "url" | "email" | "phone" | "image" | "image_gallery" | "file" | "reference";
3072
+ helpText?: string;
3073
+ options?: {
3074
+ key: string;
3075
+ label: string;
3076
+ }[];
3077
+ }[];
3078
+ /** @description The entry's values, keyed by public field key. Media values are `{ id, name, contentType, sizeBytes, url }` objects (an array for an image gallery). Reference values are in `references` instead. A field with no value is absent. */
3079
+ values: {
3080
+ [key: string]: string | string[] | boolean | number | {
3081
+ id: string;
3082
+ name: string;
3083
+ contentType: string;
3084
+ sizeBytes: number;
3085
+ url: string;
3086
+ } | {
3087
+ id: string;
3088
+ name: string;
3089
+ contentType: string;
3090
+ sizeBytes: number;
3091
+ url: string;
3092
+ }[];
3093
+ };
3094
+ /** @description Entries that public reference fields point at, keyed by field key. Always an array, even for a single reference. */
3095
+ references?: {
3096
+ [key: string]: {
3097
+ id: string;
3098
+ name: string;
3099
+ /** @description URL-safe identifier, unique within the collection. Changing it keeps the previous value reserved. */
3100
+ slug?: string;
3101
+ fields: {
3102
+ key: string;
3103
+ label: string;
3104
+ /** @enum {string} */
3105
+ type: "short_text" | "long_text" | "rich_text" | "single_select" | "multi_select" | "boolean" | "number" | "date" | "url" | "email" | "phone" | "image" | "image_gallery" | "file" | "reference";
3106
+ helpText?: string;
3107
+ options?: {
3108
+ key: string;
3109
+ label: string;
3110
+ }[];
3111
+ }[];
3112
+ values: {
3113
+ [key: string]: string | string[] | boolean | number | {
3114
+ id: string;
3115
+ name: string;
3116
+ contentType: string;
3117
+ sizeBytes: number;
3118
+ url: string;
3119
+ } | {
3120
+ id: string;
3121
+ name: string;
3122
+ contentType: string;
3123
+ sizeBytes: number;
3124
+ url: string;
3125
+ }[];
3126
+ };
3127
+ }[];
3128
+ };
3129
+ };
3130
+ PublicCollectionEntryList: {
3131
+ data: components["schemas"]["PublicCollectionEntry"][];
3132
+ /** @description Pass as `cursor` for the next page; null on the last page. */
3133
+ nextCursor: string | null;
3134
+ };
3047
3135
  PublicCompaniesSearchBody: {
3048
3136
  /** @description Free-text search query matched against company name. Up to 200 characters. */
3049
3137
  query?: string;
@@ -3506,7 +3594,7 @@ interface components {
3506
3594
  */
3507
3595
  lte?: string;
3508
3596
  };
3509
- /** @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. */
3597
+ /** @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. The reserved slugs `remote`, `hybrid` and `on-site` name a work arrangement, not a place: they return the jobs `remoteOption` `remote`, `hybrid` or `on_site` returns, ignore `radius`, and combined with a `remoteOption` that leaves that arrangement out return no jobs. */
3510
3598
  location?: string;
3511
3599
  /** @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. */
3512
3600
  radius?: number;
@@ -3582,6 +3670,8 @@ interface components {
3582
3670
  ancestors?: components["schemas"]["PublicPlaceAncestor"][];
3583
3671
  /** @description The distance in kilometres the jobs search applies around this place when no `radius` is passed: a city or locality with coordinates gets the market default (25 miles, 40.2336 km, in the US, GB, LR and MM; 50 km elsewhere), applied with `defaultRadius=true`; a suggested place gets its own default for its size, with or without `defaultRadius`. Absent for regions, countries, places without coordinates, and categories and skills. Show it as the selected distance when the visitor has not picked one. */
3584
3672
  defaultRadiusKm?: number;
3673
+ /** @description The number of the board's companies tagged with this market. Present on market resolutions only. The board's sitemap lists a market page only when this is at least 5; emit `noindex, follow` on the plain market page below 5 so the two agree. */
3674
+ companyCount?: number;
3585
3675
  };
3586
3676
  PublicTaxonomyTerm: {
3587
3677
  /** @enum {string} */
@@ -4404,6 +4494,10 @@ interface components {
4404
4494
  customFieldValues: {
4405
4495
  [key: string]: string | number | boolean | string[];
4406
4496
  };
4497
+ /** @description Resolved files for public `image_gallery` and `file` candidate custom fields, keyed by field key like `customFieldValues`, in the stored order. Each file `id` matches a value in `customFieldValues`. `url` is a signed link that expires after at least 24 hours. Anyone holding it can load the file until then, or until the profile is hidden, the field made private or the board password changed, so read it from the response rather than storing or sharing it. The candidate’s own read returns owner links instead, which also load while the profile is hidden or the field is private. Empty on redacted previews, and on an `employers_only` board for viewers other than approved employers and the candidate. Fields with no files are omitted. */
4498
+ customFieldMedia: {
4499
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
4500
+ };
4407
4501
  objectReferences: components["schemas"]["ResolvedProfileObjectReference"][];
4408
4502
  /**
4409
4503
  * @description Roughly when the candidate was last active on the board: `today` (within 24 hours), `this_week` (7 days), `this_month` (30 days), `last_3_months` (90 days) or `over_3_months`, counted back from the request. Only returned to a signed-in employer on this board, and only when the candidate’s job search status is `actively_looking` or `open_to_offers`; `null` otherwise. The exact time is never exposed.
@@ -4513,6 +4607,10 @@ interface components {
4513
4607
  customFieldValues: {
4514
4608
  [key: string]: string | number | boolean | string[];
4515
4609
  };
4610
+ /** @description Resolved files for public `image_gallery` and `file` candidate custom fields, keyed by field key like `customFieldValues`, in the stored order. Each file `id` matches a value in `customFieldValues`. `url` is a signed link that expires after at least 24 hours. Anyone holding it can load the file until then, or until the profile is hidden, the field made private or the board password changed, so read it from the response rather than storing or sharing it. The candidate’s own read returns owner links instead, which also load while the profile is hidden or the field is private. Empty on redacted previews, and on an `employers_only` board for viewers other than approved employers and the candidate. Fields with no files are omitted. */
4611
+ customFieldMedia: {
4612
+ [key: string]: components["schemas"]["ProfileFieldMedia"][];
4613
+ };
4516
4614
  objectReferences: components["schemas"]["ResolvedProfileObjectReference"][];
4517
4615
  /**
4518
4616
  * @description Roughly when the candidate was last active on the board: `today` (within 24 hours), `this_week` (7 days), `this_month` (30 days), `last_3_months` (90 days) or `over_3_months`, counted back from the request. Only returned to a signed-in employer on this board, and only when the candidate’s job search status is `actively_looking` or `open_to_offers`; `null` otherwise. The exact time is never exposed.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-DBI6azWs.mjs';
1
+ import { S as Schemas } from './_spec-t2B6ioRS.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-DBI6azWs.js';
1
+ import { S as Schemas } from './_spec-t2B6ioRS.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-DBI6azWs.mjs';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-qoVMh_Zd.mjs';
1
+ import { S as Schemas } from './_spec-t2B6ioRS.mjs';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-CrGBikhJ.mjs';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-DBI6azWs.js';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-Dyj1HZ8W.js';
1
+ import { S as Schemas } from './_spec-t2B6ioRS.js';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-D_LjWgIk.js';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /**
@@ -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-BsUhxdjL.mjs';
2
- import { P as PublicJob } from './jobs-qoVMh_Zd.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-8RMVpFBw.mjs';
2
+ import { P as PublicJob } from './jobs-CrGBikhJ.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -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-USJ9ZZab.js';
2
- import { P as PublicJob } from './jobs-Dyj1HZ8W.js';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-On_r_ixp.js';
2
+ import { P as PublicJob } from './jobs-D_LjWgIk.js';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any