@cavuno/board 4.27.0 → 4.29.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 (66) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/{_spec-B_pBNVUd.d.mts → _spec-CQx5p1cM.d.mts} +117 -20
  3. package/dist/{_spec-B_pBNVUd.d.ts → _spec-CQx5p1cM.d.ts} +117 -20
  4. package/dist/{blog-DzGRUsj5.d.ts → blog-BwyZQX_f.d.ts} +1 -1
  5. package/dist/{blog-fhXRik6k.d.mts → blog-DP06wTDw.d.mts} +1 -1
  6. package/dist/{board-fVAXZ8T5.d.ts → board-C2Y5fz0m.d.ts} +2 -2
  7. package/dist/{board-DEiEHcpe.d.mts → board-C7iju96a.d.mts} +2 -2
  8. package/dist/{breadcrumbs-DNaaP3xa.d.ts → breadcrumbs-BUzF85v3.d.ts} +2 -2
  9. package/dist/{breadcrumbs-qE3CD--N.d.mts → breadcrumbs-Db6UTihw.d.mts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-DUTQOLOF.mjs → chunk-EHSB2VAJ.mjs} +4 -0
  12. package/dist/{chunk-T2KC6XGV.mjs → chunk-IVSECNCD.mjs} +54 -7
  13. package/dist/{chunk-OPMJ6YH5.mjs → chunk-KDFKVWTZ.mjs} +1 -1
  14. package/dist/{chunk-BGKNXG4H.mjs → chunk-XXQCESMU.mjs} +4 -0
  15. package/dist/filters.d.mts +2 -2
  16. package/dist/filters.d.ts +2 -2
  17. package/dist/format.d.mts +4 -4
  18. package/dist/format.d.ts +4 -4
  19. package/dist/format.mjs +2 -2
  20. package/dist/go.mjs +1 -1
  21. package/dist/index.d.mts +99 -15
  22. package/dist/index.d.ts +99 -15
  23. package/dist/index.js +44 -4
  24. package/dist/index.mjs +41 -5
  25. package/dist/{jobs-BRysn2m0.d.ts → jobs-BA_PnUCd.d.ts} +9 -7
  26. package/dist/{jobs-R-h3A3kl.d.mts → jobs-BZqtb1gY.d.mts} +9 -7
  27. package/dist/paths.d.mts +8 -1
  28. package/dist/paths.d.ts +8 -1
  29. package/dist/paths.js +5 -1
  30. package/dist/paths.mjs +5 -3
  31. package/dist/{roles-DBgzkvEt.d.ts → roles-Bh3WNF9u.d.mts} +3 -1
  32. package/dist/{roles-DBgzkvEt.d.mts → roles-Bh3WNF9u.d.ts} +3 -1
  33. package/dist/route-contract.d.mts +10 -5
  34. package/dist/route-contract.d.ts +10 -5
  35. package/dist/route-contract.js +53 -5
  36. package/dist/route-contract.mjs +2 -2
  37. package/dist/{search-BlB690ma.d.mts → search-Da3TjcZ0.d.mts} +1 -1
  38. package/dist/{search-BK_zHHNQ.d.ts → search-dsA-Cetf.d.ts} +1 -1
  39. package/dist/{seo-C7gMl6Y7.d.ts → seo-D-n2g6X3.d.ts} +1 -1
  40. package/dist/{seo-0mbZ7M_E.d.mts → seo-D3DhnHk8.d.mts} +1 -1
  41. package/dist/seo-files.d.mts +2 -2
  42. package/dist/seo-files.d.ts +2 -2
  43. package/dist/seo.d.mts +6 -6
  44. package/dist/seo.d.ts +6 -6
  45. package/dist/seo.mjs +2 -2
  46. package/dist/server.d.mts +6 -6
  47. package/dist/server.d.ts +6 -6
  48. package/dist/server.mjs +1 -1
  49. package/dist/sitemap.d.mts +6 -6
  50. package/dist/sitemap.d.ts +6 -6
  51. package/dist/sitemap.mjs +2 -2
  52. package/dist/suggest.d.mts +2 -2
  53. package/dist/suggest.d.ts +2 -2
  54. package/dist/well-known.d.mts +4 -1
  55. package/dist/well-known.d.ts +4 -1
  56. package/dist/well-known.js +30 -1
  57. package/dist/well-known.mjs +5 -3
  58. package/package.json +1 -1
  59. package/skills/cavuno-board-account/SKILL.md +27 -0
  60. package/skills/cavuno-board-errors/SKILL.md +1 -1
  61. package/skills/cavuno-board-filters/SKILL.md +90 -1
  62. package/skills/cavuno-board-format/SKILL.md +52 -0
  63. package/skills/cavuno-board-post-a-job/SKILL.md +24 -0
  64. package/skills/cavuno-board-salaries/SKILL.md +7 -0
  65. package/skills/cavuno-board-talent-access/SKILL.md +7 -0
  66. package/skills/manifest.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-B_pBNVUd.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-BK_zHHNQ.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-BK_zHHNQ.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-fVAXZ8T5.js';
5
- export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, a as CompanyCategorySalary, o as CompanyMarket, p as CompanyMarketRef, b as CompanySalary, q as CompanySalarySummary, C as CustomFieldDefinition, r as CustomFieldOption, s as CustomFieldType, L as LocationSalaryDetail, t as LocationSkillsIndex, u as LocationTitlesIndex, P as PublicBoard, v as PublicBoardAds, w as PublicBoardAnalytics, x as PublicBoardFeatures, y as PublicBoardJobForm, z as PublicCompany, A as PublicCompanyDetail, D as PublicCompanyMembership, E as SalaryCompany, F as SalaryLocation, G as SalarySkill, H as SalaryTitle, I as SkillLocationSalary, J as SkillLocationsIndex, S as SkillSalaryDetail, K as TitleLocationSalary, M as TitleLocationsIndex, T as TitleSalaryDetail } from './board-fVAXZ8T5.js';
6
- export { B as BoardSeo } from './seo-C7gMl6Y7.js';
7
- import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-BRysn2m0.js';
8
- export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-BRysn2m0.js';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-DzGRUsj5.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-DzGRUsj5.js';
1
+ import { S as Schemas, c as components } from './_spec-CQx5p1cM.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-dsA-Cetf.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-dsA-Cetf.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-C2Y5fz0m.js';
5
+ export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, a as CompanyCategorySalary, o as CompanyMarket, p as CompanyMarketRef, b as CompanySalary, q as CompanySalarySummary, C as CustomFieldDefinition, r as CustomFieldOption, s as CustomFieldType, L as LocationSalaryDetail, t as LocationSkillsIndex, u as LocationTitlesIndex, P as PublicBoard, v as PublicBoardAds, w as PublicBoardAnalytics, x as PublicBoardFeatures, y as PublicBoardJobForm, z as PublicCompany, A as PublicCompanyDetail, D as PublicCompanyMembership, E as SalaryCompany, F as SalaryLocation, G as SalarySkill, H as SalaryTitle, I as SkillLocationSalary, J as SkillLocationsIndex, S as SkillSalaryDetail, K as TitleLocationSalary, M as TitleLocationsIndex, T as TitleSalaryDetail } from './board-C2Y5fz0m.js';
6
+ export { B as BoardSeo } from './seo-D-n2g6X3.js';
7
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-BA_PnUCd.js';
8
+ export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-BA_PnUCd.js';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-BwyZQX_f.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-BwyZQX_f.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", "search_filter_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_account_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_free_email_website", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "membership_required", "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", "talent_list_not_found", "sourced_candidate_not_found", "sourced_convert_unavailable", "candidate_paywall_access_required", "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", "membership_plan_not_found", "membership_seat_taken", "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", "search_filter_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_account_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", "locations_invalid_id", "locations_unavailable", "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", "candidate_profile_required", "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_free_email_website", "employer_company_name_taken", "employer_company_not_found", "employer_job_not_found", "employer_job_slug_taken", "employer_jobs_quota_exceeded", "membership_required", "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", "talent_list_not_found", "sourced_candidate_not_found", "sourced_convert_unavailable", "candidate_paywall_access_required", "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", "membership_plan_not_found", "membership_seat_taken", "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.
@@ -150,7 +150,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
150
150
  * constant because the package is platform-neutral and cannot read
151
151
  * package.json at runtime.
152
152
  */
153
- declare const SDK_VERSION = "4.27.0";
153
+ declare const SDK_VERSION = "4.29.0";
154
154
 
155
155
  type SavedJob = Schemas['SavedJob'];
156
156
  type SavedJobsListQuery = {
@@ -279,6 +279,7 @@ type ConversationsListQuery = {
279
279
  type Alert = Schemas['Alert'];
280
280
  /** Create/replace body for `board.me.alerts.create` / `board.me.alerts.update`. */
281
281
  type AlertBody = Schemas['AlertBody'];
282
+ type CreateAlertBody = Schemas['CreateAlertBody'];
282
283
  /** The candidate's own view of an application they submitted. */
283
284
  type Application = Schemas['Application'];
284
285
  /** Body for `board.jobs.apply` (name/email omitted when signed in). */
@@ -617,6 +618,8 @@ type RequestMagicLinkBody = Schemas['BoardAuthRequestMagicLinkBody'];
617
618
  type ConsumeMagicLinkBody = Schemas['BoardAuthConsumeMagicLinkBody'];
618
619
  type OAuthProvider = 'google' | 'linkedin';
619
620
  type OAuthAuthorizationQuery = {
621
+ /** JSON-encoded audience evidence captured after analytics consent. */
622
+ audienceAttribution?: string;
620
623
  returnTo?: string;
621
624
  /**
622
625
  * Role profile to create when the handshake signs up a NEW user; defaults
@@ -763,6 +766,9 @@ type AccessCheckoutBody = Schemas['AccessCheckoutBody'];
763
766
  type AccessPortalBody = Schemas['AccessPortalBody'];
764
767
  type PaywallOfferListEnvelope = ListEnvelope<PaywallOffer>;
765
768
 
769
+ /** First-touch signup evidence, supplied only when analytics capture is allowed. */
770
+ type AudienceAttribution = Schemas['AudienceAttribution'];
771
+
766
772
  type JobAlertFrequency = 'weekly';
767
773
  type JobAlertRemoteOption = 'on_site' | 'hybrid' | 'remote';
768
774
  /**
@@ -781,6 +787,7 @@ type JobAlertFiltersInput = {
781
787
  };
782
788
  /** Body for `jobAlerts.subscribe`. `consent` must be `true` (server-enforced). */
783
789
  type JobAlertSubscribeInput = {
790
+ audienceAttribution?: AudienceAttribution;
784
791
  email: string;
785
792
  consent: true;
786
793
  frequency?: JobAlertFrequency;
@@ -874,6 +881,39 @@ type PlacesListQuery = {
874
881
  limit?: number;
875
882
  };
876
883
 
884
+ /**
885
+ * One global location search result. `id` is accepted back as `locationId`
886
+ * on job office locations, and shares its id space with `PublicPlace.id`.
887
+ */
888
+ type PublicLocation = Schemas['PublicLocation'];
889
+ /** Input for `board.locations.resolve()`. */
890
+ type LocationResolveInput = {
891
+ /** Opaque id returned by board.locations.search(). */
892
+ locationId: string;
893
+ /** The same session used for the search interaction. */
894
+ session: string;
895
+ };
896
+ type LocationSearchQuery = {
897
+ /** What the user has typed; under 2 characters the server returns an empty list. */
898
+ q: string;
899
+ /** Maximum results (1–10; default 5). */
900
+ limit?: number;
901
+ /**
902
+ * Comma-separated ISO 3166-1 alpha-2 codes (e.g. `'DE,AT'`) that restrict
903
+ * results to those countries (up to 250). Pass the board's
904
+ * `jobForm.location.allowedCountries` to narrow suggestions to the
905
+ * countries the board allows.
906
+ */
907
+ country?: string;
908
+ /**
909
+ * Required opaque id (for example `crypto.randomUUID()`). Generate one per
910
+ * location-field interaction and reuse it across keystrokes and the resolve
911
+ * call. Renew it before 50 provider requests or after 180 seconds, and use a
912
+ * fresh session for the next interaction.
913
+ */
914
+ session: string;
915
+ };
916
+
877
917
  /** One bucket in the board's sitemap: its name, size, and freshness stamp. */
878
918
  type BoardSitemapBucketSummary = Schemas['BoardSitemapBucketSummary'];
879
919
  /**
@@ -1160,6 +1200,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1160
1200
  slug: string;
1161
1201
  name: string;
1162
1202
  logoUrl: string | null;
1203
+ customFieldValues: {
1204
+ [key: string]: string | string[] | boolean | number;
1205
+ };
1163
1206
  } | null;
1164
1207
  categories: {
1165
1208
  slug: string;
@@ -1169,6 +1212,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1169
1212
  slug: string;
1170
1213
  name: string;
1171
1214
  }[];
1215
+ customFieldValues: {
1216
+ [key: string]: string | string[] | boolean | number;
1217
+ };
1172
1218
  links: {
1173
1219
  public: string | null;
1174
1220
  };
@@ -1276,6 +1322,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1276
1322
  slug: string;
1277
1323
  name: string;
1278
1324
  logoUrl: string | null;
1325
+ customFieldValues: {
1326
+ [key: string]: string | string[] | boolean | number;
1327
+ };
1279
1328
  } | null;
1280
1329
  categories: {
1281
1330
  slug: string;
@@ -1285,6 +1334,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1285
1334
  slug: string;
1286
1335
  name: string;
1287
1336
  }[];
1337
+ customFieldValues: {
1338
+ [key: string]: string | string[] | boolean | number;
1339
+ };
1288
1340
  links: {
1289
1341
  public: string | null;
1290
1342
  };
@@ -2408,7 +2460,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2408
2460
  }>;
2409
2461
  checkout(slug: string, id: string, body: EmployerCheckoutBody, options?: FetchOptions): Promise<{
2410
2462
  object: "employer_checkout";
2411
- status: "checkout" | "published" | "invoice_sent";
2463
+ status: "checkout" | "published" | "pending_approval" | "invoice_sent";
2412
2464
  checkoutUrl: string | null;
2413
2465
  jobId: string;
2414
2466
  jobSlug: string | null;
@@ -2586,7 +2638,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2586
2638
  };
2587
2639
  lastSentAt: string | null;
2588
2640
  }>>;
2589
- create(body: AlertBody, options?: FetchOptions): Promise<{
2641
+ create(body: CreateAlertBody, options?: FetchOptions): Promise<{
2590
2642
  id: string;
2591
2643
  object: "alert";
2592
2644
  label: string | null;
@@ -3045,6 +3097,26 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3045
3097
  items: components["schemas"]["SuggestionItem"][];
3046
3098
  }>;
3047
3099
  };
3100
+ locations: {
3101
+ search(query: LocationSearchQuery, options?: FetchOptions): Promise<ListEnvelope<{
3102
+ object: "location";
3103
+ id: string;
3104
+ name: string;
3105
+ fullName: string;
3106
+ contextLabel: string | null;
3107
+ placeType: "country" | "region" | "city" | "locality";
3108
+ countryCode: string | null;
3109
+ }>>;
3110
+ resolve(input: LocationResolveInput, options?: FetchOptions): Promise<{
3111
+ object: "location";
3112
+ id: string;
3113
+ name: string;
3114
+ fullName: string;
3115
+ contextLabel: string | null;
3116
+ placeType: "country" | "region" | "city" | "locality";
3117
+ countryCode: string | null;
3118
+ }>;
3119
+ };
3048
3120
  redirects: {
3049
3121
  resolve(path: string, options?: FetchOptions): Promise<{
3050
3122
  object: "redirect_resolution";
@@ -3256,6 +3328,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3256
3328
  avgSalaryMax: number;
3257
3329
  jobCount: number;
3258
3330
  placeName: string;
3331
+ placeLabel: string;
3259
3332
  placeSlug: string;
3260
3333
  countryCode: string;
3261
3334
  }[];
@@ -3316,6 +3389,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3316
3389
  childLocations: {
3317
3390
  placeSlug: string;
3318
3391
  placeName: string;
3392
+ placeLabel: string;
3319
3393
  avgSalaryMin: number;
3320
3394
  avgSalaryMax: number;
3321
3395
  jobCount: number;
@@ -3326,6 +3400,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3326
3400
  cities: {
3327
3401
  placeSlug: string;
3328
3402
  placeName: string;
3403
+ placeLabel: string;
3329
3404
  avgSalaryMin: number;
3330
3405
  avgSalaryMax: number;
3331
3406
  jobCount: number;
@@ -3334,6 +3409,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3334
3409
  otherLocations: {
3335
3410
  placeSlug: string;
3336
3411
  placeName: string;
3412
+ placeLabel: string;
3337
3413
  avgSalaryMin: number;
3338
3414
  avgSalaryMax: number;
3339
3415
  jobCount: number;
@@ -3405,6 +3481,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3405
3481
  avgSalaryMax: number;
3406
3482
  jobCount: number;
3407
3483
  placeName: string;
3484
+ placeLabel: string;
3408
3485
  placeSlug: string;
3409
3486
  countryCode: string;
3410
3487
  }[];
@@ -3463,6 +3540,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3463
3540
  childLocations: {
3464
3541
  placeSlug: string;
3465
3542
  placeName: string;
3543
+ placeLabel: string;
3466
3544
  avgSalaryMin: number;
3467
3545
  avgSalaryMax: number;
3468
3546
  jobCount: number;
@@ -3473,6 +3551,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3473
3551
  cities: {
3474
3552
  placeSlug: string;
3475
3553
  placeName: string;
3554
+ placeLabel: string;
3476
3555
  avgSalaryMin: number;
3477
3556
  avgSalaryMax: number;
3478
3557
  jobCount: number;
@@ -3481,6 +3560,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3481
3560
  otherLocations: {
3482
3561
  placeSlug: string;
3483
3562
  placeName: string;
3563
+ placeLabel: string;
3484
3564
  avgSalaryMin: number;
3485
3565
  avgSalaryMax: number;
3486
3566
  jobCount: number;
@@ -3509,6 +3589,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3509
3589
  object: "salary_location";
3510
3590
  placeSlug: string;
3511
3591
  placeName: string;
3592
+ placeLabel: string;
3512
3593
  parentSlug: string | null;
3513
3594
  avgSalaryMin: number;
3514
3595
  avgSalaryMax: number;
@@ -3533,6 +3614,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3533
3614
  } | null;
3534
3615
  childLocations: {
3535
3616
  placeName: string;
3617
+ placeLabel: string;
3536
3618
  placeSlug: string;
3537
3619
  countryCode: string;
3538
3620
  avgSalaryMin: number;
@@ -3549,6 +3631,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3549
3631
  regionSlug: string;
3550
3632
  cities: {
3551
3633
  placeName: string;
3634
+ placeLabel: string;
3552
3635
  placeSlug: string;
3553
3636
  countryCode: string;
3554
3637
  avgSalaryMin: number;
@@ -3577,6 +3660,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3577
3660
  }[];
3578
3661
  siblingLocations: {
3579
3662
  placeName: string;
3663
+ placeLabel: string;
3580
3664
  placeSlug: string;
3581
3665
  countryCode: string;
3582
3666
  avgSalaryMin: number;
@@ -3703,4 +3787,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3703
3787
  };
3704
3788
  type BoardSdk = ReturnType<typeof createBoardClient>;
3705
3789
 
3706
- export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, 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 BoardSitemapBucketSummary, type BoardSitemapIndex, 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 ConvertSourcedCandidateBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, 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, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, 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 SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, 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 UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction, resolveApplyDecision };
3790
+ export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, type ApplyIntent, type AudienceAttribution, 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 BoardSitemapBucketSummary, type BoardSitemapIndex, 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 ConvertSourcedCandidateBody, type CreateAlertBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, 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, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, type LocationResolveInput, type LocationSearchQuery, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicLocation, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, 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 SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, 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 UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction, resolveApplyDecision };
package/dist/index.js CHANGED
@@ -89,6 +89,9 @@ var BOARD_API_ERROR_CODES = [
89
89
  "categories_not_found",
90
90
  "skills_not_found",
91
91
  "places_not_found",
92
+ // Location search + `locationId` on job office locations
93
+ "locations_invalid_id",
94
+ "locations_unavailable",
92
95
  // Companies (public reads)
93
96
  "companies_not_found",
94
97
  "company_markets_not_found",
@@ -120,6 +123,7 @@ var BOARD_API_ERROR_CODES = [
120
123
  "candidate_handle_taken",
121
124
  "candidate_job_not_found",
122
125
  "candidate_notification_preference_paused",
126
+ "candidate_profile_required",
123
127
  "resume_invalid_file",
124
128
  "resume_upload_forbidden",
125
129
  // Applications
@@ -359,7 +363,7 @@ async function clearSession(storage) {
359
363
  }
360
364
 
361
365
  // src/version.ts
362
- var SDK_VERSION = "4.27.0";
366
+ var SDK_VERSION = "4.29.0";
363
367
 
364
368
  // src/client.ts
365
369
  function isRawBody(body) {
@@ -1234,6 +1238,37 @@ function jobsNamespace(client) {
1234
1238
  };
1235
1239
  }
1236
1240
 
1241
+ // src/namespaces/locations.ts
1242
+ function locationsNamespace(client) {
1243
+ return {
1244
+ /**
1245
+ * GET /locations/search — worldwide autocomplete over countries,
1246
+ * regions, cities, and localities, not only places the board's jobs already
1247
+ * use (that is `taxonomy.places.list({ q })`). Order is the contract: do
1248
+ * not re-sort. Complete a pick with `locations.resolve` using the same
1249
+ * session before sending its `id` as `locationId` later.
1250
+ *
1251
+ * @example
1252
+ * const session = crypto.randomUUID();
1253
+ * const { data } = await board.locations.search({ q: 'berl', session });
1254
+ */
1255
+ search(query, options) {
1256
+ return client.fetch("/locations/search", {
1257
+ ...options,
1258
+ query
1259
+ });
1260
+ },
1261
+ /** Complete a picked suggestion with the same search session. */
1262
+ resolve(input, options) {
1263
+ return client.fetch("/locations/resolve", {
1264
+ ...options,
1265
+ method: "POST",
1266
+ body: input
1267
+ });
1268
+ }
1269
+ };
1270
+ }
1271
+
1237
1272
  // src/namespaces/me.ts
1238
1273
  function meNamespace(client) {
1239
1274
  return {
@@ -1995,15 +2030,19 @@ function meNamespace(client) {
1995
2030
  /**
1996
2031
  * Pay for / publish a held draft. Select billing: a paid plan
1997
2032
  * returns `{ status: 'checkout', checkoutUrl }` (send the buyer there;
1998
- * the webhook publishes on payment); a free / bundle / subscription plan
1999
- * publishes immediately (`status: 'published'`); an invoice plan emails a
2000
- * Stripe invoice (`status: 'invoice_sent'`).
2033
+ * the webhook publishes on payment); a free plan publishes immediately
2034
+ * (`status: 'published'`) unless the board requires free-job approval
2035
+ * (`status: 'pending_approval'`); bundle, subscription, and member-credit
2036
+ * posts always publish immediately; an invoice plan emails a Stripe
2037
+ * invoice (`status: 'invoice_sent'`) or holds an on-issue post for
2038
+ * approval.
2001
2039
  *
2002
2040
  * @example
2003
2041
  * const r = await board.me.companies.jobs.checkout('acme', jobId, {
2004
2042
  * billing: { type: 'new', planId },
2005
2043
  * });
2006
2044
  * if (r.status === 'checkout') location.href = r.checkoutUrl!;
2045
+ * if (r.status === 'pending_approval') showAwaitingReview(r.jobId);
2007
2046
  */
2008
2047
  checkout(slug, id, body, options) {
2009
2048
  return client.fetch(
@@ -3665,6 +3704,7 @@ function createBoardClient(options) {
3665
3704
  password: passwordNamespace(client),
3666
3705
  taxonomy: taxonomyNamespace(client),
3667
3706
  search: searchNamespace(client),
3707
+ locations: locationsNamespace(client),
3668
3708
  redirects: redirectsNamespace(client),
3669
3709
  jobAlerts: jobAlertsNamespace(client),
3670
3710
  jobPosting: jobPostingNamespace(client),
package/dist/index.mjs CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  isRateLimited,
22
22
  isUnauthorized,
23
23
  isValidationError
24
- } from "./chunk-DUTQOLOF.mjs";
24
+ } from "./chunk-EHSB2VAJ.mjs";
25
25
 
26
26
  // src/query.ts
27
27
  function toSearchParams(query) {
@@ -42,7 +42,7 @@ function toSearchParams(query) {
42
42
  }
43
43
 
44
44
  // src/version.ts
45
- var SDK_VERSION = "4.27.0";
45
+ var SDK_VERSION = "4.29.0";
46
46
 
47
47
  // src/client.ts
48
48
  function isRawBody(body) {
@@ -917,6 +917,37 @@ function jobsNamespace(client) {
917
917
  };
918
918
  }
919
919
 
920
+ // src/namespaces/locations.ts
921
+ function locationsNamespace(client) {
922
+ return {
923
+ /**
924
+ * GET /locations/search — worldwide autocomplete over countries,
925
+ * regions, cities, and localities, not only places the board's jobs already
926
+ * use (that is `taxonomy.places.list({ q })`). Order is the contract: do
927
+ * not re-sort. Complete a pick with `locations.resolve` using the same
928
+ * session before sending its `id` as `locationId` later.
929
+ *
930
+ * @example
931
+ * const session = crypto.randomUUID();
932
+ * const { data } = await board.locations.search({ q: 'berl', session });
933
+ */
934
+ search(query, options) {
935
+ return client.fetch("/locations/search", {
936
+ ...options,
937
+ query
938
+ });
939
+ },
940
+ /** Complete a picked suggestion with the same search session. */
941
+ resolve(input, options) {
942
+ return client.fetch("/locations/resolve", {
943
+ ...options,
944
+ method: "POST",
945
+ body: input
946
+ });
947
+ }
948
+ };
949
+ }
950
+
920
951
  // src/namespaces/me.ts
921
952
  function meNamespace(client) {
922
953
  return {
@@ -1678,15 +1709,19 @@ function meNamespace(client) {
1678
1709
  /**
1679
1710
  * Pay for / publish a held draft. Select billing: a paid plan
1680
1711
  * returns `{ status: 'checkout', checkoutUrl }` (send the buyer there;
1681
- * the webhook publishes on payment); a free / bundle / subscription plan
1682
- * publishes immediately (`status: 'published'`); an invoice plan emails a
1683
- * Stripe invoice (`status: 'invoice_sent'`).
1712
+ * the webhook publishes on payment); a free plan publishes immediately
1713
+ * (`status: 'published'`) unless the board requires free-job approval
1714
+ * (`status: 'pending_approval'`); bundle, subscription, and member-credit
1715
+ * posts always publish immediately; an invoice plan emails a Stripe
1716
+ * invoice (`status: 'invoice_sent'`) or holds an on-issue post for
1717
+ * approval.
1684
1718
  *
1685
1719
  * @example
1686
1720
  * const r = await board.me.companies.jobs.checkout('acme', jobId, {
1687
1721
  * billing: { type: 'new', planId },
1688
1722
  * });
1689
1723
  * if (r.status === 'checkout') location.href = r.checkoutUrl!;
1724
+ * if (r.status === 'pending_approval') showAwaitingReview(r.jobId);
1690
1725
  */
1691
1726
  checkout(slug, id, body, options) {
1692
1727
  return client.fetch(
@@ -3318,6 +3353,7 @@ function createBoardClient(options) {
3318
3353
  password: passwordNamespace(client),
3319
3354
  taxonomy: taxonomyNamespace(client),
3320
3355
  search: searchNamespace(client),
3356
+ locations: locationsNamespace(client),
3321
3357
  redirects: redirectsNamespace(client),
3322
3358
  jobAlerts: jobAlertsNamespace(client),
3323
3359
  jobPosting: jobPostingNamespace(client),
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B_pBNVUd.js';
1
+ import { S as Schemas } from './_spec-CQx5p1cM.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -119,11 +119,13 @@ type ObjectReferenceFilter = {
119
119
  key: string;
120
120
  recordIds: string[];
121
121
  };
122
- type GeneratedJobsSearchBody = Schemas['PublicSearchJobsBody'];
123
- type JobsSearchBody = Omit<GeneratedJobsSearchBody, 'filters'> & {
124
- filters?: NonNullable<GeneratedJobsSearchBody['filters']> & {
125
- customFields?: CustomFieldFilter[];
126
- };
127
- };
122
+ /**
123
+ * The `jobs.search` body, aliased from the spec like the response types.
124
+ * `filters.customFields` matches the job's own custom fields and
125
+ * `filters.companyCustomFields` the public profile fields of the job's
126
+ * company; both take {@link CustomFieldFilter} clauses (the tests pin that
127
+ * the spec shape and `CustomFieldFilter` stay identical).
128
+ */
129
+ type JobsSearchBody = Schemas['PublicSearchJobsBody'];
128
130
 
129
131
  export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B_pBNVUd.mjs';
1
+ import { S as Schemas } from './_spec-CQx5p1cM.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -119,11 +119,13 @@ type ObjectReferenceFilter = {
119
119
  key: string;
120
120
  recordIds: string[];
121
121
  };
122
- type GeneratedJobsSearchBody = Schemas['PublicSearchJobsBody'];
123
- type JobsSearchBody = Omit<GeneratedJobsSearchBody, 'filters'> & {
124
- filters?: NonNullable<GeneratedJobsSearchBody['filters']> & {
125
- customFields?: CustomFieldFilter[];
126
- };
127
- };
122
+ /**
123
+ * The `jobs.search` body, aliased from the spec like the response types.
124
+ * `filters.customFields` matches the job's own custom fields and
125
+ * `filters.companyCustomFields` the public profile fields of the job's
126
+ * company; both take {@link CustomFieldFilter} clauses (the tests pin that
127
+ * the spec shape and `CustomFieldFilter` stay identical).
128
+ */
129
+ type JobsSearchBody = Schemas['PublicSearchJobsBody'];
128
130
 
129
131
  export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
package/dist/paths.d.mts CHANGED
@@ -127,6 +127,13 @@ declare function blogPostPath(postSlug: string): string;
127
127
  declare function blogTagPath(tagSlug: string): string;
128
128
  /** Blog author archive. */
129
129
  declare function blogAuthorPath(authorSlug: string): string;
130
+ /**
131
+ * Candidate public profile (`/p/<handle>`). Always the default shape: a board
132
+ * that serves profiles elsewhere (e.g. `/@<handle>`, declared through the
133
+ * `talentProfile` route role) builds its links with its own helper, not this.
134
+ * Only the handle is encoded.
135
+ */
136
+ declare function talentProfilePath(handle: string): string;
130
137
  /**
131
138
  * Static top-level board paths (indexed marketing + index surfaces). Kept
132
139
  * here so the sitemap and consumers share one definition of the chrome
@@ -181,4 +188,4 @@ declare function goAlertsConfirmPath(): string;
181
188
  */
182
189
  declare function boardUrl(origin: string, path: string): string;
183
190
 
184
- export { BOARD_PATHS, type SuggestionPathInput, type SuggestionPathOptions, type SuggestionPathScope, blogAuthorPath, blogPostPath, blogTagPath, boardUrl, companyMarketPath, companyPath, companySalaryPath, encodePathSegment, goAlertsConfirmPath, goAlertsManagePath, goJobPath, jobDetailPath, jobsCategoryPath, jobsLocationCategoryPath, jobsLocationPath, jobsLocationSkillPath, jobsSkillPath, salaryLocationPath, salarySkillPath, salaryTitlePath, suggestionPath };
191
+ export { BOARD_PATHS, type SuggestionPathInput, type SuggestionPathOptions, type SuggestionPathScope, blogAuthorPath, blogPostPath, blogTagPath, boardUrl, companyMarketPath, companyPath, companySalaryPath, encodePathSegment, goAlertsConfirmPath, goAlertsManagePath, goJobPath, jobDetailPath, jobsCategoryPath, jobsLocationCategoryPath, jobsLocationPath, jobsLocationSkillPath, jobsSkillPath, salaryLocationPath, salarySkillPath, salaryTitlePath, suggestionPath, talentProfilePath };
package/dist/paths.d.ts CHANGED
@@ -127,6 +127,13 @@ declare function blogPostPath(postSlug: string): string;
127
127
  declare function blogTagPath(tagSlug: string): string;
128
128
  /** Blog author archive. */
129
129
  declare function blogAuthorPath(authorSlug: string): string;
130
+ /**
131
+ * Candidate public profile (`/p/<handle>`). Always the default shape: a board
132
+ * that serves profiles elsewhere (e.g. `/@<handle>`, declared through the
133
+ * `talentProfile` route role) builds its links with its own helper, not this.
134
+ * Only the handle is encoded.
135
+ */
136
+ declare function talentProfilePath(handle: string): string;
130
137
  /**
131
138
  * Static top-level board paths (indexed marketing + index surfaces). Kept
132
139
  * here so the sitemap and consumers share one definition of the chrome
@@ -181,4 +188,4 @@ declare function goAlertsConfirmPath(): string;
181
188
  */
182
189
  declare function boardUrl(origin: string, path: string): string;
183
190
 
184
- export { BOARD_PATHS, type SuggestionPathInput, type SuggestionPathOptions, type SuggestionPathScope, blogAuthorPath, blogPostPath, blogTagPath, boardUrl, companyMarketPath, companyPath, companySalaryPath, encodePathSegment, goAlertsConfirmPath, goAlertsManagePath, goJobPath, jobDetailPath, jobsCategoryPath, jobsLocationCategoryPath, jobsLocationPath, jobsLocationSkillPath, jobsSkillPath, salaryLocationPath, salarySkillPath, salaryTitlePath, suggestionPath };
191
+ export { BOARD_PATHS, type SuggestionPathInput, type SuggestionPathOptions, type SuggestionPathScope, blogAuthorPath, blogPostPath, blogTagPath, boardUrl, companyMarketPath, companyPath, companySalaryPath, encodePathSegment, goAlertsConfirmPath, goAlertsManagePath, goJobPath, jobDetailPath, jobsCategoryPath, jobsLocationCategoryPath, jobsLocationPath, jobsLocationSkillPath, jobsSkillPath, salaryLocationPath, salarySkillPath, salaryTitlePath, suggestionPath, talentProfilePath };
package/dist/paths.js CHANGED
@@ -41,7 +41,8 @@ __export(paths_exports, {
41
41
  salaryLocationPath: () => salaryLocationPath,
42
42
  salarySkillPath: () => salarySkillPath,
43
43
  salaryTitlePath: () => salaryTitlePath,
44
- suggestionPath: () => suggestionPath
44
+ suggestionPath: () => suggestionPath,
45
+ talentProfilePath: () => talentProfilePath
45
46
  });
46
47
  module.exports = __toCommonJS(paths_exports);
47
48
  function encodePathSegment(segment) {
@@ -127,6 +128,9 @@ function blogTagPath(tagSlug) {
127
128
  function blogAuthorPath(authorSlug) {
128
129
  return `/blog/author/${encodePathSegment(authorSlug)}`;
129
130
  }
131
+ function talentProfilePath(handle) {
132
+ return `/p/${encodePathSegment(handle)}`;
133
+ }
130
134
  var BOARD_PATHS = {
131
135
  home: "/",
132
136
  jobs: "/jobs",