@cavuno/board 1.38.0 → 1.40.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/README.md +7 -0
- package/dist/{jobs-DMH3Ytoq.d.mts → _spec-DRbgPIlN.d.mts} +404 -96
- package/dist/{jobs-DMH3Ytoq.d.ts → _spec-DRbgPIlN.d.ts} +404 -96
- package/dist/bin.mjs +242 -18
- package/dist/{board-CBry4f7H.d.mts → board-BxPUtrOl.d.ts} +1 -1
- package/dist/{board-tV-zcaHs.d.ts → board-DCiNpgFf.d.mts} +1 -1
- package/dist/doctor.js +238 -14
- package/dist/doctor.mjs +238 -14
- package/dist/filters.d.mts +18 -4
- package/dist/filters.d.ts +18 -4
- package/dist/filters.js +17 -0
- package/dist/filters.mjs +17 -0
- package/dist/format.d.mts +3 -2
- package/dist/format.d.ts +3 -2
- package/dist/index.d.mts +62 -73
- package/dist/index.d.ts +62 -73
- package/dist/index.js +71 -1
- package/dist/index.mjs +71 -1
- package/dist/jobs-DAGAVHQL.d.ts +105 -0
- package/dist/jobs-DhePKSRe.d.mts +105 -0
- package/dist/{salaries-CaGlcCC6.d.ts → salaries-D6SUVMmt.d.mts} +2 -1
- package/dist/{salaries-01g4wK8y.d.mts → salaries-cqb78kg0.d.ts} +2 -1
- package/dist/search-BalPAS0P.d.ts +81 -0
- package/dist/search-DYUQzCq_.d.mts +81 -0
- package/dist/seo.d.mts +4 -3
- package/dist/seo.d.ts +4 -3
- package/dist/server.d.mts +56 -4
- package/dist/server.d.ts +56 -4
- package/dist/server.js +41 -0
- package/dist/server.mjs +41 -0
- package/dist/sitemap.d.mts +5 -3
- package/dist/sitemap.d.ts +5 -3
- package/dist/suggest.d.mts +70 -0
- package/dist/suggest.d.ts +70 -0
- package/dist/suggest.js +165 -0
- package/dist/suggest.mjs +144 -0
- package/dist/theme.d.mts +49 -1
- package/dist/theme.d.ts +49 -1
- package/dist/theme.js +60 -26
- package/dist/theme.mjs +60 -26
- package/package.json +11 -1
- package/skills/cavuno-board-filters/SKILL.md +11 -4
- package/skills/cavuno-board-jobs/SKILL.md +18 -2
- package/skills/cavuno-board-suggest/SKILL.md +119 -0
- package/skills/manifest.json +9 -2
package/README.md
CHANGED
|
@@ -39,6 +39,13 @@ const board = createBoardClient({
|
|
|
39
39
|
const { name, theme, features } = await board.context();
|
|
40
40
|
const page = await board.jobs.list({ limit: 20 });
|
|
41
41
|
const job = await board.jobs.retrieve('senior-chef');
|
|
42
|
+
|
|
43
|
+
// Federated search-dropdown suggestions (companies + taxonomy terms).
|
|
44
|
+
const { items } = await board.search.suggest({ q: 'acme', limit: 10 });
|
|
45
|
+
// Or the headless controller (debounce / abort / stale-drop built in):
|
|
46
|
+
// import { createSuggestController } from '@cavuno/board/suggest';
|
|
47
|
+
// const suggest = createSuggestController(board);
|
|
48
|
+
// suggest.setQuery('acme');
|
|
42
49
|
```
|
|
43
50
|
|
|
44
51
|
Every method accepts trailing `FetchOptions` — `signal`, `headers`, and
|
|
@@ -86,6 +86,31 @@ interface components {
|
|
|
86
86
|
*/
|
|
87
87
|
admin: string;
|
|
88
88
|
};
|
|
89
|
+
AdminPlan: {
|
|
90
|
+
/** @description Unique identifier for the plan. */
|
|
91
|
+
id: string;
|
|
92
|
+
/** @enum {string} */
|
|
93
|
+
object: "plan";
|
|
94
|
+
name: string;
|
|
95
|
+
description: string | null;
|
|
96
|
+
kind: string;
|
|
97
|
+
/**
|
|
98
|
+
* @description Subscription billing interval. Required for kind=subscription.
|
|
99
|
+
* @enum {string|null}
|
|
100
|
+
*/
|
|
101
|
+
billingInterval: "month" | "year" | null;
|
|
102
|
+
/**
|
|
103
|
+
* @description Whether the plan grants job-posting or talent-access entitlement.
|
|
104
|
+
* @enum {string}
|
|
105
|
+
*/
|
|
106
|
+
purpose: "job_posting" | "talent_access";
|
|
107
|
+
isPublic: boolean;
|
|
108
|
+
isRecommended: boolean;
|
|
109
|
+
isArchived: boolean;
|
|
110
|
+
displayOrder: number | null;
|
|
111
|
+
price: components["schemas"]["PlanPrice"];
|
|
112
|
+
features: components["schemas"]["PlanFeature"][];
|
|
113
|
+
};
|
|
89
114
|
AiUsage: {
|
|
90
115
|
id: string;
|
|
91
116
|
/** @enum {string} */
|
|
@@ -276,6 +301,37 @@ interface components {
|
|
|
276
301
|
resourceId: string;
|
|
277
302
|
})[];
|
|
278
303
|
};
|
|
304
|
+
BillingCheckout: {
|
|
305
|
+
/** @enum {string} */
|
|
306
|
+
object: "billing_checkout";
|
|
307
|
+
funding: components["schemas"]["BillingHostedCheckoutFunding"];
|
|
308
|
+
/**
|
|
309
|
+
* Format: uri
|
|
310
|
+
* @description Hosted Stripe Checkout Session URL.
|
|
311
|
+
*/
|
|
312
|
+
url: string;
|
|
313
|
+
/** @description Stripe Checkout Session id (cs_…). */
|
|
314
|
+
sessionId: string;
|
|
315
|
+
/**
|
|
316
|
+
* @description Self-serve plan key. enterprise is not self-serve and returns plan_not_self_serve.
|
|
317
|
+
* @enum {string}
|
|
318
|
+
*/
|
|
319
|
+
planKey: "starter" | "basic" | "grow" | "advanced" | "enterprise";
|
|
320
|
+
/** @enum {string} */
|
|
321
|
+
interval: "monthly" | "annual";
|
|
322
|
+
};
|
|
323
|
+
BillingCheckoutBody: {
|
|
324
|
+
/**
|
|
325
|
+
* @description Self-serve plan key. enterprise is not self-serve and returns plan_not_self_serve.
|
|
326
|
+
* @enum {string}
|
|
327
|
+
*/
|
|
328
|
+
planKey: "starter" | "basic" | "grow" | "advanced" | "enterprise";
|
|
329
|
+
/**
|
|
330
|
+
* @description Billing interval. Defaults to monthly when omitted.
|
|
331
|
+
* @enum {string}
|
|
332
|
+
*/
|
|
333
|
+
interval?: "monthly" | "annual";
|
|
334
|
+
};
|
|
279
335
|
BillingConnect: {
|
|
280
336
|
/** @enum {string} */
|
|
281
337
|
object: "billing_connect";
|
|
@@ -314,6 +370,14 @@ interface components {
|
|
|
314
370
|
canRemoveBranding: boolean;
|
|
315
371
|
apiAccess: boolean;
|
|
316
372
|
};
|
|
373
|
+
BillingHostedCheckoutFunding: {
|
|
374
|
+
/** @enum {string} */
|
|
375
|
+
type: "hosted_checkout";
|
|
376
|
+
};
|
|
377
|
+
BillingSavedPmFunding: {
|
|
378
|
+
/** @enum {string} */
|
|
379
|
+
type: "saved_pm";
|
|
380
|
+
};
|
|
317
381
|
BillingSubscription: {
|
|
318
382
|
/** @enum {string} */
|
|
319
383
|
object: "billing_subscription";
|
|
@@ -331,6 +395,47 @@ interface components {
|
|
|
331
395
|
stripePriceId: string;
|
|
332
396
|
quantity: number;
|
|
333
397
|
};
|
|
398
|
+
BillingUpgrade: components["schemas"]["BillingUpgradeSavedPm"] | components["schemas"]["BillingUpgradeCheckoutRequired"];
|
|
399
|
+
BillingUpgradeBody: {
|
|
400
|
+
/**
|
|
401
|
+
* @description Self-serve plan key. enterprise is not self-serve and returns plan_not_self_serve.
|
|
402
|
+
* @enum {string}
|
|
403
|
+
*/
|
|
404
|
+
planKey: "starter" | "basic" | "grow" | "advanced" | "enterprise";
|
|
405
|
+
/**
|
|
406
|
+
* @description Billing interval. Defaults to monthly when omitted.
|
|
407
|
+
* @enum {string}
|
|
408
|
+
*/
|
|
409
|
+
interval?: "monthly" | "annual";
|
|
410
|
+
};
|
|
411
|
+
BillingUpgradeCheckoutRequired: {
|
|
412
|
+
/** @enum {string} */
|
|
413
|
+
object: "billing_upgrade";
|
|
414
|
+
funding: components["schemas"]["BillingHostedCheckoutFunding"];
|
|
415
|
+
/** @enum {string} */
|
|
416
|
+
status: "checkout_required";
|
|
417
|
+
/** Format: uri */
|
|
418
|
+
url: string;
|
|
419
|
+
sessionId: string;
|
|
420
|
+
/**
|
|
421
|
+
* @description Self-serve plan key. enterprise is not self-serve and returns plan_not_self_serve.
|
|
422
|
+
* @enum {string}
|
|
423
|
+
*/
|
|
424
|
+
planKey: "starter" | "basic" | "grow" | "advanced" | "enterprise";
|
|
425
|
+
};
|
|
426
|
+
BillingUpgradeSavedPm: {
|
|
427
|
+
/** @enum {string} */
|
|
428
|
+
object: "billing_upgrade";
|
|
429
|
+
funding: components["schemas"]["BillingSavedPmFunding"];
|
|
430
|
+
/** @enum {string} */
|
|
431
|
+
status: "upgraded";
|
|
432
|
+
/**
|
|
433
|
+
* @description Self-serve plan key. enterprise is not self-serve and returns plan_not_self_serve.
|
|
434
|
+
* @enum {string}
|
|
435
|
+
*/
|
|
436
|
+
planKey: "starter" | "basic" | "grow" | "advanced" | "enterprise";
|
|
437
|
+
stripeSubscriptionId: string;
|
|
438
|
+
};
|
|
334
439
|
Block: {
|
|
335
440
|
/** @enum {string} */
|
|
336
441
|
object: "block";
|
|
@@ -962,6 +1067,25 @@ interface components {
|
|
|
962
1067
|
boardP75Max: number | null;
|
|
963
1068
|
currency: string;
|
|
964
1069
|
};
|
|
1070
|
+
CompanySuggestion: {
|
|
1071
|
+
/** @enum {string} */
|
|
1072
|
+
object: "suggestion";
|
|
1073
|
+
/**
|
|
1074
|
+
* @description discriminator enum property added by openapi-typescript
|
|
1075
|
+
* @enum {string}
|
|
1076
|
+
*/
|
|
1077
|
+
type: "company";
|
|
1078
|
+
/** @description Stable company identity. */
|
|
1079
|
+
id: string;
|
|
1080
|
+
/** @description Public company URL slug. */
|
|
1081
|
+
slug: string;
|
|
1082
|
+
/** @description Company display name. */
|
|
1083
|
+
name: string;
|
|
1084
|
+
/** @description Company logo URL, or `null` when none is set. */
|
|
1085
|
+
logoUrl: string | null;
|
|
1086
|
+
/** @description Live published-job count for this company on the board. */
|
|
1087
|
+
jobCount: number;
|
|
1088
|
+
};
|
|
965
1089
|
CompanySummary: {
|
|
966
1090
|
/** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the company endpoints (e.g. `GET /v1/companies/{id}`). */
|
|
967
1091
|
id: string;
|
|
@@ -1071,6 +1195,21 @@ interface components {
|
|
|
1071
1195
|
object: "conversation_ref";
|
|
1072
1196
|
conversationId: string | null;
|
|
1073
1197
|
};
|
|
1198
|
+
Coupon: {
|
|
1199
|
+
id: string;
|
|
1200
|
+
/** @enum {string} */
|
|
1201
|
+
object: "coupon";
|
|
1202
|
+
name: string | null;
|
|
1203
|
+
percentOff: number | null;
|
|
1204
|
+
amountOff: number | null;
|
|
1205
|
+
currency: string | null;
|
|
1206
|
+
duration: string;
|
|
1207
|
+
durationInMonths: number | null;
|
|
1208
|
+
valid: boolean;
|
|
1209
|
+
appliesTo: string[] | null;
|
|
1210
|
+
timesRedeemed: number;
|
|
1211
|
+
created: string;
|
|
1212
|
+
};
|
|
1074
1213
|
CreateAuthorBody: {
|
|
1075
1214
|
/** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
|
|
1076
1215
|
slug?: string;
|
|
@@ -1152,6 +1291,20 @@ interface components {
|
|
|
1152
1291
|
/** @description URL-friendly slug for the company. Auto-generated from `name` when omitted. */
|
|
1153
1292
|
slug?: string;
|
|
1154
1293
|
};
|
|
1294
|
+
CreateCouponBody: {
|
|
1295
|
+
name: string;
|
|
1296
|
+
percentOff?: number | null;
|
|
1297
|
+
/** @description Fixed discount in the currency major unit (e.g. 10 for $10, 1000 for ¥1000). Required with `currency` when there is no percentOff. */
|
|
1298
|
+
amountOff?: number | null;
|
|
1299
|
+
currency?: string | null;
|
|
1300
|
+
/** @enum {string} */
|
|
1301
|
+
duration: "once" | "forever" | "repeating";
|
|
1302
|
+
durationInMonths?: number;
|
|
1303
|
+
maxRedemptions?: number;
|
|
1304
|
+
/** @description Unix ms deadline after which the coupon cannot be redeemed. */
|
|
1305
|
+
redeemBy?: number;
|
|
1306
|
+
appliesToPlanIds?: string[];
|
|
1307
|
+
};
|
|
1155
1308
|
CreateDomainBody: {
|
|
1156
1309
|
/** @description Hostname to bind to this board, for example jobs.acme.com. Labels may contain letters, numbers, and hyphens, and may not start or end with a hyphen. The API normalizes accepted hostnames to lowercase before writing. */
|
|
1157
1310
|
domain: string;
|
|
@@ -1183,6 +1336,15 @@ interface components {
|
|
|
1183
1336
|
description?: string;
|
|
1184
1337
|
sortOrder?: number;
|
|
1185
1338
|
};
|
|
1339
|
+
CreateFeatureBody: {
|
|
1340
|
+
/** @description Stable feature key, e.g. jobs.max_active. */
|
|
1341
|
+
key: string;
|
|
1342
|
+
name: string;
|
|
1343
|
+
/** @description Value data type, e.g. integer or string. */
|
|
1344
|
+
dataType: string;
|
|
1345
|
+
description?: string;
|
|
1346
|
+
defaultValue?: string;
|
|
1347
|
+
};
|
|
1186
1348
|
CreateForagerSubscriptionBody: {
|
|
1187
1349
|
name: string;
|
|
1188
1350
|
rules: components["schemas"]["ForagerRule"][];
|
|
@@ -1390,6 +1552,43 @@ interface components {
|
|
|
1390
1552
|
/** @description The stage label. */
|
|
1391
1553
|
label: string;
|
|
1392
1554
|
};
|
|
1555
|
+
CreatePlanBody: {
|
|
1556
|
+
/** @description Display name for the plan. */
|
|
1557
|
+
name: string;
|
|
1558
|
+
/** @description Optional plan description. */
|
|
1559
|
+
description?: string;
|
|
1560
|
+
/**
|
|
1561
|
+
* @description Plan billing kind.
|
|
1562
|
+
* @enum {string}
|
|
1563
|
+
*/
|
|
1564
|
+
kind: "free" | "one_time" | "bundle" | "subscription";
|
|
1565
|
+
/**
|
|
1566
|
+
* @description Subscription billing interval. Required for kind=subscription.
|
|
1567
|
+
* @enum {string}
|
|
1568
|
+
*/
|
|
1569
|
+
billingInterval?: "month" | "year";
|
|
1570
|
+
/**
|
|
1571
|
+
* @description Whether the plan grants job-posting or talent-access entitlement.
|
|
1572
|
+
* @enum {string}
|
|
1573
|
+
*/
|
|
1574
|
+
purpose?: "job_posting" | "talent_access";
|
|
1575
|
+
/** @description Whether the plan is publicly listed. Defaults to false. */
|
|
1576
|
+
isPublic?: boolean;
|
|
1577
|
+
isRecommended?: boolean;
|
|
1578
|
+
displayOrder?: number;
|
|
1579
|
+
};
|
|
1580
|
+
CreatePromotionCodeBody: {
|
|
1581
|
+
code: string;
|
|
1582
|
+
maxRedemptions?: number;
|
|
1583
|
+
/**
|
|
1584
|
+
* Format: date-time
|
|
1585
|
+
* @description ISO-8601 expiry; converted to epoch seconds for Stripe.
|
|
1586
|
+
*/
|
|
1587
|
+
expiresAt?: string;
|
|
1588
|
+
firstTimeTransaction?: boolean;
|
|
1589
|
+
minimumAmount?: number;
|
|
1590
|
+
minimumAmountCurrency?: string;
|
|
1591
|
+
};
|
|
1393
1592
|
CreateRedirectBody: {
|
|
1394
1593
|
/** @description Source path to match, for example `/old-careers`. */
|
|
1395
1594
|
fromPath: string;
|
|
@@ -1900,6 +2099,25 @@ interface components {
|
|
|
1900
2099
|
hidden: boolean;
|
|
1901
2100
|
position: number;
|
|
1902
2101
|
};
|
|
2102
|
+
EmployerSubscription: {
|
|
2103
|
+
id: string;
|
|
2104
|
+
/** @enum {string} */
|
|
2105
|
+
object: "employer_subscription";
|
|
2106
|
+
employerEmail: string;
|
|
2107
|
+
companyId: string | null;
|
|
2108
|
+
companyName: string | null;
|
|
2109
|
+
planId: string | null;
|
|
2110
|
+
planName: string | null;
|
|
2111
|
+
status: string;
|
|
2112
|
+
/** @description ISO-8601 period end, or null. */
|
|
2113
|
+
currentPeriodEnd: string | null;
|
|
2114
|
+
cancelAtPeriodEnd: boolean;
|
|
2115
|
+
/** @description ISO-8601 creation time. */
|
|
2116
|
+
createdAt: string;
|
|
2117
|
+
stripeCustomerId: string | null;
|
|
2118
|
+
stripeSubscriptionId: string | null;
|
|
2119
|
+
};
|
|
2120
|
+
EmployerSubscriptionOrNull: components["schemas"]["EmployerSubscription"] | unknown | unknown;
|
|
1903
2121
|
EmployerUpdateJobBody: {
|
|
1904
2122
|
/** @description Long-form description of the role. Up to 25,000 characters. */
|
|
1905
2123
|
description?: string;
|
|
@@ -1973,6 +2191,17 @@ interface components {
|
|
|
1973
2191
|
/** @description The job title. */
|
|
1974
2192
|
title?: string;
|
|
1975
2193
|
};
|
|
2194
|
+
FeatureDefinition: {
|
|
2195
|
+
id: string;
|
|
2196
|
+
/** @enum {string} */
|
|
2197
|
+
object: "feature";
|
|
2198
|
+
key: string;
|
|
2199
|
+
name: string;
|
|
2200
|
+
description: string | null;
|
|
2201
|
+
dataType: string;
|
|
2202
|
+
defaultValue: string | null;
|
|
2203
|
+
isSystem: boolean;
|
|
2204
|
+
};
|
|
1976
2205
|
FindOrCreateCompanyBody: {
|
|
1977
2206
|
/** @description The company's display name. */
|
|
1978
2207
|
name: string;
|
|
@@ -2891,6 +3120,10 @@ interface components {
|
|
|
2891
3120
|
requireApprovalAggregatedJobs?: boolean;
|
|
2892
3121
|
/** @description Whether visitors must sign in to view jobs. */
|
|
2893
3122
|
registrationWallEnabled?: boolean;
|
|
3123
|
+
/** @description Whether the board's built-in ATS receives applications. When `false` (external-applications-only board), posting surfaces require an external `applicationUrl` and `POST /boards/:identifier/jobs/:jobSlug/apply` rejects with `applications_native_disabled`. Turning this off UNPUBLISHES every published native-apply job (those with no external `applicationUrl`) back to draft via an asynchronous batched drain — expect published job counts to shrink over the following seconds. Nothing is deleted, and re-enabling does NOT republish the drafted jobs. Absent means `true`. */
|
|
3124
|
+
nativeApplicationsEnabled?: boolean;
|
|
3125
|
+
/** @description Whether applicant↔employer messaging is enabled. When `false`, the `me/conversations` route family rejects with `messaging_disabled` and new-message emails are suppressed. Absent means `true`. */
|
|
3126
|
+
applicantMessagingEnabled?: boolean;
|
|
2894
3127
|
/** @description Legacy shorthand for the talent directory. `true` maps to `talentDirectoryVisibility: "public"`; `false` maps to `"off"`. Prefer the tri-state field. Providing both with conflicting values returns `settings_conflicting_fields`. */
|
|
2895
3128
|
talentDirectoryEnabled?: boolean;
|
|
2896
3129
|
/**
|
|
@@ -2937,6 +3170,34 @@ interface components {
|
|
|
2937
3170
|
[key: string]: unknown;
|
|
2938
3171
|
};
|
|
2939
3172
|
};
|
|
3173
|
+
PaywallGrantAdmin: {
|
|
3174
|
+
id: string;
|
|
3175
|
+
/** @enum {string} */
|
|
3176
|
+
object: "paywall_grant";
|
|
3177
|
+
boardUserId: string;
|
|
3178
|
+
email: string;
|
|
3179
|
+
displayName: string;
|
|
3180
|
+
/** @enum {string} */
|
|
3181
|
+
kind: "recurring" | "one_time";
|
|
3182
|
+
offerKey: string;
|
|
3183
|
+
status: string;
|
|
3184
|
+
stripeCustomerId: string | null;
|
|
3185
|
+
stripeSubscriptionId: string | null;
|
|
3186
|
+
amountCents: number;
|
|
3187
|
+
currency: string;
|
|
3188
|
+
currentPeriodStart: string | null;
|
|
3189
|
+
currentPeriodEnd: string | null;
|
|
3190
|
+
cancelAtPeriodEnd: boolean;
|
|
3191
|
+
activatedAt: string | null;
|
|
3192
|
+
canceledAt: string | null;
|
|
3193
|
+
createdAt: string;
|
|
3194
|
+
};
|
|
3195
|
+
PaywallGrantCount: {
|
|
3196
|
+
/** @enum {string} */
|
|
3197
|
+
object: "paywall_grant_count";
|
|
3198
|
+
cancelableRecurring: number;
|
|
3199
|
+
windingDownRecurring: number;
|
|
3200
|
+
};
|
|
2940
3201
|
PaywallOffer: {
|
|
2941
3202
|
/** @enum {string} */
|
|
2942
3203
|
object: "paywall_offer";
|
|
@@ -2955,6 +3216,26 @@ interface components {
|
|
|
2955
3216
|
intervalCount: number | null;
|
|
2956
3217
|
isDefault: boolean;
|
|
2957
3218
|
};
|
|
3219
|
+
PaywallOfferAdmin: {
|
|
3220
|
+
id: string;
|
|
3221
|
+
/** @enum {string} */
|
|
3222
|
+
object: "paywall_offer";
|
|
3223
|
+
offerKey: string;
|
|
3224
|
+
label: string | null;
|
|
3225
|
+
billingLabel: string | null;
|
|
3226
|
+
/** @enum {string} */
|
|
3227
|
+
kind: "recurring" | "one_time";
|
|
3228
|
+
intervalUnit: string | null;
|
|
3229
|
+
intervalCount: number | null;
|
|
3230
|
+
amountCents: number;
|
|
3231
|
+
currency: string;
|
|
3232
|
+
stripePriceId: string | null;
|
|
3233
|
+
enabled: boolean;
|
|
3234
|
+
isDefault: boolean;
|
|
3235
|
+
displayOrder: number;
|
|
3236
|
+
createdAt: string;
|
|
3237
|
+
};
|
|
3238
|
+
PaywallOfferAdminOrNull: components["schemas"]["PaywallOfferAdmin"] | unknown | unknown;
|
|
2958
3239
|
Permission: {
|
|
2959
3240
|
/** @description Unique identifier for the permission. */
|
|
2960
3241
|
id: string;
|
|
@@ -3003,6 +3284,36 @@ interface components {
|
|
|
3003
3284
|
messagesPerPeriod: string;
|
|
3004
3285
|
};
|
|
3005
3286
|
};
|
|
3287
|
+
PlanFeature: {
|
|
3288
|
+
/** @description Stable feature key, e.g. jobs.max_active. */
|
|
3289
|
+
key: string;
|
|
3290
|
+
name: string | null;
|
|
3291
|
+
value: string | null;
|
|
3292
|
+
dataType: string | null;
|
|
3293
|
+
};
|
|
3294
|
+
PlanFeatureValue: {
|
|
3295
|
+
key: string;
|
|
3296
|
+
value: string;
|
|
3297
|
+
};
|
|
3298
|
+
/** @description The plan single active price, or null when no price has been set. */
|
|
3299
|
+
PlanPrice: {
|
|
3300
|
+
/** @description ISO 4217 currency code, lowercase. */
|
|
3301
|
+
currency: string;
|
|
3302
|
+
/** @description Unit amount in the smallest currency unit. */
|
|
3303
|
+
amountCents: number;
|
|
3304
|
+
stripePriceId: string | null;
|
|
3305
|
+
stripeProductId: string | null;
|
|
3306
|
+
isActive: boolean;
|
|
3307
|
+
} | null;
|
|
3308
|
+
PromotionCode: {
|
|
3309
|
+
id: string;
|
|
3310
|
+
/** @enum {string} */
|
|
3311
|
+
object: "promotion_code";
|
|
3312
|
+
code: string;
|
|
3313
|
+
couponId: string;
|
|
3314
|
+
active: boolean;
|
|
3315
|
+
created: string;
|
|
3316
|
+
};
|
|
3006
3317
|
PublicBlogAdjacentPosts: {
|
|
3007
3318
|
/** @enum {string} */
|
|
3008
3319
|
object: "blog_adjacent_posts";
|
|
@@ -3096,6 +3407,10 @@ interface components {
|
|
|
3096
3407
|
publicJobSubmission: boolean;
|
|
3097
3408
|
candidatePaywall: boolean;
|
|
3098
3409
|
impressum: boolean;
|
|
3410
|
+
/** @description Whether the board accepts native (on-board ATS) applications. `false` means external-applications-only: the server rejects native submissions to `POST /jobs/:jobSlug/apply` with `applications_native_disabled` (422). Clients should hide native apply UI and treat a job with no external `applicationUrl` as not-applyable. */
|
|
3411
|
+
nativeApplications: boolean;
|
|
3412
|
+
/** @description Whether applicant↔employer messaging is enabled on the board. `false` means the `me/conversations` route family rejects with `messaging_disabled` (403) — hide inbox/dock/Message CTAs. */
|
|
3413
|
+
messaging: boolean;
|
|
3099
3414
|
};
|
|
3100
3415
|
/**
|
|
3101
3416
|
* @description The tri-state behind `features.talentDirectory` (which is `visibility === 'public'`). Link /talent whenever this is not `'off'` — an employers-only directory renders a sign-in upsell for anonymous visitors, matching the hosted chrome.
|
|
@@ -3449,6 +3764,8 @@ interface components {
|
|
|
3449
3764
|
filters?: {
|
|
3450
3765
|
/** @description Only return jobs at any of the given company IDs. Up to 10 values. */
|
|
3451
3766
|
companyId?: string[];
|
|
3767
|
+
/** @description Company slugs (the public URL identity). Up to 10. Resolved server-side; unknown slugs are dropped. Combined with `companyId` as a union. If the provided company filter resolves to no known companies, the result is empty. */
|
|
3768
|
+
companySlug?: string[];
|
|
3452
3769
|
/** @description Only return jobs with any of the given remote-work options. Up to 10 values. */
|
|
3453
3770
|
remoteOption?: ("on_site" | "hybrid" | "remote")[];
|
|
3454
3771
|
/** @description Only return jobs with any of the given employment types. Up to 10 values. */
|
|
@@ -3601,6 +3918,9 @@ interface components {
|
|
|
3601
3918
|
RemoveForagerCompanyBody: {
|
|
3602
3919
|
companyUrl: string;
|
|
3603
3920
|
};
|
|
3921
|
+
RenameCouponBody: {
|
|
3922
|
+
name: string;
|
|
3923
|
+
};
|
|
3604
3924
|
ReorderPipelineStagesBody: {
|
|
3605
3925
|
/** @description The job whose stages are reordered. */
|
|
3606
3926
|
jobId: string;
|
|
@@ -3910,6 +4230,19 @@ interface components {
|
|
|
3910
4230
|
/** Format: email */
|
|
3911
4231
|
workEmail: string;
|
|
3912
4232
|
};
|
|
4233
|
+
SetPlanFeaturesBody: {
|
|
4234
|
+
/** @description Full replacement set of feature key/value pairs for the plan. */
|
|
4235
|
+
features: {
|
|
4236
|
+
key: string;
|
|
4237
|
+
value: string;
|
|
4238
|
+
}[];
|
|
4239
|
+
};
|
|
4240
|
+
SetPlanPriceBody: {
|
|
4241
|
+
/** @description ISO 4217 currency code (e.g. usd). */
|
|
4242
|
+
currency: string;
|
|
4243
|
+
/** @description Unit amount in the smallest currency unit. */
|
|
4244
|
+
amountCents: number;
|
|
4245
|
+
};
|
|
3913
4246
|
SettingsAdsenseBody: {
|
|
3914
4247
|
/** @description Whether AdSense placements are rendered on the public board. */
|
|
3915
4248
|
adsenseEnabled?: boolean;
|
|
@@ -4120,6 +4453,9 @@ interface components {
|
|
|
4120
4453
|
StartConversationBody: {
|
|
4121
4454
|
candidateBoardUserId: string;
|
|
4122
4455
|
body: string;
|
|
4456
|
+
} | {
|
|
4457
|
+
candidateHandle: string;
|
|
4458
|
+
body: string;
|
|
4123
4459
|
};
|
|
4124
4460
|
Subscriber: {
|
|
4125
4461
|
/** @description Unique identifier for the subscriber. */
|
|
@@ -4172,6 +4508,27 @@ interface components {
|
|
|
4172
4508
|
createdAt: string;
|
|
4173
4509
|
})[];
|
|
4174
4510
|
};
|
|
4511
|
+
SuggestResult: {
|
|
4512
|
+
/** @enum {string} */
|
|
4513
|
+
object: "suggest_result";
|
|
4514
|
+
/** @description The trimmed query string that produced these suggestions. */
|
|
4515
|
+
query: string;
|
|
4516
|
+
/** @description Interleaved company + taxonomy-term suggestions. Order is server-ranked; clients must not re-sort. */
|
|
4517
|
+
items: components["schemas"]["SuggestionItem"][];
|
|
4518
|
+
};
|
|
4519
|
+
SuggestionItem: components["schemas"]["CompanySuggestion"] | components["schemas"]["TermSuggestion"];
|
|
4520
|
+
TalentAccess: {
|
|
4521
|
+
/** @enum {string} */
|
|
4522
|
+
object: "talent_access";
|
|
4523
|
+
/** @description Whether the viewer has an approved company membership on this board. */
|
|
4524
|
+
isEmployer: boolean;
|
|
4525
|
+
/** @description Whether this board sells talent access (a public `talent_access` plan exists). When `false` the talent surfaces are not credit-gated for employers. */
|
|
4526
|
+
paywallActive: boolean;
|
|
4527
|
+
/** @description The CTA answer: the viewer is an approved employer AND either the board has no talent paywall or one of their companies holds an active talent_access subscription or a succeeded credit pack. Always `false` for candidates; anonymous viewers get 401. */
|
|
4528
|
+
hasTalentAccess: boolean;
|
|
4529
|
+
/** @description True when any active talent_access subscription carries the unlimited profile-unlock sentinel on its feature snapshot. */
|
|
4530
|
+
hasUnlimitedUnlocks: boolean;
|
|
4531
|
+
};
|
|
4175
4532
|
TalentDirectoryEntry: {
|
|
4176
4533
|
/** @enum {string} */
|
|
4177
4534
|
object: "talent_directory_entry";
|
|
@@ -4210,6 +4567,8 @@ interface components {
|
|
|
4210
4567
|
title: string;
|
|
4211
4568
|
companyName: string;
|
|
4212
4569
|
companyUrl: string | null;
|
|
4570
|
+
/** @description Absolute logo URL for the company, resolved from `companyUrl` the same way the hosted profile renders it; `null` when the company has no usable website. Render a monogram/initials fallback when `null` (and on image error — the URL 404s when the brand has no icon). */
|
|
4571
|
+
companyLogoUrl: string | null;
|
|
4213
4572
|
location: string | null;
|
|
4214
4573
|
employmentType: string | null;
|
|
4215
4574
|
locationType: string | null;
|
|
@@ -4225,6 +4584,8 @@ interface components {
|
|
|
4225
4584
|
education: {
|
|
4226
4585
|
institutionName: string;
|
|
4227
4586
|
institutionUrl: string | null;
|
|
4587
|
+
/** @description Absolute logo URL for the institution, resolved from `institutionUrl` the same way the hosted profile renders it; `null` when the institution has no usable website. Render a monogram/initials fallback when `null` (and on image error). */
|
|
4588
|
+
institutionLogoUrl: string | null;
|
|
4228
4589
|
degree: string | null;
|
|
4229
4590
|
fieldOfStudy: string | null;
|
|
4230
4591
|
grade: string | null;
|
|
@@ -4254,6 +4615,28 @@ interface components {
|
|
|
4254
4615
|
locality: string | null;
|
|
4255
4616
|
placeType: string | null;
|
|
4256
4617
|
} | null;
|
|
4618
|
+
TermSuggestion: {
|
|
4619
|
+
/** @enum {string} */
|
|
4620
|
+
object: "suggestion";
|
|
4621
|
+
/**
|
|
4622
|
+
* @description discriminator enum property added by openapi-typescript
|
|
4623
|
+
* @enum {string}
|
|
4624
|
+
*/
|
|
4625
|
+
type: "term";
|
|
4626
|
+
/**
|
|
4627
|
+
* @description Whether this taxonomy term is a category or a skill.
|
|
4628
|
+
* @enum {string}
|
|
4629
|
+
*/
|
|
4630
|
+
termType: "category" | "skill";
|
|
4631
|
+
/** @description Stable taxonomy entity ID. */
|
|
4632
|
+
id: string;
|
|
4633
|
+
/** @description Current source-locale slug used by job search; old slugs may remain aliases. */
|
|
4634
|
+
sourceSlug: string;
|
|
4635
|
+
/** @description Board-language canonical URL slug. */
|
|
4636
|
+
canonicalSlug: string;
|
|
4637
|
+
/** @description Board-language name with source-name fallback. */
|
|
4638
|
+
displayName: string;
|
|
4639
|
+
};
|
|
4257
4640
|
TitleLocationSalary: {
|
|
4258
4641
|
/** @enum {string} */
|
|
4259
4642
|
object: "title_location_salary";
|
|
@@ -4717,10 +5100,30 @@ interface components {
|
|
|
4717
5100
|
channel: "messageEmails" | "applicationEmails";
|
|
4718
5101
|
subscribed: boolean;
|
|
4719
5102
|
};
|
|
5103
|
+
UpdatePaywallOfferBody: {
|
|
5104
|
+
/** @description Enable or disable the offer. */
|
|
5105
|
+
isEnabled?: boolean;
|
|
5106
|
+
/** @description Alias of isEnabled (either is accepted). */
|
|
5107
|
+
enabled?: boolean;
|
|
5108
|
+
label?: string;
|
|
5109
|
+
billingLabel?: string;
|
|
5110
|
+
displayOrder?: number;
|
|
5111
|
+
isDefault?: boolean;
|
|
5112
|
+
};
|
|
4720
5113
|
UpdatePipelineStageBody: {
|
|
4721
5114
|
label?: string;
|
|
4722
5115
|
hidden?: boolean;
|
|
4723
5116
|
};
|
|
5117
|
+
UpdatePlanBody: {
|
|
5118
|
+
name?: string;
|
|
5119
|
+
description?: string;
|
|
5120
|
+
/** @description Publish/unpublish the plan. */
|
|
5121
|
+
isPublic?: boolean;
|
|
5122
|
+
isRecommended?: boolean;
|
|
5123
|
+
/** @description Archive the plan (soft-delete). There is no hard DELETE. */
|
|
5124
|
+
isArchived?: boolean;
|
|
5125
|
+
displayOrder?: number;
|
|
5126
|
+
};
|
|
4724
5127
|
UpdateRedirectBody: {
|
|
4725
5128
|
/** @description Source path to match, for example `/old-careers`. */
|
|
4726
5129
|
fromPath?: string;
|
|
@@ -4784,99 +5187,4 @@ interface components {
|
|
|
4784
5187
|
|
|
4785
5188
|
type Schemas = components['schemas'];
|
|
4786
5189
|
|
|
4787
|
-
|
|
4788
|
-
* Stripe-shaped success envelopes (`01-conventions.md` §5.1). The
|
|
4789
|
-
* server MAY add top-level fields; consumers MUST ignore unknown
|
|
4790
|
-
* fields.
|
|
4791
|
-
*/
|
|
4792
|
-
/**
|
|
4793
|
-
* Optional offset-pagination metadata generated from the Board API contract.
|
|
4794
|
-
* `nextCursor` is preserved alongside for forward cursor iteration.
|
|
4795
|
-
*/
|
|
4796
|
-
type OffsetPagination = Schemas['OffsetPagination'];
|
|
4797
|
-
/** @deprecated Use `OffsetPagination`. */
|
|
4798
|
-
type StorefrontPagination = OffsetPagination;
|
|
4799
|
-
/** @deprecated Use `OffsetPagination`. */
|
|
4800
|
-
type JobCatalogPagination = OffsetPagination;
|
|
4801
|
-
type ListEnvelope<T> = OffsetPagination & {
|
|
4802
|
-
object: 'list';
|
|
4803
|
-
url: string;
|
|
4804
|
-
hasMore: boolean;
|
|
4805
|
-
/** `null` when `hasMore` is false — always present, never undefined. */
|
|
4806
|
-
nextCursor: string | null;
|
|
4807
|
-
data: T[];
|
|
4808
|
-
};
|
|
4809
|
-
type SearchEnvelope<T> = OffsetPagination & {
|
|
4810
|
-
object: 'search_result';
|
|
4811
|
-
url: string;
|
|
4812
|
-
hasMore: boolean;
|
|
4813
|
-
nextCursor: string | null;
|
|
4814
|
-
data: T[];
|
|
4815
|
-
};
|
|
4816
|
-
|
|
4817
|
-
type PublicJob = Schemas['PublicJob'];
|
|
4818
|
-
type PublicJobCard = Schemas['PublicJobCard'];
|
|
4819
|
-
/**
|
|
4820
|
-
* A job's opaque, display-only custom-field values (CAV-294), keyed by each
|
|
4821
|
-
* field's `key`. Resolve labels via the board's `CustomFieldDefinition`s
|
|
4822
|
-
* (`board.context().customFields`).
|
|
4823
|
-
*/
|
|
4824
|
-
type CustomFieldValues = PublicJob['customFieldValues'];
|
|
4825
|
-
type CustomFieldValue = CustomFieldValues[string];
|
|
4826
|
-
type JobCompany = Schemas['JobCompany'];
|
|
4827
|
-
type OfficeLocation = Schemas['JobOfficeLocation'];
|
|
4828
|
-
type RemoteOption = NonNullable<PublicJob['remoteOption']>;
|
|
4829
|
-
type EmploymentType = NonNullable<PublicJob['employmentType']>;
|
|
4830
|
-
type Seniority = NonNullable<PublicJob['seniority']>;
|
|
4831
|
-
/** Candidate-facing result ordering (ADR-0048); `relevance` is the default. */
|
|
4832
|
-
type JobSort = NonNullable<Schemas['PublicSearchJobsBody']['sort']>;
|
|
4833
|
-
type EducationRequirement = PublicJob['educationRequirements'][number];
|
|
4834
|
-
type RemotePermit = PublicJob['remotePermits'][number];
|
|
4835
|
-
type RemoteTimezone = PublicJob['remoteTimezones'][number];
|
|
4836
|
-
/**
|
|
4837
|
-
* Derived suggestion on a browse list (ADR-0037 §8): jobs surface `category`
|
|
4838
|
-
* and `skill` terms; the companies list surfaces `market` terms.
|
|
4839
|
-
*/
|
|
4840
|
-
interface RelatedSearch {
|
|
4841
|
-
type: 'category' | 'skill' | 'market';
|
|
4842
|
-
slug: string;
|
|
4843
|
-
term: string;
|
|
4844
|
-
count: number;
|
|
4845
|
-
}
|
|
4846
|
-
/** The browse list envelope — `PublicJobCard`s + job catalog pagination + `relatedSearches`. */
|
|
4847
|
-
type JobCardListEnvelope = ListEnvelope<PublicJobCard> & {
|
|
4848
|
-
relatedSearches?: RelatedSearch[];
|
|
4849
|
-
};
|
|
4850
|
-
/** The search envelope — `PublicJobCard`s + job catalog pagination. */
|
|
4851
|
-
type JobCardSearchEnvelope = SearchEnvelope<PublicJobCard>;
|
|
4852
|
-
type JobsListQuery = {
|
|
4853
|
-
cursor?: string;
|
|
4854
|
-
/** 1–100. */
|
|
4855
|
-
limit?: number;
|
|
4856
|
-
/** Job catalog page offset; takes precedence over `cursor`. `offset + limit` ≤ 10,000. */
|
|
4857
|
-
offset?: number;
|
|
4858
|
-
/** Repeated param (up to 10) — OR-matched. Repeat `companyId` per value. */
|
|
4859
|
-
companyId?: string[];
|
|
4860
|
-
remoteOption?: RemoteOption[];
|
|
4861
|
-
employmentType?: EmploymentType[];
|
|
4862
|
-
seniority?: Seniority[];
|
|
4863
|
-
/** Result ordering (ADR-0048). Absent ⇒ `relevance` (the featured-ranked browse). */
|
|
4864
|
-
sort?: JobSort;
|
|
4865
|
-
/** Place slug for a geo radius search; unresolvable slugs are ignored. */
|
|
4866
|
-
location?: string;
|
|
4867
|
-
/** Radius in km around `location` (10–250; default 50). */
|
|
4868
|
-
radius?: number;
|
|
4869
|
-
/** Category slug seed (the `/jobs/[keyword]` page) — server resolves it to the English source name; unresolvable → 404. */
|
|
4870
|
-
category?: string;
|
|
4871
|
-
/** Skill slug seed (the `/jobs/skills/[skill]` page) — server-resolved; unresolvable → 404. */
|
|
4872
|
-
skill?: string;
|
|
4873
|
-
/** Sparse fieldset (Medusa-style `+field`). Only `'+description'` is supported — adds `description` to each card. */
|
|
4874
|
-
fields?: string;
|
|
4875
|
-
};
|
|
4876
|
-
type JobsSimilarQuery = {
|
|
4877
|
-
/** How many similar jobs to return (1–20; default 5). */
|
|
4878
|
-
limit?: number;
|
|
4879
|
-
};
|
|
4880
|
-
type JobsSearchBody = Schemas['PublicSearchJobsBody'];
|
|
4881
|
-
|
|
4882
|
-
export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, OfficeLocation as O, PublicJob as P, RemoteOption as R, Seniority as S, PublicJobCard as a, Schemas as b, components as c, JobsListQuery as d, JobCardListEnvelope as e, JobsSearchBody as f, JobCardSearchEnvelope as g, JobsSimilarQuery as h, SearchEnvelope as i, CustomFieldValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCompany as m, OffsetPagination as n, RelatedSearch as o, RemotePermit as p, RemoteTimezone as q, StorefrontPagination as r };
|
|
5190
|
+
export type { Schemas as S, components as c };
|