@cavuno/board 4.9.0 → 4.10.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 (40) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{_spec-B9Ah8dNs.d.mts → _spec-BwUP7Wni.d.mts} +65 -1
  3. package/dist/{_spec-B9Ah8dNs.d.ts → _spec-BwUP7Wni.d.ts} +65 -1
  4. package/dist/{blog-BmqWfLZi.d.mts → blog-C_xXYOxc.d.mts} +1 -1
  5. package/dist/{blog-bh07fZ8Q.d.ts → blog-DC4BfQqF.d.ts} +1 -1
  6. package/dist/{board-B4jLqmxn.d.mts → board-CG8rDGTY.d.mts} +2 -2
  7. package/dist/{board-De8nLbk7.d.ts → board-zdQ875ck.d.ts} +2 -2
  8. package/dist/{breadcrumbs-BVQL2dNY.d.mts → breadcrumbs-BK7AqNp2.d.mts} +2 -2
  9. package/dist/{breadcrumbs-B1HVufC7.d.ts → breadcrumbs-qs9DC0yh.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-T46JASKG.mjs → chunk-XEJWXRLK.mjs} +7 -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 +86 -14
  17. package/dist/index.d.ts +86 -14
  18. package/dist/index.js +118 -4
  19. package/dist/index.mjs +112 -5
  20. package/dist/{jobs-Iv6Wkvvf.d.ts → jobs-B-uO7ffG.d.ts} +1 -1
  21. package/dist/{jobs-B7q3BgIK.d.mts → jobs-BToqhRuU.d.mts} +1 -1
  22. package/dist/{search-DC0jatQN.d.mts → search-CvwKD0Va.d.mts} +1 -1
  23. package/dist/{search-CbDZwdyl.d.ts → search-Sl9-xi1z.d.ts} +1 -1
  24. package/dist/{seo-HCE7aCkh.d.mts → seo-B9b2AkSE.d.mts} +1 -1
  25. package/dist/{seo-BDFUuvXM.d.ts → seo-D1Vc_0HF.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/suggest.d.mts +2 -2
  36. package/dist/suggest.d.ts +2 -2
  37. package/package.json +1 -1
  38. package/skills/cavuno-board-setup/SKILL.md +1 -0
  39. package/skills/cavuno-board-talent-access/SKILL.md +149 -0
  40. package/skills/manifest.json +8 -1
@@ -132,6 +132,13 @@ var BOARD_API_ERROR_CODES = [
132
132
  "paywall_no_candidate_profile",
133
133
  "paywall_no_recurring_subscription",
134
134
  "paywall_offer_not_found",
135
+ // Employer talent-access paywall
136
+ "talent_access_unavailable",
137
+ "company_required",
138
+ "already_on_plan",
139
+ "talent_access_required",
140
+ "messaging_talent_access_required",
141
+ "stripe_not_connected",
135
142
  // Public job posting
136
143
  "job_posting_logo_lookup_unavailable",
137
144
  "job_posting_logo_not_found",
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-B7q3BgIK.mjs';
2
- import './_spec-B9Ah8dNs.mjs';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-BToqhRuU.mjs';
2
+ import './_spec-BwUP7Wni.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
package/dist/filters.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-Iv6Wkvvf.js';
2
- import './_spec-B9Ah8dNs.js';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-B-uO7ffG.js';
2
+ import './_spec-BwUP7Wni.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
package/dist/format.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-BVQL2dNY.mjs';
2
- import { C as CustomFieldDefinition } from './board-B4jLqmxn.mjs';
3
- import { C as CustomFieldValues } from './jobs-B7q3BgIK.mjs';
4
- import './_spec-B9Ah8dNs.mjs';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-BK7AqNp2.mjs';
2
+ import { C as CustomFieldDefinition } from './board-CG8rDGTY.mjs';
3
+ import { C as CustomFieldValues } from './jobs-BToqhRuU.mjs';
4
+ import './_spec-BwUP7Wni.mjs';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/format.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-B1HVufC7.js';
2
- import { C as CustomFieldDefinition } from './board-De8nLbk7.js';
3
- import { C as CustomFieldValues } from './jobs-Iv6Wkvvf.js';
4
- import './_spec-B9Ah8dNs.js';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-qs9DC0yh.js';
2
+ import { C as CustomFieldDefinition } from './board-zdQ875ck.js';
3
+ import { C as CustomFieldValues } from './jobs-B-uO7ffG.js';
4
+ import './_spec-BwUP7Wni.js';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/index.d.mts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-B9Ah8dNs.mjs';
2
- import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-DC0jatQN.mjs';
3
- export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-DC0jatQN.mjs';
4
- import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-B4jLqmxn.mjs';
5
- export { a as CompanyCategorySalary, j as CompanyMarket, k as CompanyMarketRef, b as CompanySalary, l as CompanySalarySummary, C as CustomFieldDefinition, m as CustomFieldOption, n as CustomFieldType, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, P as PublicBoard, q as PublicBoardAds, r as PublicBoardAnalytics, s as PublicBoardFeatures, t as PublicBoardJobForm, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, B as SkillLocationsIndex, S as SkillSalaryDetail, D as TitleLocationSalary, E as TitleLocationsIndex, T as TitleSalaryDetail } from './board-B4jLqmxn.mjs';
6
- export { B as BoardSeo } from './seo-HCE7aCkh.mjs';
7
- import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, a as JobsListQuery, b as JobCardListEnvelope, c as JobsSearchBody, d as JobCardSearchEnvelope, e as JobsSimilarQuery, f as SearchEnvelope } from './jobs-B7q3BgIK.mjs';
8
- export { g as CustomFieldValue, C as CustomFieldValues, h as EducationRequirement, i as JobCatalogPagination, j as JobCompany, J as JobSort, O as OfficeLocation, k as OffsetPagination, P as PublicJob, l as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-B7q3BgIK.mjs';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-BmqWfLZi.mjs';
10
- export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-BmqWfLZi.mjs';
1
+ import { S as Schemas, c as components } from './_spec-BwUP7Wni.mjs';
2
+ import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CvwKD0Va.mjs';
3
+ export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-CvwKD0Va.mjs';
4
+ import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-CG8rDGTY.mjs';
5
+ export { a as CompanyCategorySalary, j as CompanyMarket, k as CompanyMarketRef, b as CompanySalary, l as CompanySalarySummary, C as CustomFieldDefinition, m as CustomFieldOption, n as CustomFieldType, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, P as PublicBoard, q as PublicBoardAds, r as PublicBoardAnalytics, s as PublicBoardFeatures, t as PublicBoardJobForm, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, B as SkillLocationsIndex, S as SkillSalaryDetail, D as TitleLocationSalary, E as TitleLocationsIndex, T as TitleSalaryDetail } from './board-CG8rDGTY.mjs';
6
+ export { B as BoardSeo } from './seo-B9b2AkSE.mjs';
7
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, a as JobsListQuery, b as JobCardListEnvelope, c as JobsSearchBody, d as JobCardSearchEnvelope, e as JobsSimilarQuery, f as SearchEnvelope } from './jobs-BToqhRuU.mjs';
8
+ export { g as CustomFieldValue, C as CustomFieldValues, h as EducationRequirement, i as JobCatalogPagination, j as JobCompany, J as JobSort, O as OfficeLocation, k as OffsetPagination, P as PublicJob, l as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-BToqhRuU.mjs';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-C_xXYOxc.mjs';
10
+ export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-C_xXYOxc.mjs';
11
11
 
12
12
  /**
13
13
  * Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
@@ -20,7 +20,7 @@ export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts,
20
20
  * `unknown_error` is SDK-synthesized when a response carries no parseable
21
21
  * envelope.
22
22
  */
23
- declare const BOARD_API_ERROR_CODES: readonly ["internal_error", "validation_bad_request", "validation_payload_too_large", "rate_limited", "rate_limit_unavailable", "search_unavailable", "too_many_filter_values", "pagination_invalid_cursor", "pagination_offset_too_large", "auth_unauthenticated", "auth_forbidden", "plan_upgrade_required", "unknown_error", "boards_not_found", "board_page_not_found", "board_auth_email_taken", "board_auth_invalid_credentials", "board_auth_invalid_token", "board_auth_registration_disabled", "board_auth_token_expired", "invalid_current_password", "no_password", "same_email", "email_taken", "invalid_token", "board_password_required", "board_password_invalid", "jobs_not_found", "jobs_invalid_filter", "categories_not_found", "skills_not_found", "places_not_found", "companies_not_found", "company_markets_not_found", "company_salary_not_found", "company_category_salary_not_found", "salaries_title_not_found", "salaries_skill_not_found", "salaries_location_not_found", "salaries_title_location_not_found", "salaries_skill_location_not_found", "blog_post_not_found", "blog_author_not_found", "blog_tag_not_found", "talent_not_found", "talent_directory_not_found", "talent_directory_restricted", "job_recommendations_not_found", "recommended_talent_not_found", "job_alert_not_found", "job_alerts_disabled", "candidate_alert_limit_reached", "candidate_alert_not_found", "candidate_entry_not_found", "candidate_handle_taken", "candidate_job_not_found", "candidate_notification_preference_paused", "resume_invalid_file", "resume_upload_forbidden", "applications_external_apply_only", "applications_country_not_allowed", "applications_guest_not_allowed", "applications_job_not_found", "applications_not_found", "applications_resume_invalid_file", "applications_unprocessable", "messaging_application_not_found", "messaging_application_not_linked", "messaging_blocked", "messaging_cannot_block_self", "messaging_cold_rule", "messaging_conversation_not_found", "messaging_disabled", "messaging_edit_window_expired", "messaging_message_deleted", "messaging_message_not_found", "messaging_not_author", "messaging_not_participant", "messaging_not_permitted", "messaging_not_recipient", "messaging_rate_limited", "messaging_recipient_not_found", "messaging_recipient_not_open", "messaging_unsend_window_expired", "employer_applicant_not_found", "employer_ats_unprocessable", "employer_checkout_failed", "employer_company_exists", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "employer_not_member", "employer_payment_required", "employer_pipeline_stage_not_found", "employer_member_not_found", "employer_invite_not_found", "not_company_admin", "not_company_member", "company_deletion_disabled", "last_admin", "already_member", "already_invited", "invalid_email", "invite_email_mismatch", "candidate_role", "job_not_published", "paywall_already_active", "paywall_disabled", "paywall_invalid_checkout_session", "paywall_no_candidate_profile", "paywall_no_recurring_subscription", "paywall_offer_not_found", "job_posting_logo_lookup_unavailable", "job_posting_logo_not_found", "job_posting_rejected"];
23
+ declare const BOARD_API_ERROR_CODES: readonly ["internal_error", "validation_bad_request", "validation_payload_too_large", "rate_limited", "rate_limit_unavailable", "search_unavailable", "too_many_filter_values", "pagination_invalid_cursor", "pagination_offset_too_large", "auth_unauthenticated", "auth_forbidden", "plan_upgrade_required", "unknown_error", "boards_not_found", "board_page_not_found", "board_auth_email_taken", "board_auth_invalid_credentials", "board_auth_invalid_token", "board_auth_registration_disabled", "board_auth_token_expired", "invalid_current_password", "no_password", "same_email", "email_taken", "invalid_token", "board_password_required", "board_password_invalid", "jobs_not_found", "jobs_invalid_filter", "categories_not_found", "skills_not_found", "places_not_found", "companies_not_found", "company_markets_not_found", "company_salary_not_found", "company_category_salary_not_found", "salaries_title_not_found", "salaries_skill_not_found", "salaries_location_not_found", "salaries_title_location_not_found", "salaries_skill_location_not_found", "blog_post_not_found", "blog_author_not_found", "blog_tag_not_found", "talent_not_found", "talent_directory_not_found", "talent_directory_restricted", "job_recommendations_not_found", "recommended_talent_not_found", "job_alert_not_found", "job_alerts_disabled", "candidate_alert_limit_reached", "candidate_alert_not_found", "candidate_entry_not_found", "candidate_handle_taken", "candidate_job_not_found", "candidate_notification_preference_paused", "resume_invalid_file", "resume_upload_forbidden", "applications_external_apply_only", "applications_country_not_allowed", "applications_guest_not_allowed", "applications_job_not_found", "applications_not_found", "applications_resume_invalid_file", "applications_unprocessable", "messaging_application_not_found", "messaging_application_not_linked", "messaging_blocked", "messaging_cannot_block_self", "messaging_cold_rule", "messaging_conversation_not_found", "messaging_disabled", "messaging_edit_window_expired", "messaging_message_deleted", "messaging_message_not_found", "messaging_not_author", "messaging_not_participant", "messaging_not_permitted", "messaging_not_recipient", "messaging_rate_limited", "messaging_recipient_not_found", "messaging_recipient_not_open", "messaging_unsend_window_expired", "employer_applicant_not_found", "employer_ats_unprocessable", "employer_checkout_failed", "employer_company_exists", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "employer_not_member", "employer_payment_required", "employer_pipeline_stage_not_found", "employer_member_not_found", "employer_invite_not_found", "not_company_admin", "not_company_member", "company_deletion_disabled", "last_admin", "already_member", "already_invited", "invalid_email", "invite_email_mismatch", "candidate_role", "job_not_published", "paywall_already_active", "paywall_disabled", "paywall_invalid_checkout_session", "paywall_no_candidate_profile", "paywall_no_recurring_subscription", "paywall_offer_not_found", "talent_access_unavailable", "company_required", "already_on_plan", "talent_access_required", "messaging_talent_access_required", "stripe_not_connected", "job_posting_logo_lookup_unavailable", "job_posting_logo_not_found", "job_posting_rejected"];
24
24
  /**
25
25
  * The known code set plus open string — new codes ship additively within v1,
26
26
  * so exhaustive narrowing is intentionally impossible.
@@ -143,7 +143,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
143
143
  * constant because the package is platform-neutral and cannot read
144
144
  * package.json at runtime.
145
145
  */
146
- declare const SDK_VERSION = "4.9.0";
146
+ declare const SDK_VERSION = "4.10.0";
147
147
 
148
148
  type SavedJob = Schemas['SavedJob'];
149
149
  type SavedJobsListQuery = {
@@ -306,9 +306,32 @@ type AcceptCompanyMemberInviteBody = Schemas['AcceptCompanyMemberInviteBody'];
306
306
  /**
307
307
  * The viewer's per-employer talent entitlement from
308
308
  * `board.me.talentAccess.retrieve` — the talent-CTA signal (sourced from the
309
- * same subscription/credit-pack truth the talent paywall enforces).
309
+ * same subscription/credit-pack truth the talent paywall enforces), plus
310
+ * charging model and remaining unlock/message credits.
310
311
  */
311
312
  type TalentAccess = Schemas['TalentAccess'];
313
+ /** Per-candidate unlock/credit gate from `board.me.talentAccess.retrieveCandidate`. */
314
+ type TalentCandidateAccess = Schemas['TalentCandidateAccess'];
315
+ /** Body for `board.me.talentAccess.checkout`. */
316
+ type TalentAccessCheckoutBody = Schemas['TalentAccessCheckoutBody'];
317
+ /**
318
+ * Connected-account mount kit from `board.me.talentAccess.checkout` — same
319
+ * generated schema as candidate-access checkout (`origin: talent_access`).
320
+ */
321
+ type TalentAccessCheckoutSession = Schemas['AccessCheckoutSession'];
322
+ /** Polled state of a talent-access checkout session (`board.me.talentAccess.retrieveCheckout`). */
323
+ type TalentAccessCheckoutSessionState = Schemas['AccessCheckoutSessionState'];
324
+ /** Result of `board.me.talentAccess.unlock`. */
325
+ type TalentUnlock = Schemas['TalentUnlock'];
326
+ /** Body for `board.me.talentAccess.unlock`. */
327
+ type TalentUnlockBody = Schemas['TalentUnlockBody'];
328
+ /** Body for `board.me.talentAccess.upgrade`. */
329
+ type TalentAccessUpgradeBody = Schemas['TalentAccessUpgradeBody'];
330
+ /**
331
+ * Acknowledgement from `board.me.talentAccess.upgrade` — entitlement (new
332
+ * credit counters) lands via webhook; re-read `me.talentAccess.retrieve`.
333
+ */
334
+ type TalentAccessUpgrade = Schemas['TalentUpgrade'];
312
335
  /** Query for `board.me.companies.search`. */
313
336
  type EmployerCompanySearchQuery = {
314
337
  q: string;
@@ -389,6 +412,10 @@ type EmployerBillingOption = Schemas['EmployerBillingOption'];
389
412
  /** The result of `board.me.companies.jobs.checkout`. */
390
413
  type EmployerCheckout = Schemas['EmployerCheckout'];
391
414
  type EmployerCheckoutBody = Schemas['EmployerCheckoutBody'];
415
+ /** Optional body for `board.me.companies.billingPortal.create`. */
416
+ type CompanyBillingPortalBody = Schemas['CompanyBillingPortalBody'];
417
+ /** A minted company Stripe Customer Portal session (job posting + talent access). */
418
+ type CompanyBillingPortalSession = Schemas['CompanyBillingPortalSession'];
392
419
 
393
420
  /**
394
421
  * Pure derivations for a message thread — kept out of
@@ -2035,6 +2062,12 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2035
2062
  renewsAt: string | null;
2036
2063
  }>>;
2037
2064
  };
2065
+ billingPortal: {
2066
+ create(slug: string, body?: CompanyBillingPortalBody, options?: FetchOptions): Promise<{
2067
+ object: "portal_session";
2068
+ url: string;
2069
+ }>;
2070
+ };
2038
2071
  jobStats: {
2039
2072
  retrieve(slug: string, options?: FetchOptions): Promise<ListEnvelope<{
2040
2073
  object: "employer_job_stat";
@@ -2098,6 +2131,44 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2098
2131
  paywallActive: boolean;
2099
2132
  hasTalentAccess: boolean;
2100
2133
  hasUnlimitedUnlocks: boolean;
2134
+ accessModel: "none" | "paid_messaging" | "paid_unlocks_and_messaging";
2135
+ companyId: string | null;
2136
+ unlockCreditsRemaining: number;
2137
+ messageCreditsRemaining: number;
2138
+ hasUnlimitedMessages: boolean;
2139
+ }>;
2140
+ retrieveCandidate(candidateId: string, options?: FetchOptions): Promise<{
2141
+ object: "talent_candidate_access";
2142
+ candidateId: string;
2143
+ companyId: string | null;
2144
+ alreadyUnlocked: boolean;
2145
+ unlockCreditsRemaining: number;
2146
+ messageCreditsRemaining: number;
2147
+ hasUnlimitedUnlocks: boolean;
2148
+ hasUnlimitedMessages: boolean;
2149
+ hasActiveTalentSubscription: boolean;
2150
+ }>;
2151
+ checkout(body: TalentAccessCheckoutBody, options?: FetchOptions): Promise<{
2152
+ object: "checkout_session";
2153
+ sessionId: string;
2154
+ clientSecret: string;
2155
+ stripeAccountId: string;
2156
+ publishableKey: string;
2157
+ offerType: "recurring" | "lifetime";
2158
+ }>;
2159
+ retrieveCheckout(sessionId: string, options?: FetchOptions): Promise<{
2160
+ object: "checkout_session_state";
2161
+ status: "open" | "complete" | "expired";
2162
+ clientSecret: string | null;
2163
+ }>;
2164
+ unlock(body: TalentUnlockBody, options?: FetchOptions): Promise<{
2165
+ object: "talent_unlock";
2166
+ alreadyUnlocked: boolean;
2167
+ unlockCreditsRemaining: number | null;
2168
+ }>;
2169
+ upgrade(body: TalentAccessUpgradeBody, options?: FetchOptions): Promise<{
2170
+ object: "talent_upgrade";
2171
+ ok: true;
2101
2172
  }>;
2102
2173
  };
2103
2174
  alerts: {
@@ -3156,6 +3227,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3156
3227
  list(query?: TalentDirectoryQuery, options?: FetchOptions): Promise<TalentDirectoryListEnvelope>;
3157
3228
  retrieve(handle: string, options?: FetchOptions): Promise<{
3158
3229
  object: "talent_profile";
3230
+ id: string;
3159
3231
  handle: string | null;
3160
3232
  displayName: string | null;
3161
3233
  headline: string | null;
@@ -3209,4 +3281,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3209
3281
  };
3210
3282
  type BoardSdk = ReturnType<typeof createBoardClient>;
3211
3283
 
3212
- export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyIntent, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
3284
+ export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyIntent, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-B9Ah8dNs.js';
2
- import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CbDZwdyl.js';
3
- export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-CbDZwdyl.js';
4
- import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-De8nLbk7.js';
5
- export { a as CompanyCategorySalary, j as CompanyMarket, k as CompanyMarketRef, b as CompanySalary, l as CompanySalarySummary, C as CustomFieldDefinition, m as CustomFieldOption, n as CustomFieldType, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, P as PublicBoard, q as PublicBoardAds, r as PublicBoardAnalytics, s as PublicBoardFeatures, t as PublicBoardJobForm, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, B as SkillLocationsIndex, S as SkillSalaryDetail, D as TitleLocationSalary, E as TitleLocationsIndex, T as TitleSalaryDetail } from './board-De8nLbk7.js';
6
- export { B as BoardSeo } from './seo-BDFUuvXM.js';
7
- import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, a as JobsListQuery, b as JobCardListEnvelope, c as JobsSearchBody, d as JobCardSearchEnvelope, e as JobsSimilarQuery, f as SearchEnvelope } from './jobs-Iv6Wkvvf.js';
8
- export { g as CustomFieldValue, C as CustomFieldValues, h as EducationRequirement, i as JobCatalogPagination, j as JobCompany, J as JobSort, O as OfficeLocation, k as OffsetPagination, P as PublicJob, l as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-Iv6Wkvvf.js';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-bh07fZ8Q.js';
10
- export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-bh07fZ8Q.js';
1
+ import { S as Schemas, c as components } from './_spec-BwUP7Wni.js';
2
+ import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-Sl9-xi1z.js';
3
+ export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-Sl9-xi1z.js';
4
+ import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-zdQ875ck.js';
5
+ export { a as CompanyCategorySalary, j as CompanyMarket, k as CompanyMarketRef, b as CompanySalary, l as CompanySalarySummary, C as CustomFieldDefinition, m as CustomFieldOption, n as CustomFieldType, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, P as PublicBoard, q as PublicBoardAds, r as PublicBoardAnalytics, s as PublicBoardFeatures, t as PublicBoardJobForm, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, B as SkillLocationsIndex, S as SkillSalaryDetail, D as TitleLocationSalary, E as TitleLocationsIndex, T as TitleSalaryDetail } from './board-zdQ875ck.js';
6
+ export { B as BoardSeo } from './seo-D1Vc_0HF.js';
7
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, a as JobsListQuery, b as JobCardListEnvelope, c as JobsSearchBody, d as JobCardSearchEnvelope, e as JobsSimilarQuery, f as SearchEnvelope } from './jobs-B-uO7ffG.js';
8
+ export { g as CustomFieldValue, C as CustomFieldValues, h as EducationRequirement, i as JobCatalogPagination, j as JobCompany, J as JobSort, O as OfficeLocation, k as OffsetPagination, P as PublicJob, l as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-B-uO7ffG.js';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-DC4BfQqF.js';
10
+ export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-DC4BfQqF.js';
11
11
 
12
12
  /**
13
13
  * Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
@@ -20,7 +20,7 @@ export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts,
20
20
  * `unknown_error` is SDK-synthesized when a response carries no parseable
21
21
  * envelope.
22
22
  */
23
- declare const BOARD_API_ERROR_CODES: readonly ["internal_error", "validation_bad_request", "validation_payload_too_large", "rate_limited", "rate_limit_unavailable", "search_unavailable", "too_many_filter_values", "pagination_invalid_cursor", "pagination_offset_too_large", "auth_unauthenticated", "auth_forbidden", "plan_upgrade_required", "unknown_error", "boards_not_found", "board_page_not_found", "board_auth_email_taken", "board_auth_invalid_credentials", "board_auth_invalid_token", "board_auth_registration_disabled", "board_auth_token_expired", "invalid_current_password", "no_password", "same_email", "email_taken", "invalid_token", "board_password_required", "board_password_invalid", "jobs_not_found", "jobs_invalid_filter", "categories_not_found", "skills_not_found", "places_not_found", "companies_not_found", "company_markets_not_found", "company_salary_not_found", "company_category_salary_not_found", "salaries_title_not_found", "salaries_skill_not_found", "salaries_location_not_found", "salaries_title_location_not_found", "salaries_skill_location_not_found", "blog_post_not_found", "blog_author_not_found", "blog_tag_not_found", "talent_not_found", "talent_directory_not_found", "talent_directory_restricted", "job_recommendations_not_found", "recommended_talent_not_found", "job_alert_not_found", "job_alerts_disabled", "candidate_alert_limit_reached", "candidate_alert_not_found", "candidate_entry_not_found", "candidate_handle_taken", "candidate_job_not_found", "candidate_notification_preference_paused", "resume_invalid_file", "resume_upload_forbidden", "applications_external_apply_only", "applications_country_not_allowed", "applications_guest_not_allowed", "applications_job_not_found", "applications_not_found", "applications_resume_invalid_file", "applications_unprocessable", "messaging_application_not_found", "messaging_application_not_linked", "messaging_blocked", "messaging_cannot_block_self", "messaging_cold_rule", "messaging_conversation_not_found", "messaging_disabled", "messaging_edit_window_expired", "messaging_message_deleted", "messaging_message_not_found", "messaging_not_author", "messaging_not_participant", "messaging_not_permitted", "messaging_not_recipient", "messaging_rate_limited", "messaging_recipient_not_found", "messaging_recipient_not_open", "messaging_unsend_window_expired", "employer_applicant_not_found", "employer_ats_unprocessable", "employer_checkout_failed", "employer_company_exists", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "employer_not_member", "employer_payment_required", "employer_pipeline_stage_not_found", "employer_member_not_found", "employer_invite_not_found", "not_company_admin", "not_company_member", "company_deletion_disabled", "last_admin", "already_member", "already_invited", "invalid_email", "invite_email_mismatch", "candidate_role", "job_not_published", "paywall_already_active", "paywall_disabled", "paywall_invalid_checkout_session", "paywall_no_candidate_profile", "paywall_no_recurring_subscription", "paywall_offer_not_found", "job_posting_logo_lookup_unavailable", "job_posting_logo_not_found", "job_posting_rejected"];
23
+ declare const BOARD_API_ERROR_CODES: readonly ["internal_error", "validation_bad_request", "validation_payload_too_large", "rate_limited", "rate_limit_unavailable", "search_unavailable", "too_many_filter_values", "pagination_invalid_cursor", "pagination_offset_too_large", "auth_unauthenticated", "auth_forbidden", "plan_upgrade_required", "unknown_error", "boards_not_found", "board_page_not_found", "board_auth_email_taken", "board_auth_invalid_credentials", "board_auth_invalid_token", "board_auth_registration_disabled", "board_auth_token_expired", "invalid_current_password", "no_password", "same_email", "email_taken", "invalid_token", "board_password_required", "board_password_invalid", "jobs_not_found", "jobs_invalid_filter", "categories_not_found", "skills_not_found", "places_not_found", "companies_not_found", "company_markets_not_found", "company_salary_not_found", "company_category_salary_not_found", "salaries_title_not_found", "salaries_skill_not_found", "salaries_location_not_found", "salaries_title_location_not_found", "salaries_skill_location_not_found", "blog_post_not_found", "blog_author_not_found", "blog_tag_not_found", "talent_not_found", "talent_directory_not_found", "talent_directory_restricted", "job_recommendations_not_found", "recommended_talent_not_found", "job_alert_not_found", "job_alerts_disabled", "candidate_alert_limit_reached", "candidate_alert_not_found", "candidate_entry_not_found", "candidate_handle_taken", "candidate_job_not_found", "candidate_notification_preference_paused", "resume_invalid_file", "resume_upload_forbidden", "applications_external_apply_only", "applications_country_not_allowed", "applications_guest_not_allowed", "applications_job_not_found", "applications_not_found", "applications_resume_invalid_file", "applications_unprocessable", "messaging_application_not_found", "messaging_application_not_linked", "messaging_blocked", "messaging_cannot_block_self", "messaging_cold_rule", "messaging_conversation_not_found", "messaging_disabled", "messaging_edit_window_expired", "messaging_message_deleted", "messaging_message_not_found", "messaging_not_author", "messaging_not_participant", "messaging_not_permitted", "messaging_not_recipient", "messaging_rate_limited", "messaging_recipient_not_found", "messaging_recipient_not_open", "messaging_unsend_window_expired", "employer_applicant_not_found", "employer_ats_unprocessable", "employer_checkout_failed", "employer_company_exists", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "employer_not_member", "employer_payment_required", "employer_pipeline_stage_not_found", "employer_member_not_found", "employer_invite_not_found", "not_company_admin", "not_company_member", "company_deletion_disabled", "last_admin", "already_member", "already_invited", "invalid_email", "invite_email_mismatch", "candidate_role", "job_not_published", "paywall_already_active", "paywall_disabled", "paywall_invalid_checkout_session", "paywall_no_candidate_profile", "paywall_no_recurring_subscription", "paywall_offer_not_found", "talent_access_unavailable", "company_required", "already_on_plan", "talent_access_required", "messaging_talent_access_required", "stripe_not_connected", "job_posting_logo_lookup_unavailable", "job_posting_logo_not_found", "job_posting_rejected"];
24
24
  /**
25
25
  * The known code set plus open string — new codes ship additively within v1,
26
26
  * so exhaustive narrowing is intentionally impossible.
@@ -143,7 +143,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
143
143
  * constant because the package is platform-neutral and cannot read
144
144
  * package.json at runtime.
145
145
  */
146
- declare const SDK_VERSION = "4.9.0";
146
+ declare const SDK_VERSION = "4.10.0";
147
147
 
148
148
  type SavedJob = Schemas['SavedJob'];
149
149
  type SavedJobsListQuery = {
@@ -306,9 +306,32 @@ type AcceptCompanyMemberInviteBody = Schemas['AcceptCompanyMemberInviteBody'];
306
306
  /**
307
307
  * The viewer's per-employer talent entitlement from
308
308
  * `board.me.talentAccess.retrieve` — the talent-CTA signal (sourced from the
309
- * same subscription/credit-pack truth the talent paywall enforces).
309
+ * same subscription/credit-pack truth the talent paywall enforces), plus
310
+ * charging model and remaining unlock/message credits.
310
311
  */
311
312
  type TalentAccess = Schemas['TalentAccess'];
313
+ /** Per-candidate unlock/credit gate from `board.me.talentAccess.retrieveCandidate`. */
314
+ type TalentCandidateAccess = Schemas['TalentCandidateAccess'];
315
+ /** Body for `board.me.talentAccess.checkout`. */
316
+ type TalentAccessCheckoutBody = Schemas['TalentAccessCheckoutBody'];
317
+ /**
318
+ * Connected-account mount kit from `board.me.talentAccess.checkout` — same
319
+ * generated schema as candidate-access checkout (`origin: talent_access`).
320
+ */
321
+ type TalentAccessCheckoutSession = Schemas['AccessCheckoutSession'];
322
+ /** Polled state of a talent-access checkout session (`board.me.talentAccess.retrieveCheckout`). */
323
+ type TalentAccessCheckoutSessionState = Schemas['AccessCheckoutSessionState'];
324
+ /** Result of `board.me.talentAccess.unlock`. */
325
+ type TalentUnlock = Schemas['TalentUnlock'];
326
+ /** Body for `board.me.talentAccess.unlock`. */
327
+ type TalentUnlockBody = Schemas['TalentUnlockBody'];
328
+ /** Body for `board.me.talentAccess.upgrade`. */
329
+ type TalentAccessUpgradeBody = Schemas['TalentAccessUpgradeBody'];
330
+ /**
331
+ * Acknowledgement from `board.me.talentAccess.upgrade` — entitlement (new
332
+ * credit counters) lands via webhook; re-read `me.talentAccess.retrieve`.
333
+ */
334
+ type TalentAccessUpgrade = Schemas['TalentUpgrade'];
312
335
  /** Query for `board.me.companies.search`. */
313
336
  type EmployerCompanySearchQuery = {
314
337
  q: string;
@@ -389,6 +412,10 @@ type EmployerBillingOption = Schemas['EmployerBillingOption'];
389
412
  /** The result of `board.me.companies.jobs.checkout`. */
390
413
  type EmployerCheckout = Schemas['EmployerCheckout'];
391
414
  type EmployerCheckoutBody = Schemas['EmployerCheckoutBody'];
415
+ /** Optional body for `board.me.companies.billingPortal.create`. */
416
+ type CompanyBillingPortalBody = Schemas['CompanyBillingPortalBody'];
417
+ /** A minted company Stripe Customer Portal session (job posting + talent access). */
418
+ type CompanyBillingPortalSession = Schemas['CompanyBillingPortalSession'];
392
419
 
393
420
  /**
394
421
  * Pure derivations for a message thread — kept out of
@@ -2035,6 +2062,12 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2035
2062
  renewsAt: string | null;
2036
2063
  }>>;
2037
2064
  };
2065
+ billingPortal: {
2066
+ create(slug: string, body?: CompanyBillingPortalBody, options?: FetchOptions): Promise<{
2067
+ object: "portal_session";
2068
+ url: string;
2069
+ }>;
2070
+ };
2038
2071
  jobStats: {
2039
2072
  retrieve(slug: string, options?: FetchOptions): Promise<ListEnvelope<{
2040
2073
  object: "employer_job_stat";
@@ -2098,6 +2131,44 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2098
2131
  paywallActive: boolean;
2099
2132
  hasTalentAccess: boolean;
2100
2133
  hasUnlimitedUnlocks: boolean;
2134
+ accessModel: "none" | "paid_messaging" | "paid_unlocks_and_messaging";
2135
+ companyId: string | null;
2136
+ unlockCreditsRemaining: number;
2137
+ messageCreditsRemaining: number;
2138
+ hasUnlimitedMessages: boolean;
2139
+ }>;
2140
+ retrieveCandidate(candidateId: string, options?: FetchOptions): Promise<{
2141
+ object: "talent_candidate_access";
2142
+ candidateId: string;
2143
+ companyId: string | null;
2144
+ alreadyUnlocked: boolean;
2145
+ unlockCreditsRemaining: number;
2146
+ messageCreditsRemaining: number;
2147
+ hasUnlimitedUnlocks: boolean;
2148
+ hasUnlimitedMessages: boolean;
2149
+ hasActiveTalentSubscription: boolean;
2150
+ }>;
2151
+ checkout(body: TalentAccessCheckoutBody, options?: FetchOptions): Promise<{
2152
+ object: "checkout_session";
2153
+ sessionId: string;
2154
+ clientSecret: string;
2155
+ stripeAccountId: string;
2156
+ publishableKey: string;
2157
+ offerType: "recurring" | "lifetime";
2158
+ }>;
2159
+ retrieveCheckout(sessionId: string, options?: FetchOptions): Promise<{
2160
+ object: "checkout_session_state";
2161
+ status: "open" | "complete" | "expired";
2162
+ clientSecret: string | null;
2163
+ }>;
2164
+ unlock(body: TalentUnlockBody, options?: FetchOptions): Promise<{
2165
+ object: "talent_unlock";
2166
+ alreadyUnlocked: boolean;
2167
+ unlockCreditsRemaining: number | null;
2168
+ }>;
2169
+ upgrade(body: TalentAccessUpgradeBody, options?: FetchOptions): Promise<{
2170
+ object: "talent_upgrade";
2171
+ ok: true;
2101
2172
  }>;
2102
2173
  };
2103
2174
  alerts: {
@@ -3156,6 +3227,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3156
3227
  list(query?: TalentDirectoryQuery, options?: FetchOptions): Promise<TalentDirectoryListEnvelope>;
3157
3228
  retrieve(handle: string, options?: FetchOptions): Promise<{
3158
3229
  object: "talent_profile";
3230
+ id: string;
3159
3231
  handle: string | null;
3160
3232
  displayName: string | null;
3161
3233
  headline: string | null;
@@ -3209,4 +3281,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3209
3281
  };
3210
3282
  type BoardSdk = ReturnType<typeof createBoardClient>;
3211
3283
 
3212
- export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyIntent, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
3284
+ export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyIntent, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
package/dist/index.js CHANGED
@@ -179,6 +179,13 @@ var BOARD_API_ERROR_CODES = [
179
179
  "paywall_no_candidate_profile",
180
180
  "paywall_no_recurring_subscription",
181
181
  "paywall_offer_not_found",
182
+ // Employer talent-access paywall
183
+ "talent_access_unavailable",
184
+ "company_required",
185
+ "already_on_plan",
186
+ "talent_access_required",
187
+ "messaging_talent_access_required",
188
+ "stripe_not_connected",
182
189
  // Public job posting
183
190
  "job_posting_logo_lookup_unavailable",
184
191
  "job_posting_logo_not_found",
@@ -335,7 +342,7 @@ async function clearSession(storage) {
335
342
  }
336
343
 
337
344
  // src/version.ts
338
- var SDK_VERSION = "4.9.0";
345
+ var SDK_VERSION = "4.10.0";
339
346
 
340
347
  // src/client.ts
341
348
  function isRawBody(body) {
@@ -1843,6 +1850,29 @@ function meNamespace(client) {
1843
1850
  );
1844
1851
  }
1845
1852
  },
1853
+ /**
1854
+ * Stripe Customer Portal for a company I am an approved member of.
1855
+ * Surfaces every subscription on the company's Stripe customer (job
1856
+ * posting + talent access). Not a talent-access portal — candidate
1857
+ * `me.access.portal` is a different buyer.
1858
+ */
1859
+ billingPortal: {
1860
+ /**
1861
+ * Mint a Stripe Customer Portal session. Optional `returnPath` is
1862
+ * resolved against the board origin.
1863
+ *
1864
+ * @example
1865
+ * const { url } = await board.me.companies.billingPortal.create('acme', {
1866
+ * returnPath: '/employers/billing',
1867
+ * });
1868
+ */
1869
+ create(slug, body, options) {
1870
+ return client.fetch(
1871
+ `/me/companies/${encodeURIComponent(slug)}/billing-portal`,
1872
+ { ...options, method: "POST", body }
1873
+ );
1874
+ }
1875
+ },
1846
1876
  /**
1847
1877
  * The read-only reporting funnel that backs the hosted employer jobs
1848
1878
  * table: per-job views / apply clicks / native applications,
@@ -2107,9 +2137,11 @@ function meNamespace(client) {
2107
2137
  }
2108
2138
  },
2109
2139
  /**
2110
- * The viewer's talent entitlement on this board — "does this
2111
- * employer have talent access?" for gating a Message-vs-upsell CTA.
2112
- * Candidates and unaffiliated viewers get `hasTalentAccess: false`.
2140
+ * The employer talent-access paywall — "does this employer have
2141
+ * talent access?" plus remaining company-scoped unlock/message credits
2142
+ * and the charging model. Candidates and unaffiliated viewers get
2143
+ * `hasTalentAccess: false`. Message credits spend inline on
2144
+ * `conversations.start` (no separate spend endpoint).
2113
2145
  *
2114
2146
  * @example
2115
2147
  * const { hasTalentAccess } = await board.me.talentAccess.retrieve();
@@ -2117,12 +2149,94 @@ function meNamespace(client) {
2117
2149
  talentAccess: {
2118
2150
  /**
2119
2151
  * Retrieve the viewer's talent entitlement. Never cache — per-user.
2152
+ * Credits are company-scoped; `companyId` is set when the viewer has
2153
+ * exactly one approved membership, otherwise `null` (pass `companyId`
2154
+ * on writes — `company_required` with more than one).
2120
2155
  *
2121
2156
  * @example
2122
2157
  * const access = await board.me.talentAccess.retrieve();
2123
2158
  */
2124
2159
  retrieve(options) {
2125
2160
  return client.fetch("/me/talent-access", options);
2161
+ },
2162
+ /**
2163
+ * Per-candidate unlock and credit state for the opaque `/p/{id}`
2164
+ * profile route. Named `/p/{handle}` is the share bypass.
2165
+ *
2166
+ * @example
2167
+ * const gate = await board.me.talentAccess.retrieveCandidate(candidateId);
2168
+ */
2169
+ retrieveCandidate(candidateId, options) {
2170
+ return client.fetch(
2171
+ `/me/talent-access/candidates/${encodeURIComponent(candidateId)}`,
2172
+ options
2173
+ );
2174
+ },
2175
+ /**
2176
+ * Start embedded checkout for a public `talent_access` plan and return
2177
+ * a connected-account mount kit. Same shape as candidate-access
2178
+ * checkout; session metadata is `origin: talent_access`. `companyId`
2179
+ * is required when the viewer has more than one approved membership
2180
+ * (`company_required`).
2181
+ *
2182
+ * @example
2183
+ * const kit = await board.me.talentAccess.checkout({
2184
+ * planId,
2185
+ * returnPath: '/employers',
2186
+ * colorMode: 'light',
2187
+ * });
2188
+ */
2189
+ checkout(body, options) {
2190
+ return client.fetch(
2191
+ "/me/talent-access/checkout",
2192
+ { ...options, method: "POST", body }
2193
+ );
2194
+ },
2195
+ /**
2196
+ * Poll a talent-access checkout session: `open` (re-mountable via
2197
+ * `clientSecret`), `complete`, or `expired`. The session must be
2198
+ * `origin: talent_access` for this board user.
2199
+ *
2200
+ * @example
2201
+ * const s = await board.me.talentAccess.retrieveCheckout(kit.sessionId);
2202
+ */
2203
+ retrieveCheckout(sessionId, options) {
2204
+ return client.fetch(
2205
+ `/me/talent-access/checkout/${encodeURIComponent(sessionId)}`,
2206
+ options
2207
+ );
2208
+ },
2209
+ /**
2210
+ * Spend one profile-unlock credit. Idempotent: already-unlocked
2211
+ * returns `{ alreadyUnlocked: true }` with no decrement. Credits are
2212
+ * company-scoped; `companyId` is required with multiple approved
2213
+ * memberships (`company_required`).
2214
+ *
2215
+ * @example
2216
+ * const unlock = await board.me.talentAccess.unlock({ candidateId });
2217
+ */
2218
+ unlock(body, options) {
2219
+ return client.fetch("/me/talent-access/unlocks", {
2220
+ ...options,
2221
+ method: "POST",
2222
+ body
2223
+ });
2224
+ },
2225
+ /**
2226
+ * Swap the company's primary talent_access subscription to `planId`
2227
+ * in place (prorated). Never a second checkout — Checkout would mint
2228
+ * a parallel subscription. Requires an existing talent_access sub.
2229
+ * `companyId` is required with multiple approved memberships.
2230
+ *
2231
+ * @example
2232
+ * await board.me.talentAccess.upgrade({ planId });
2233
+ */
2234
+ upgrade(body, options) {
2235
+ return client.fetch("/me/talent-access/upgrade", {
2236
+ ...options,
2237
+ method: "POST",
2238
+ body
2239
+ });
2126
2240
  }
2127
2241
  },
2128
2242
  /**