@cavuno/board 4.19.0 → 4.20.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 +19 -0
- package/dist/{_spec-DyTPJbIZ.d.mts → _spec-CyNKpM_j.d.mts} +68 -4
- package/dist/{_spec-DyTPJbIZ.d.ts → _spec-CyNKpM_j.d.ts} +68 -4
- package/dist/{blog-Cdw6_ocq.d.mts → blog-BNIqGayD.d.mts} +1 -1
- package/dist/{blog-vDgRPBAK.d.ts → blog-CRvaDyzJ.d.ts} +1 -1
- package/dist/{board-CLDHd9N_.d.mts → board-CXNxSlUB.d.ts} +16 -3
- package/dist/{board-DpDCNMJD.d.ts → board-mn3GVbrC.d.mts} +16 -3
- package/dist/{breadcrumbs-CKtVWTOB.d.mts → breadcrumbs-Bi4LHNAF.d.mts} +2 -2
- package/dist/{breadcrumbs-CYT3HxfO.d.ts → breadcrumbs-Crk6Q69T.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-XNO4NOPW.mjs → chunk-NQTMFOKF.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 +33 -17
- package/dist/index.d.ts +33 -17
- package/dist/index.js +14 -6
- package/dist/index.mjs +14 -7
- package/dist/{jobs-Bnx1B6at.d.mts → jobs-CALE3I8I.d.mts} +1 -1
- package/dist/{jobs-Bwl7pKKg.d.ts → jobs-CSWXqLZR.d.ts} +1 -1
- package/dist/route-contract.d.mts +2 -1
- package/dist/route-contract.d.ts +2 -1
- package/dist/{search-CQZ-ibOl.d.ts → search-BRCbe1Nm.d.ts} +1 -1
- package/dist/{search-DlxLGmDk.d.mts → search-B_hwS-xu.d.mts} +1 -1
- package/dist/{seo-zYWVcaj1.d.mts → seo-CS4lrG20.d.mts} +1 -1
- package/dist/{seo-BfEBr4pW.d.ts → seo-D1u-RmLQ.d.ts} +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/dist/well-known.d.mts +2 -1
- package/dist/well-known.d.ts +2 -1
- package/package.json +2 -2
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.20.0 — 2026-09-03
|
|
7
|
+
|
|
8
|
+
- **Memberships as public identity.** `PublicCompanyMembership` (`planId` +
|
|
9
|
+
display name) is exported, and `board.companies.list({ membershipPlanId })`
|
|
10
|
+
scopes the roster to the companies holding an active membership on that
|
|
11
|
+
published plan. Combines with `marketSlug` by intersection; `count` then
|
|
12
|
+
describes the members.
|
|
13
|
+
- **`board.plans.list({ purpose })`** accepts every plan purpose:
|
|
14
|
+
`job_posting`, `talent_access`, `membership`, `job_seeker`,
|
|
15
|
+
`employer_service`, `job_seeker_service`. Plans carry `pricingMode`; a
|
|
16
|
+
`contact` plan is quote-only, so render `priceText` and the CTA fields
|
|
17
|
+
instead of `price`.
|
|
18
|
+
- **`board.plans.listSalesLed()` is deprecated.** Use
|
|
19
|
+
`plans.list({ purpose: 'employer_service' })` and keep the rows whose
|
|
20
|
+
`pricingMode` is `contact`. The helper keeps working as a compatibility
|
|
21
|
+
read.
|
|
22
|
+
- **`BOARD_API_ERROR_CODES`**: adds `membership_required`, returned when a
|
|
23
|
+
board requires an approved membership to post and the caller has none.
|
|
24
|
+
|
|
6
25
|
## 4.19.0 — 2026-09-02
|
|
7
26
|
|
|
8
27
|
- **`board.sitemap()` / `board.sitemap.entries(bucket, { limit, cursor })`**:
|
|
@@ -547,6 +547,7 @@ interface components {
|
|
|
547
547
|
publishedJobCount: number;
|
|
548
548
|
/** @description Number of jobs that contribute to this company's salary aggregates on the board (the salary sample size). `0` when there is no usable salary data — prefer this over fetching the full company-salary document just to decide whether to show a Salaries tab. Not the same as `publishedJobCount` (open roles without pay data stay at 0 here). */
|
|
549
549
|
salarySampleCount: number;
|
|
550
|
+
membership: components["schemas"]["PublicCompanyMembership"];
|
|
550
551
|
links: components["schemas"]["PublicCompanyLinks"];
|
|
551
552
|
};
|
|
552
553
|
CompanyPublicDetail: components["schemas"]["CompanyPublic"] & {
|
|
@@ -920,7 +921,9 @@ interface components {
|
|
|
920
921
|
/** @enum {string} */
|
|
921
922
|
object: "employer_billing_option";
|
|
922
923
|
/** @enum {string} */
|
|
923
|
-
type: "subscription" | "order";
|
|
924
|
+
type: "subscription" | "order" | "plan_assignment";
|
|
925
|
+
/** @enum {string} */
|
|
926
|
+
kind?: "member_post";
|
|
924
927
|
planId: string;
|
|
925
928
|
planName: string;
|
|
926
929
|
/** @enum {string} */
|
|
@@ -929,6 +932,10 @@ interface components {
|
|
|
929
932
|
jobsTotal: number;
|
|
930
933
|
featuredRemaining: number;
|
|
931
934
|
featuredTotal: number;
|
|
935
|
+
/** @description True when this option grants unlimited job posts; jobsRemaining/jobsTotal are then not meaningful. */
|
|
936
|
+
jobsUnlimited?: boolean;
|
|
937
|
+
/** @description True when this option grants unlimited featured posts. */
|
|
938
|
+
featuredUnlimited?: boolean;
|
|
932
939
|
/**
|
|
933
940
|
* Format: date-time
|
|
934
941
|
* @description When a subscription renews, or `null` for one-time orders.
|
|
@@ -960,6 +967,11 @@ interface components {
|
|
|
960
967
|
type: "subscription";
|
|
961
968
|
planId: string;
|
|
962
969
|
id: string;
|
|
970
|
+
} | {
|
|
971
|
+
/** @enum {string} */
|
|
972
|
+
type: "plan_assignment";
|
|
973
|
+
planId?: string;
|
|
974
|
+
id?: string;
|
|
963
975
|
};
|
|
964
976
|
invoiceBilling?: {
|
|
965
977
|
billingName?: string;
|
|
@@ -1239,6 +1251,16 @@ interface components {
|
|
|
1239
1251
|
hidden: boolean;
|
|
1240
1252
|
position: number;
|
|
1241
1253
|
};
|
|
1254
|
+
EmployerPostingCapabilities: {
|
|
1255
|
+
canPost: boolean;
|
|
1256
|
+
/** @enum {string} */
|
|
1257
|
+
reason?: "membership_required";
|
|
1258
|
+
discountPercent: number;
|
|
1259
|
+
freePostsRemaining: number;
|
|
1260
|
+
/** @description True when an active membership grants unlimited posts. */
|
|
1261
|
+
freePostsUnlimited?: boolean;
|
|
1262
|
+
memberPlanName?: string;
|
|
1263
|
+
};
|
|
1242
1264
|
EmployerProfileStats: {
|
|
1243
1265
|
/** @enum {string} */
|
|
1244
1266
|
object: "employer_profile_stats";
|
|
@@ -1692,13 +1714,26 @@ interface components {
|
|
|
1692
1714
|
/** @description Authoring default: the operator's prose description in the board's language. The localized public string lives in the board template — compose it from `featureSummary`, `billingInterval`, and `talent` rather than displaying this verbatim on localized surfaces. */
|
|
1693
1715
|
description: string | null;
|
|
1694
1716
|
/** @enum {string} */
|
|
1695
|
-
purpose: "job_posting" | "talent_access";
|
|
1717
|
+
purpose: "job_posting" | "talent_access" | "membership" | "job_seeker" | "employer_service" | "job_seeker_service";
|
|
1696
1718
|
/** @enum {string} */
|
|
1697
1719
|
kind: "free" | "subscription" | "one_time" | "bundle";
|
|
1698
1720
|
/** @enum {string|null} */
|
|
1699
|
-
billingInterval: "month" | "year" | null;
|
|
1721
|
+
billingInterval: "day" | "week" | "month" | "year" | null;
|
|
1722
|
+
/** @description Stripe recurring.interval_count. Null means 1. Quarterly is month × 3. */
|
|
1723
|
+
billingIntervalCount: number | null;
|
|
1700
1724
|
isRecommended: boolean;
|
|
1701
1725
|
displayOrder: number;
|
|
1726
|
+
/**
|
|
1727
|
+
* @description How the plan is sold. `priced` is bought with `price.stripePriceId`; `contact` is quote-only and must render the CTA below instead of a price. Read this, never `price` — a contact plan can still carry a zeroed price row. Plans created before this field existed report `priced`.
|
|
1728
|
+
* @enum {string}
|
|
1729
|
+
*/
|
|
1730
|
+
pricingMode: "priced" | "contact";
|
|
1731
|
+
/** @description Operator-authored display price for a contact plan, e.g. "From $2,000" or "15% of first-year salary". Null when unset. */
|
|
1732
|
+
priceText: string | null;
|
|
1733
|
+
/** @description Operator-authored CTA label for a contact plan. Null when unset; supply your own wording. */
|
|
1734
|
+
ctaText: string | null;
|
|
1735
|
+
/** @description The CTA target: an https, mailto:, or tel: URL. Null when unset, in which case render no CTA rather than a dead control. */
|
|
1736
|
+
ctaDestination: string | null;
|
|
1702
1737
|
invoiceOnly: boolean;
|
|
1703
1738
|
/** @enum {string|null} */
|
|
1704
1739
|
publishTiming: "on_issue" | "on_payment" | null;
|
|
@@ -1709,6 +1744,10 @@ interface components {
|
|
|
1709
1744
|
/** @description The public Stripe Price id used to start checkout. */
|
|
1710
1745
|
stripePriceId: string | null;
|
|
1711
1746
|
} | null;
|
|
1747
|
+
/**
|
|
1748
|
+
* @deprecated
|
|
1749
|
+
* @description Job-posting feature summary. **Deprecated** — superseded by `features`, which carries the same benefits keyed by canonical feature key. Still serialized for compatibility.
|
|
1750
|
+
*/
|
|
1712
1751
|
featureSummary: {
|
|
1713
1752
|
durationDays: number;
|
|
1714
1753
|
maxActiveJobs: number;
|
|
@@ -1716,11 +1755,23 @@ interface components {
|
|
|
1716
1755
|
/** @enum {string} */
|
|
1717
1756
|
featureSelectionMode: "auto" | "manual";
|
|
1718
1757
|
};
|
|
1719
|
-
/**
|
|
1758
|
+
/**
|
|
1759
|
+
* @deprecated
|
|
1760
|
+
* @description Talent-access allowances (per billing period). Present only when `purpose` is `talent_access`. `"unlimited"` is a sentinel value. **Deprecated** — superseded by `features`, which carries the same allowances keyed by canonical feature key. Still serialized for compatibility.
|
|
1761
|
+
*/
|
|
1720
1762
|
talent?: {
|
|
1721
1763
|
unlocksPerPeriod: string;
|
|
1722
1764
|
messagesPerPeriod: string;
|
|
1723
1765
|
};
|
|
1766
|
+
/** @description Self-describing map of every benefit the plan carries, keyed by the canonical feature key. Each entry includes the value and enough of the feature definition (name, dataType, and optional displayOrder) to render without a second call. Values are strings; the literal "unlimited" is a sentinel and must be kept as a string. New features, including operator-defined custom attributes, appear here with no schema change. The API returns no display copy. */
|
|
1767
|
+
features: {
|
|
1768
|
+
[key: string]: {
|
|
1769
|
+
value: string;
|
|
1770
|
+
name: string;
|
|
1771
|
+
dataType: string;
|
|
1772
|
+
displayOrder?: number;
|
|
1773
|
+
};
|
|
1774
|
+
};
|
|
1724
1775
|
};
|
|
1725
1776
|
PostSuggestion: {
|
|
1726
1777
|
/** @enum {string} */
|
|
@@ -1863,6 +1914,11 @@ interface components {
|
|
|
1863
1914
|
* @enum {string|null}
|
|
1864
1915
|
*/
|
|
1865
1916
|
talentAccessModel: "paid_messaging" | "paid_unlocks_and_messaging" | null;
|
|
1917
|
+
/** @description Employer posting policy. Separate from `features.publicJobSubmission`, which says whether the board takes public submissions at all — this says who may complete one. */
|
|
1918
|
+
posting: {
|
|
1919
|
+
/** @description Whether posting a job on this board requires an active membership. When `true`, render the join gate in place of the anonymous post form: the platform rejects a create from a company with no contributing assignment (`membership_required`). Absent board config defaults to `false`. This flag is board policy and is safe to read anonymously; a signed-in employer's own standing rides their company billing options. */
|
|
1920
|
+
requiresMembership: boolean;
|
|
1921
|
+
};
|
|
1866
1922
|
analytics: {
|
|
1867
1923
|
ga4MeasurementId: string | null;
|
|
1868
1924
|
gtmId: string | null;
|
|
@@ -1972,6 +2028,13 @@ interface components {
|
|
|
1972
2028
|
*/
|
|
1973
2029
|
public: string | null;
|
|
1974
2030
|
};
|
|
2031
|
+
/** @description The company's membership on this board, or `null` when it holds none that is public. Only an ACTIVE assignment on a PUBLISHED plan whose purpose is membership appears here: a company on a private (operator-only) plan reads as `null`, and non-membership purchases — job-posting packs, talent access, services — never appear. Identity only: entitlements, billing state, and expiry are not on the public wire. */
|
|
2032
|
+
PublicCompanyMembership: {
|
|
2033
|
+
/** @description The membership plan's `id`. Pass it to `GET /boards/{identifier}/companies?membershipPlanId=` to browse the roster, or join it against the board's plans to render the plan's own copy. */
|
|
2034
|
+
planId: string;
|
|
2035
|
+
/** @description The membership plan's current display name — the badge text. Operators rename plans, so treat `planId` as the stable key. */
|
|
2036
|
+
planName: string;
|
|
2037
|
+
} | null;
|
|
1975
2038
|
PublicJob: {
|
|
1976
2039
|
/** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`). */
|
|
1977
2040
|
id: string;
|
|
@@ -2433,6 +2496,7 @@ interface components {
|
|
|
2433
2496
|
jobCount: number;
|
|
2434
2497
|
currency: string;
|
|
2435
2498
|
};
|
|
2499
|
+
/** @description Deprecated. Prefer public plans with purpose employer_service and pricingMode contact. */
|
|
2436
2500
|
SalesLedPlan: {
|
|
2437
2501
|
/** @enum {string} */
|
|
2438
2502
|
object: "sales_led_plan";
|
|
@@ -547,6 +547,7 @@ interface components {
|
|
|
547
547
|
publishedJobCount: number;
|
|
548
548
|
/** @description Number of jobs that contribute to this company's salary aggregates on the board (the salary sample size). `0` when there is no usable salary data — prefer this over fetching the full company-salary document just to decide whether to show a Salaries tab. Not the same as `publishedJobCount` (open roles without pay data stay at 0 here). */
|
|
549
549
|
salarySampleCount: number;
|
|
550
|
+
membership: components["schemas"]["PublicCompanyMembership"];
|
|
550
551
|
links: components["schemas"]["PublicCompanyLinks"];
|
|
551
552
|
};
|
|
552
553
|
CompanyPublicDetail: components["schemas"]["CompanyPublic"] & {
|
|
@@ -920,7 +921,9 @@ interface components {
|
|
|
920
921
|
/** @enum {string} */
|
|
921
922
|
object: "employer_billing_option";
|
|
922
923
|
/** @enum {string} */
|
|
923
|
-
type: "subscription" | "order";
|
|
924
|
+
type: "subscription" | "order" | "plan_assignment";
|
|
925
|
+
/** @enum {string} */
|
|
926
|
+
kind?: "member_post";
|
|
924
927
|
planId: string;
|
|
925
928
|
planName: string;
|
|
926
929
|
/** @enum {string} */
|
|
@@ -929,6 +932,10 @@ interface components {
|
|
|
929
932
|
jobsTotal: number;
|
|
930
933
|
featuredRemaining: number;
|
|
931
934
|
featuredTotal: number;
|
|
935
|
+
/** @description True when this option grants unlimited job posts; jobsRemaining/jobsTotal are then not meaningful. */
|
|
936
|
+
jobsUnlimited?: boolean;
|
|
937
|
+
/** @description True when this option grants unlimited featured posts. */
|
|
938
|
+
featuredUnlimited?: boolean;
|
|
932
939
|
/**
|
|
933
940
|
* Format: date-time
|
|
934
941
|
* @description When a subscription renews, or `null` for one-time orders.
|
|
@@ -960,6 +967,11 @@ interface components {
|
|
|
960
967
|
type: "subscription";
|
|
961
968
|
planId: string;
|
|
962
969
|
id: string;
|
|
970
|
+
} | {
|
|
971
|
+
/** @enum {string} */
|
|
972
|
+
type: "plan_assignment";
|
|
973
|
+
planId?: string;
|
|
974
|
+
id?: string;
|
|
963
975
|
};
|
|
964
976
|
invoiceBilling?: {
|
|
965
977
|
billingName?: string;
|
|
@@ -1239,6 +1251,16 @@ interface components {
|
|
|
1239
1251
|
hidden: boolean;
|
|
1240
1252
|
position: number;
|
|
1241
1253
|
};
|
|
1254
|
+
EmployerPostingCapabilities: {
|
|
1255
|
+
canPost: boolean;
|
|
1256
|
+
/** @enum {string} */
|
|
1257
|
+
reason?: "membership_required";
|
|
1258
|
+
discountPercent: number;
|
|
1259
|
+
freePostsRemaining: number;
|
|
1260
|
+
/** @description True when an active membership grants unlimited posts. */
|
|
1261
|
+
freePostsUnlimited?: boolean;
|
|
1262
|
+
memberPlanName?: string;
|
|
1263
|
+
};
|
|
1242
1264
|
EmployerProfileStats: {
|
|
1243
1265
|
/** @enum {string} */
|
|
1244
1266
|
object: "employer_profile_stats";
|
|
@@ -1692,13 +1714,26 @@ interface components {
|
|
|
1692
1714
|
/** @description Authoring default: the operator's prose description in the board's language. The localized public string lives in the board template — compose it from `featureSummary`, `billingInterval`, and `talent` rather than displaying this verbatim on localized surfaces. */
|
|
1693
1715
|
description: string | null;
|
|
1694
1716
|
/** @enum {string} */
|
|
1695
|
-
purpose: "job_posting" | "talent_access";
|
|
1717
|
+
purpose: "job_posting" | "talent_access" | "membership" | "job_seeker" | "employer_service" | "job_seeker_service";
|
|
1696
1718
|
/** @enum {string} */
|
|
1697
1719
|
kind: "free" | "subscription" | "one_time" | "bundle";
|
|
1698
1720
|
/** @enum {string|null} */
|
|
1699
|
-
billingInterval: "month" | "year" | null;
|
|
1721
|
+
billingInterval: "day" | "week" | "month" | "year" | null;
|
|
1722
|
+
/** @description Stripe recurring.interval_count. Null means 1. Quarterly is month × 3. */
|
|
1723
|
+
billingIntervalCount: number | null;
|
|
1700
1724
|
isRecommended: boolean;
|
|
1701
1725
|
displayOrder: number;
|
|
1726
|
+
/**
|
|
1727
|
+
* @description How the plan is sold. `priced` is bought with `price.stripePriceId`; `contact` is quote-only and must render the CTA below instead of a price. Read this, never `price` — a contact plan can still carry a zeroed price row. Plans created before this field existed report `priced`.
|
|
1728
|
+
* @enum {string}
|
|
1729
|
+
*/
|
|
1730
|
+
pricingMode: "priced" | "contact";
|
|
1731
|
+
/** @description Operator-authored display price for a contact plan, e.g. "From $2,000" or "15% of first-year salary". Null when unset. */
|
|
1732
|
+
priceText: string | null;
|
|
1733
|
+
/** @description Operator-authored CTA label for a contact plan. Null when unset; supply your own wording. */
|
|
1734
|
+
ctaText: string | null;
|
|
1735
|
+
/** @description The CTA target: an https, mailto:, or tel: URL. Null when unset, in which case render no CTA rather than a dead control. */
|
|
1736
|
+
ctaDestination: string | null;
|
|
1702
1737
|
invoiceOnly: boolean;
|
|
1703
1738
|
/** @enum {string|null} */
|
|
1704
1739
|
publishTiming: "on_issue" | "on_payment" | null;
|
|
@@ -1709,6 +1744,10 @@ interface components {
|
|
|
1709
1744
|
/** @description The public Stripe Price id used to start checkout. */
|
|
1710
1745
|
stripePriceId: string | null;
|
|
1711
1746
|
} | null;
|
|
1747
|
+
/**
|
|
1748
|
+
* @deprecated
|
|
1749
|
+
* @description Job-posting feature summary. **Deprecated** — superseded by `features`, which carries the same benefits keyed by canonical feature key. Still serialized for compatibility.
|
|
1750
|
+
*/
|
|
1712
1751
|
featureSummary: {
|
|
1713
1752
|
durationDays: number;
|
|
1714
1753
|
maxActiveJobs: number;
|
|
@@ -1716,11 +1755,23 @@ interface components {
|
|
|
1716
1755
|
/** @enum {string} */
|
|
1717
1756
|
featureSelectionMode: "auto" | "manual";
|
|
1718
1757
|
};
|
|
1719
|
-
/**
|
|
1758
|
+
/**
|
|
1759
|
+
* @deprecated
|
|
1760
|
+
* @description Talent-access allowances (per billing period). Present only when `purpose` is `talent_access`. `"unlimited"` is a sentinel value. **Deprecated** — superseded by `features`, which carries the same allowances keyed by canonical feature key. Still serialized for compatibility.
|
|
1761
|
+
*/
|
|
1720
1762
|
talent?: {
|
|
1721
1763
|
unlocksPerPeriod: string;
|
|
1722
1764
|
messagesPerPeriod: string;
|
|
1723
1765
|
};
|
|
1766
|
+
/** @description Self-describing map of every benefit the plan carries, keyed by the canonical feature key. Each entry includes the value and enough of the feature definition (name, dataType, and optional displayOrder) to render without a second call. Values are strings; the literal "unlimited" is a sentinel and must be kept as a string. New features, including operator-defined custom attributes, appear here with no schema change. The API returns no display copy. */
|
|
1767
|
+
features: {
|
|
1768
|
+
[key: string]: {
|
|
1769
|
+
value: string;
|
|
1770
|
+
name: string;
|
|
1771
|
+
dataType: string;
|
|
1772
|
+
displayOrder?: number;
|
|
1773
|
+
};
|
|
1774
|
+
};
|
|
1724
1775
|
};
|
|
1725
1776
|
PostSuggestion: {
|
|
1726
1777
|
/** @enum {string} */
|
|
@@ -1863,6 +1914,11 @@ interface components {
|
|
|
1863
1914
|
* @enum {string|null}
|
|
1864
1915
|
*/
|
|
1865
1916
|
talentAccessModel: "paid_messaging" | "paid_unlocks_and_messaging" | null;
|
|
1917
|
+
/** @description Employer posting policy. Separate from `features.publicJobSubmission`, which says whether the board takes public submissions at all — this says who may complete one. */
|
|
1918
|
+
posting: {
|
|
1919
|
+
/** @description Whether posting a job on this board requires an active membership. When `true`, render the join gate in place of the anonymous post form: the platform rejects a create from a company with no contributing assignment (`membership_required`). Absent board config defaults to `false`. This flag is board policy and is safe to read anonymously; a signed-in employer's own standing rides their company billing options. */
|
|
1920
|
+
requiresMembership: boolean;
|
|
1921
|
+
};
|
|
1866
1922
|
analytics: {
|
|
1867
1923
|
ga4MeasurementId: string | null;
|
|
1868
1924
|
gtmId: string | null;
|
|
@@ -1972,6 +2028,13 @@ interface components {
|
|
|
1972
2028
|
*/
|
|
1973
2029
|
public: string | null;
|
|
1974
2030
|
};
|
|
2031
|
+
/** @description The company's membership on this board, or `null` when it holds none that is public. Only an ACTIVE assignment on a PUBLISHED plan whose purpose is membership appears here: a company on a private (operator-only) plan reads as `null`, and non-membership purchases — job-posting packs, talent access, services — never appear. Identity only: entitlements, billing state, and expiry are not on the public wire. */
|
|
2032
|
+
PublicCompanyMembership: {
|
|
2033
|
+
/** @description The membership plan's `id`. Pass it to `GET /boards/{identifier}/companies?membershipPlanId=` to browse the roster, or join it against the board's plans to render the plan's own copy. */
|
|
2034
|
+
planId: string;
|
|
2035
|
+
/** @description The membership plan's current display name — the badge text. Operators rename plans, so treat `planId` as the stable key. */
|
|
2036
|
+
planName: string;
|
|
2037
|
+
} | null;
|
|
1975
2038
|
PublicJob: {
|
|
1976
2039
|
/** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`). */
|
|
1977
2040
|
id: string;
|
|
@@ -2433,6 +2496,7 @@ interface components {
|
|
|
2433
2496
|
jobCount: number;
|
|
2434
2497
|
currency: string;
|
|
2435
2498
|
};
|
|
2499
|
+
/** @description Deprecated. Prefer public plans with purpose employer_service and pricingMode contact. */
|
|
2436
2500
|
SalesLedPlan: {
|
|
2437
2501
|
/** @enum {string} */
|
|
2438
2502
|
object: "sales_led_plan";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-CyNKpM_j.js';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-CSWXqLZR.js';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -29,10 +29,23 @@ type CompanyCategorySalary = Schemas['CompanyCategorySalary'];
|
|
|
29
29
|
type CompanyListEnvelope = ListEnvelope<PublicCompany> & {
|
|
30
30
|
relatedSearches?: RelatedSearch[];
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* A company's membership on the board, as public identity: the plan's `id`
|
|
34
|
+
* and its current display name. `planId` is the stable key — join it against
|
|
35
|
+
* `board.plans` for price, benefits, and description.
|
|
36
|
+
*/
|
|
37
|
+
type PublicCompanyMembership = Schemas['PublicCompanyMembership'];
|
|
32
38
|
type CompaniesListQuery = {
|
|
33
39
|
cursor?: string;
|
|
34
40
|
/** Scope to a single market (sector) by slug. Unknown slugs 404. */
|
|
35
41
|
marketSlug?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Scope to the companies holding an active membership on this plan, by the
|
|
44
|
+
* plan's `id`. Only published membership plans match — any other id returns
|
|
45
|
+
* an empty list. Combines with `marketSlug` by intersection, and the roster
|
|
46
|
+
* becomes the whole result set, so `count` describes the members.
|
|
47
|
+
*/
|
|
48
|
+
membershipPlanId?: string;
|
|
36
49
|
/** 1–100. */
|
|
37
50
|
limit?: number;
|
|
38
51
|
/**
|
|
@@ -118,4 +131,4 @@ type CustomFieldDefinition = Schemas['CustomFieldDefinition'];
|
|
|
118
131
|
type CustomFieldType = CustomFieldDefinition['type'];
|
|
119
132
|
type CustomFieldOption = Schemas['CustomFieldOption'];
|
|
120
133
|
|
|
121
|
-
export type {
|
|
134
|
+
export type { SalaryTitle as A, SkillLocationSalary as B, CustomFieldDefinition as C, SkillLocationsIndex as D, TitleLocationSalary as E, TitleLocationsIndex as F, LocationSalaryDetail as L, PublicBoard as P, SkillSalaryDetail as S, TitleSalaryDetail as T, CompanyCategorySalary as a, CompanySalary as b, CompaniesListQuery as c, CompanyListEnvelope as d, CompaniesSearchBody as e, CompanyJobsListQuery as f, CompanySimilarQuery as g, CompanyMarketsListQuery as h, SalaryDetailQuery as i, CompanyMarket as j, CompanyMarketRef as k, CompanySalarySummary as l, CustomFieldOption as m, CustomFieldType as n, LocationSkillsIndex as o, LocationTitlesIndex as p, PublicBoardAds as q, PublicBoardAnalytics as r, PublicBoardFeatures as s, PublicBoardJobForm as t, PublicCompany as u, PublicCompanyDetail as v, PublicCompanyMembership as w, SalaryCompany as x, SalaryLocation as y, SalarySkill as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-CyNKpM_j.mjs';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-CALE3I8I.mjs';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -29,10 +29,23 @@ type CompanyCategorySalary = Schemas['CompanyCategorySalary'];
|
|
|
29
29
|
type CompanyListEnvelope = ListEnvelope<PublicCompany> & {
|
|
30
30
|
relatedSearches?: RelatedSearch[];
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* A company's membership on the board, as public identity: the plan's `id`
|
|
34
|
+
* and its current display name. `planId` is the stable key — join it against
|
|
35
|
+
* `board.plans` for price, benefits, and description.
|
|
36
|
+
*/
|
|
37
|
+
type PublicCompanyMembership = Schemas['PublicCompanyMembership'];
|
|
32
38
|
type CompaniesListQuery = {
|
|
33
39
|
cursor?: string;
|
|
34
40
|
/** Scope to a single market (sector) by slug. Unknown slugs 404. */
|
|
35
41
|
marketSlug?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Scope to the companies holding an active membership on this plan, by the
|
|
44
|
+
* plan's `id`. Only published membership plans match — any other id returns
|
|
45
|
+
* an empty list. Combines with `marketSlug` by intersection, and the roster
|
|
46
|
+
* becomes the whole result set, so `count` describes the members.
|
|
47
|
+
*/
|
|
48
|
+
membershipPlanId?: string;
|
|
36
49
|
/** 1–100. */
|
|
37
50
|
limit?: number;
|
|
38
51
|
/**
|
|
@@ -118,4 +131,4 @@ type CustomFieldDefinition = Schemas['CustomFieldDefinition'];
|
|
|
118
131
|
type CustomFieldType = CustomFieldDefinition['type'];
|
|
119
132
|
type CustomFieldOption = Schemas['CustomFieldOption'];
|
|
120
133
|
|
|
121
|
-
export type {
|
|
134
|
+
export type { SalaryTitle as A, SkillLocationSalary as B, CustomFieldDefinition as C, SkillLocationsIndex as D, TitleLocationSalary as E, TitleLocationsIndex as F, LocationSalaryDetail as L, PublicBoard as P, SkillSalaryDetail as S, TitleSalaryDetail as T, CompanyCategorySalary as a, CompanySalary as b, CompaniesListQuery as c, CompanyListEnvelope as d, CompaniesSearchBody as e, CompanyJobsListQuery as f, CompanySimilarQuery as g, CompanyMarketsListQuery as h, SalaryDetailQuery as i, CompanyMarket as j, CompanyMarketRef as k, CompanySalarySummary as l, CustomFieldOption as m, CustomFieldType as n, LocationSkillsIndex as o, LocationTitlesIndex as p, PublicBoardAds as q, PublicBoardAnalytics as r, PublicBoardFeatures as s, PublicBoardJobForm as t, PublicCompany as u, PublicCompanyDetail as v, PublicCompanyMembership as w, SalaryCompany as x, SalaryLocation as y, SalarySkill as z };
|
|
@@ -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-mn3GVbrC.mjs';
|
|
2
|
+
import { P as PublicJob } from './jobs-CALE3I8I.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-CXNxSlUB.js';
|
|
2
|
+
import { P as PublicJob } from './jobs-CSWXqLZR.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|