@cavuno/board 4.67.0 → 4.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/dist/{_spec-BehBmeHK.d.mts → _spec-CFOj7Qdf.d.mts} +19 -2
- package/dist/{_spec-BehBmeHK.d.ts → _spec-CFOj7Qdf.d.ts} +19 -2
- package/dist/{blog-BLpOmpyQ.d.ts → blog-BaVJi3q1.d.ts} +1 -1
- package/dist/{blog-BmfbjijG.d.mts → blog-DCRBPnpZ.d.mts} +1 -1
- package/dist/{board-CXd9Me7_.d.mts → board-DMS3I3sJ.d.mts} +2 -2
- package/dist/{board-dV_3NXAI.d.ts → board-zLt7j6hj.d.ts} +2 -2
- package/dist/{breadcrumbs-Cu_SPdRA.d.mts → breadcrumbs-Dwf0yq7B.d.mts} +2 -2
- package/dist/{breadcrumbs-PEsRCVwI.d.ts → breadcrumbs-yGijUUtR.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-ZA5TZ6UH.mjs → chunk-7SAHE7UW.mjs} +1 -0
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +34 -29
- package/dist/index.d.ts +34 -29
- package/dist/index.js +11 -2
- package/dist/index.mjs +11 -3
- package/dist/{jobs-CbTUedOr.d.mts → jobs-Cew_q69W.d.mts} +1 -1
- package/dist/{jobs-D2mKA65F.d.ts → jobs-Dz_w1jZq.d.ts} +1 -1
- package/dist/{search-CHejx_k7.d.ts → search-BqAYR47P.d.ts} +1 -1
- package/dist/{search-CxUViZsz.d.mts → search-DwvgvtEg.d.mts} +1 -1
- package/dist/{seo-DYyQ8NTh.d.ts → seo-CGy4fY5a.d.ts} +1 -1
- package/dist/{seo-CWa4rTf7.d.mts → seo-FKj1pSHZ.d.mts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/server.mjs +1 -1
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/sitemap.mjs +1 -1
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
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.69.0 — 2026-11-12
|
|
7
|
+
|
|
8
|
+
- Members-only boards: on a board whose context has
|
|
9
|
+
`posting.requiresMembership`, `board.plans.list()` leaves out job-posting
|
|
10
|
+
plans, except those priced by quote, because visitors cannot buy them.
|
|
11
|
+
`board.jobPosting.plans()` still returns them for members. An anonymous
|
|
12
|
+
`board.jobPosting.create(...)` on such a board is refused with
|
|
13
|
+
`membership_required`, whatever company website it names.
|
|
14
|
+
- `board.jobPosting.plans()` returns each feature's `name`, `dataType` and
|
|
15
|
+
`displayOrder`, as `board.plans.list()` does, so a posting form can label a
|
|
16
|
+
plan's custom attributes from that one read.
|
|
17
|
+
- `board.me.companies.billingOptions.list(slug)` is typed as
|
|
18
|
+
`EmployerBillingOptionsList`, which includes the `capabilities` the
|
|
19
|
+
endpoint returns: `canPost`, the `reason` when posting is refused, and the
|
|
20
|
+
membership allowance. `EmployerPostingCapabilities` is exported. Read
|
|
21
|
+
`canPost` to show a membership offer before the employer writes a job.
|
|
22
|
+
- `board.me.companies.startMembershipCheckout(slug, body)` takes an optional
|
|
23
|
+
`redirectOnCompletion`: `'always'` (the default, unchanged) or
|
|
24
|
+
`'if_required'`, which keeps a card payment on the embedding page and fires
|
|
25
|
+
Stripe.js `onComplete`. Payment methods that need a redirect still return
|
|
26
|
+
to `returnPath`.
|
|
27
|
+
- The board context carries `features.tipJar` (the board has an active tip
|
|
28
|
+
jar) and `features.products` (it lists at least one product), so a frontend
|
|
29
|
+
can show those links without probing `/tip-jar` and `/products`.
|
|
30
|
+
- `auth.refresh()` and `auth.logout()` are rate limited per refresh token (10
|
|
31
|
+
a minute) instead of per client IP, with a ceiling of 1,000 a minute per IP.
|
|
32
|
+
A server-rendered frontend refreshing many visitors' sessions from one IP no
|
|
33
|
+
longer gets `rate_limited`.
|
|
34
|
+
|
|
35
|
+
## 4.68.0 — 2026-11-11
|
|
36
|
+
|
|
37
|
+
- Company market resolutions return `companyCount`: the number of companies
|
|
38
|
+
tagged with the market. Use it to tell whether a market page has enough
|
|
39
|
+
companies to index. The hosted sitemap lists a market page once at least
|
|
40
|
+
5 companies carry it.
|
|
41
|
+
- Work arrangement pages: the place slugs `remote`, `hybrid` and `on-site`
|
|
42
|
+
name a work arrangement. Job list filters return that arrangement's jobs,
|
|
43
|
+
and place resolve returns its board-language label with `geo: null`. The
|
|
44
|
+
`jobs-locations` sitemap bucket lists the Remote page once the board has
|
|
45
|
+
enough remote jobs.
|
|
46
|
+
|
|
6
47
|
## 4.67.0 — 2026-11-11
|
|
7
48
|
|
|
8
49
|
- Job seekers can fill their own image gallery and file profile fields: new
|
|
@@ -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
|
|
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: {
|
|
@@ -2099,6 +2099,12 @@ interface components {
|
|
|
2099
2099
|
features: {
|
|
2100
2100
|
key: string | null;
|
|
2101
2101
|
value: string | null;
|
|
2102
|
+
/** @description The feature's display name, including an operator-defined custom attribute's name. */
|
|
2103
|
+
name: string;
|
|
2104
|
+
/** @description How to read `value`, such as `integer`, `boolean` or `string`. */
|
|
2105
|
+
dataType: string;
|
|
2106
|
+
/** @description The operator-set order among the plan features; null when unset. */
|
|
2107
|
+
displayOrder: number | null;
|
|
2102
2108
|
}[];
|
|
2103
2109
|
};
|
|
2104
2110
|
JobPostingResult: {
|
|
@@ -2322,6 +2328,11 @@ interface components {
|
|
|
2322
2328
|
returnPath: string;
|
|
2323
2329
|
/** @enum {string} */
|
|
2324
2330
|
colorMode: "light" | "dark";
|
|
2331
|
+
/**
|
|
2332
|
+
* @description When the buyer leaves for `returnPath`. `always` (default): every completed checkout redirects there. `if_required`: a card payment completes in place and the embedding page reacts to Stripe.js `onComplete` (then reads `GET …/membership/checkout/{sessionId}`); only a payment method that needs a redirect returns to `returnPath`.
|
|
2333
|
+
* @enum {string}
|
|
2334
|
+
*/
|
|
2335
|
+
redirectOnCompletion?: "always" | "if_required";
|
|
2325
2336
|
};
|
|
2326
2337
|
Message: {
|
|
2327
2338
|
id: string;
|
|
@@ -2924,6 +2935,10 @@ interface components {
|
|
|
2924
2935
|
placeSuggestions: boolean;
|
|
2925
2936
|
/** @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`. */
|
|
2926
2937
|
mcp: boolean;
|
|
2938
|
+
/** @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. */
|
|
2939
|
+
tipJar: boolean;
|
|
2940
|
+
/** @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. */
|
|
2941
|
+
products: boolean;
|
|
2927
2942
|
};
|
|
2928
2943
|
/**
|
|
2929
2944
|
* @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`.
|
|
@@ -3590,7 +3605,7 @@ interface components {
|
|
|
3590
3605
|
*/
|
|
3591
3606
|
lte?: string;
|
|
3592
3607
|
};
|
|
3593
|
-
/** @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. */
|
|
3608
|
+
/** @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. */
|
|
3594
3609
|
location?: string;
|
|
3595
3610
|
/** @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. */
|
|
3596
3611
|
radius?: number;
|
|
@@ -3666,6 +3681,8 @@ interface components {
|
|
|
3666
3681
|
ancestors?: components["schemas"]["PublicPlaceAncestor"][];
|
|
3667
3682
|
/** @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. */
|
|
3668
3683
|
defaultRadiusKm?: number;
|
|
3684
|
+
/** @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. */
|
|
3685
|
+
companyCount?: number;
|
|
3669
3686
|
};
|
|
3670
3687
|
PublicTaxonomyTerm: {
|
|
3671
3688
|
/** @enum {string} */
|
|
@@ -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
|
|
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: {
|
|
@@ -2099,6 +2099,12 @@ interface components {
|
|
|
2099
2099
|
features: {
|
|
2100
2100
|
key: string | null;
|
|
2101
2101
|
value: string | null;
|
|
2102
|
+
/** @description The feature's display name, including an operator-defined custom attribute's name. */
|
|
2103
|
+
name: string;
|
|
2104
|
+
/** @description How to read `value`, such as `integer`, `boolean` or `string`. */
|
|
2105
|
+
dataType: string;
|
|
2106
|
+
/** @description The operator-set order among the plan features; null when unset. */
|
|
2107
|
+
displayOrder: number | null;
|
|
2102
2108
|
}[];
|
|
2103
2109
|
};
|
|
2104
2110
|
JobPostingResult: {
|
|
@@ -2322,6 +2328,11 @@ interface components {
|
|
|
2322
2328
|
returnPath: string;
|
|
2323
2329
|
/** @enum {string} */
|
|
2324
2330
|
colorMode: "light" | "dark";
|
|
2331
|
+
/**
|
|
2332
|
+
* @description When the buyer leaves for `returnPath`. `always` (default): every completed checkout redirects there. `if_required`: a card payment completes in place and the embedding page reacts to Stripe.js `onComplete` (then reads `GET …/membership/checkout/{sessionId}`); only a payment method that needs a redirect returns to `returnPath`.
|
|
2333
|
+
* @enum {string}
|
|
2334
|
+
*/
|
|
2335
|
+
redirectOnCompletion?: "always" | "if_required";
|
|
2325
2336
|
};
|
|
2326
2337
|
Message: {
|
|
2327
2338
|
id: string;
|
|
@@ -2924,6 +2935,10 @@ interface components {
|
|
|
2924
2935
|
placeSuggestions: boolean;
|
|
2925
2936
|
/** @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`. */
|
|
2926
2937
|
mcp: boolean;
|
|
2938
|
+
/** @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. */
|
|
2939
|
+
tipJar: boolean;
|
|
2940
|
+
/** @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. */
|
|
2941
|
+
products: boolean;
|
|
2927
2942
|
};
|
|
2928
2943
|
/**
|
|
2929
2944
|
* @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`.
|
|
@@ -3590,7 +3605,7 @@ interface components {
|
|
|
3590
3605
|
*/
|
|
3591
3606
|
lte?: string;
|
|
3592
3607
|
};
|
|
3593
|
-
/** @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. */
|
|
3608
|
+
/** @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. */
|
|
3594
3609
|
location?: string;
|
|
3595
3610
|
/** @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. */
|
|
3596
3611
|
radius?: number;
|
|
@@ -3666,6 +3681,8 @@ interface components {
|
|
|
3666
3681
|
ancestors?: components["schemas"]["PublicPlaceAncestor"][];
|
|
3667
3682
|
/** @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. */
|
|
3668
3683
|
defaultRadiusKm?: number;
|
|
3684
|
+
/** @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. */
|
|
3685
|
+
companyCount?: number;
|
|
3669
3686
|
};
|
|
3670
3687
|
PublicTaxonomyTerm: {
|
|
3671
3688
|
/** @enum {string} */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-CFOj7Qdf.mjs';
|
|
2
|
+
import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-Cew_q69W.mjs';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-CFOj7Qdf.js';
|
|
2
|
+
import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-Dz_w1jZq.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-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-DMS3I3sJ.mjs';
|
|
2
|
+
import { P as PublicJob } from './jobs-Cew_q69W.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-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-zLt7j6hj.js';
|
|
2
|
+
import { P as PublicJob } from './jobs-Dz_w1jZq.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|