@cavuno/board 1.35.0 → 1.36.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.
@@ -63,6 +63,10 @@ interface components {
63
63
  AddCategoryAliasesBody: {
64
64
  aliases: string[];
65
65
  };
66
+ AddForagerExclusionBody: {
67
+ pattern: string;
68
+ type: string;
69
+ };
66
70
  AddMarketAliasesBody: {
67
71
  aliases: string[];
68
72
  };
@@ -77,6 +81,22 @@ interface components {
77
81
  */
78
82
  admin: string;
79
83
  };
84
+ AiUsage: {
85
+ id: string;
86
+ /** @enum {string} */
87
+ object: "ai_usage";
88
+ /** @description The UTC day these counts are for (YYYY-MM-DD). */
89
+ date: string;
90
+ /** @description ISO timestamp of the next UTC-midnight counter reset. */
91
+ resetAt: string;
92
+ features: components["schemas"]["AiUsageFeature"][];
93
+ };
94
+ AiUsageFeature: {
95
+ feature: string;
96
+ used: number;
97
+ limit: number;
98
+ remaining: number;
99
+ };
80
100
  Alert: {
81
101
  /** @description Job-alert preference ID — also the path key. */
82
102
  id: string;
@@ -172,6 +192,10 @@ interface components {
172
192
  email?: string;
173
193
  coverNote?: string;
174
194
  };
195
+ ApproveClaimBody: {
196
+ /** @description Optional intended role for the approved employer, recorded in the audit log. Not yet persisted (companyMembers has no role field). */
197
+ role?: string;
198
+ };
175
199
  AuditLogEntry: {
176
200
  /** @description Unique identifier for the object. */
177
201
  id: string;
@@ -448,6 +472,18 @@ interface components {
448
472
  BoardAuthVerifyEmailBody: {
449
473
  token: string;
450
474
  };
475
+ BoardContentBody: {
476
+ /** @description The board name. */
477
+ boardName: string;
478
+ /** @description Optional board description to steer the copy. */
479
+ boardDescription?: string;
480
+ };
481
+ BoardRulesBody: {
482
+ /** @description The board name. */
483
+ boardName: string;
484
+ /** @description Optional board description to steer the scraping rules. */
485
+ boardDescription?: string;
486
+ };
451
487
  BoardSeo: {
452
488
  /** @enum {string} */
453
489
  object: "board_seo";
@@ -477,6 +513,16 @@ interface components {
477
513
  themeColor: string;
478
514
  };
479
515
  };
516
+ BoardThemeBody: {
517
+ /** @description The board name. */
518
+ boardName: string;
519
+ /** @description Optional board description to steer the palette + fonts. */
520
+ boardDescription?: string;
521
+ };
522
+ BoardToneBody: {
523
+ /** @description The board name the AI tone/voice profile is generated from. */
524
+ boardName: string;
525
+ };
480
526
  BoardUser: {
481
527
  /** @description Board user ID. */
482
528
  id: string;
@@ -496,11 +542,52 @@ interface components {
496
542
  BulkRejectApplicantsBody: {
497
543
  applicationIds: string[];
498
544
  };
545
+ Candidate: {
546
+ /** @description Unique identifier for the candidate. */
547
+ id: string;
548
+ /**
549
+ * @description String representing the object's type.
550
+ * @enum {string}
551
+ */
552
+ object: "candidate";
553
+ /** @description The candidate's email address. */
554
+ email: string;
555
+ /** @description The candidate's display name. */
556
+ displayName: string | null;
557
+ /** @description Public-profile handle, or `null`. */
558
+ handle: string | null;
559
+ /** @description Avatar URL, or `null`. */
560
+ avatarUrl: string | null;
561
+ /** @description Whether the candidate has uploaded a resume. */
562
+ hasResume: boolean;
563
+ /** @description ISO-8601 timestamp of when the candidate registered. */
564
+ createdAt: string;
565
+ /** @description ISO-8601 timestamp of the last sign-in, or `null`. */
566
+ lastActiveAt: string | null;
567
+ };
499
568
  CandidateAvatar: {
500
569
  /** @enum {string} */
501
570
  object: "candidate_avatar";
502
571
  avatarUrl: string | null;
503
572
  };
573
+ CandidateDetail: components["schemas"]["Candidate"] & {
574
+ profile: components["schemas"]["CandidateProfile"] & ({
575
+ headline: string | null;
576
+ location: string | null;
577
+ bio: string | null;
578
+ jobSearchStatus: string | null;
579
+ profileVisibility: string | null;
580
+ openToRelocate: boolean | null;
581
+ seniority: string[];
582
+ skills: string[];
583
+ workingPermits: string[];
584
+ interestedRoles: string[];
585
+ } | null);
586
+ /** @description Number of jobs the candidate has saved. */
587
+ savedJobCount: number;
588
+ /** @description Number of job alerts the candidate has. */
589
+ alertCount: number;
590
+ };
504
591
  CandidateEducation: {
505
592
  id: string;
506
593
  /** @enum {string} */
@@ -583,6 +670,15 @@ interface components {
583
670
  slug: string;
584
671
  website: string | null;
585
672
  };
673
+ CollectReportsBody: {
674
+ /** @description Restrict collection to these providers. Omit to collect every enabled provider. */
675
+ providers?: ("search_console" | "adsense" | "tinybird" | "stripe")[];
676
+ /**
677
+ * Format: date-time
678
+ * @description Collect up to this end date (ISO-8601). Defaults to the current day.
679
+ */
680
+ endDate?: string;
681
+ };
586
682
  CompaniesBatchRequest: {
587
683
  /** @description Array of sub-operations to execute. Each entry runs independently and reports its result on the corresponding entry of the response `data` array. Sub-operation `id` values must be unique within the batch. Up to 100 entries. */
588
684
  operations: ({
@@ -659,6 +755,20 @@ interface components {
659
755
  boardCategoryP75Max: number | null;
660
756
  currency: string;
661
757
  };
758
+ CompanyClaim: {
759
+ id: string;
760
+ /** @enum {string} */
761
+ object: "company_claim";
762
+ companyId: string;
763
+ companyName: string;
764
+ employerId: string;
765
+ employerEmail: string;
766
+ workEmail: string | null;
767
+ workEmailVerifiedAt: string | null;
768
+ status: string;
769
+ /** @description ISO-8601 timestamp the claim was created. */
770
+ requestedAt: string;
771
+ };
662
772
  CompanyMarket: {
663
773
  /** @enum {string} */
664
774
  object: "company_market";
@@ -797,6 +907,8 @@ interface components {
797
907
  logoUrl: string | null;
798
908
  /** @description One-line summary of the company, or `null` if not set. */
799
909
  summary: string | null;
910
+ /** @description Canonical market slugs assigned to the company. */
911
+ markets: string[];
800
912
  /** @description X (Twitter) profile URL, or `null` if not set. */
801
913
  xUrl: string | null;
802
914
  /** @description LinkedIn page URL, or `null` if not set. */
@@ -816,6 +928,36 @@ interface components {
816
928
  public?: string | null;
817
929
  };
818
930
  };
931
+ ConfirmImportBody: {
932
+ /** @description A first-time or revised mapping to persist. Omit to use the mapping already attached to the batch (fingerprint reuse). */
933
+ inlineMapping?: {
934
+ schemaFingerprint: string;
935
+ /** @enum {string} */
936
+ sourceFormat: "csv" | "xml";
937
+ fieldMappings: {
938
+ sourceColumn: string;
939
+ targetField: string;
940
+ confidence: number;
941
+ notes?: string;
942
+ }[];
943
+ /** @default {} */
944
+ defaults: {
945
+ employmentType?: string;
946
+ remoteOption?: string;
947
+ currency?: string;
948
+ descriptionFormat?: string;
949
+ };
950
+ /** @default [] */
951
+ valueTransforms: {
952
+ sourceColumn: string;
953
+ targetField: string;
954
+ map: {
955
+ [key: string]: string;
956
+ };
957
+ fallback?: string;
958
+ }[];
959
+ };
960
+ };
819
961
  ConfirmWorkEmailBody: {
820
962
  token: string;
821
963
  };
@@ -930,6 +1072,8 @@ interface components {
930
1072
  linkedinUrl?: string;
931
1073
  /** @description Facebook company page URL. */
932
1074
  facebookUrl?: string;
1075
+ /** @description Canonical market slugs assigned to the company. Pass an empty array to clear all markets. */
1076
+ markets?: string[];
933
1077
  /** @description The company's display name. */
934
1078
  name: string;
935
1079
  /** @description URL-friendly slug for the company. Auto-generated from `name` when omitted. */
@@ -966,6 +1110,18 @@ interface components {
966
1110
  description?: string;
967
1111
  sortOrder?: number;
968
1112
  };
1113
+ CreateInvitationBody: {
1114
+ /**
1115
+ * Format: email
1116
+ * @description The email address to invite.
1117
+ */
1118
+ email: string;
1119
+ /**
1120
+ * @description The role the invitee receives on accept.
1121
+ * @enum {string}
1122
+ */
1123
+ role: "admin" | "member";
1124
+ };
969
1125
  CreateJobBody: {
970
1126
  /** @description The ID of an existing company. Provide either `companyId` or `company`, not both. */
971
1127
  companyId?: string;
@@ -1155,6 +1311,17 @@ interface components {
1155
1311
  /** @description The stage label. */
1156
1312
  label: string;
1157
1313
  };
1314
+ CreateRedirectBody: {
1315
+ /** @description Source path to match, for example `/old-careers`. */
1316
+ fromPath: string;
1317
+ /** @description Destination path or URL, for example `/jobs`. */
1318
+ toPath: string;
1319
+ /**
1320
+ * @description HTTP status code. One of `301` or `302`. Defaults to `301`.
1321
+ * @default 301
1322
+ */
1323
+ statusCode: 301 | 302;
1324
+ };
1158
1325
  CreateSkillBody: {
1159
1326
  name: string;
1160
1327
  slug?: string;
@@ -1269,6 +1436,35 @@ interface components {
1269
1436
  EditMessageBody: {
1270
1437
  body: string;
1271
1438
  };
1439
+ Employer: {
1440
+ /** @description Unique identifier for the employer. */
1441
+ id: string;
1442
+ /**
1443
+ * @description String representing the object's type.
1444
+ * @enum {string}
1445
+ */
1446
+ object: "employer";
1447
+ /** @description The employer's email address. */
1448
+ email: string;
1449
+ displayName: string | null;
1450
+ avatarUrl: string | null;
1451
+ emailVerifiedAt: string | null;
1452
+ createdAt: string;
1453
+ lastActiveAt: string | null;
1454
+ /** @description Approved company memberships. */
1455
+ companies: (components["schemas"]["EmployerCompany"] & {
1456
+ companyId: string;
1457
+ companyName: string;
1458
+ /** @description Membership status (e.g. `approved`). */
1459
+ status: string;
1460
+ /** @description How the membership was approved (`domain_match` | `work_email_verification` | `admin` | `owner_creation`), or `null`. */
1461
+ approvalSource: string | null;
1462
+ /** @description ISO-8601 timestamp the membership was created. */
1463
+ joinedAt: string;
1464
+ })[];
1465
+ /** @description Pending company claims (memberships awaiting approval). */
1466
+ pendingClaims: components["schemas"]["EmployerPendingClaim"][];
1467
+ };
1272
1468
  EmployerApplicant: {
1273
1469
  id: string;
1274
1470
  /** @enum {string} */
@@ -1578,6 +1774,28 @@ interface components {
1578
1774
  updatedAt: string;
1579
1775
  links: components["schemas"]["EmployerJobLinks"];
1580
1776
  };
1777
+ EmployerMembership: {
1778
+ id: string;
1779
+ /** @enum {string} */
1780
+ object: "employer_membership";
1781
+ companyId: string;
1782
+ companyName: string;
1783
+ employerId: string;
1784
+ employerEmail: string;
1785
+ /** @description How the membership was approved (`domain_match` | `work_email_verification` | `admin` | `owner_creation`), or `null`. */
1786
+ approvalSource: string | null;
1787
+ status: string;
1788
+ /** @description ISO-8601 timestamp the membership was created. */
1789
+ joinedAt: string;
1790
+ };
1791
+ EmployerPendingClaim: {
1792
+ membershipId: string;
1793
+ companyId: string;
1794
+ companyName: string;
1795
+ companyWebsiteDomain: string | null;
1796
+ workEmail: string | null;
1797
+ workEmailVerifiedAt: string | null;
1798
+ };
1581
1799
  EmployerPipeline: {
1582
1800
  /** @enum {string} */
1583
1801
  object: "employer_pipeline";
@@ -1688,12 +1906,169 @@ interface components {
1688
1906
  /** @description If `true` (default), creates a new company when no match is found. Set to `false` to receive a `404 companies_not_found` response instead. */
1689
1907
  createIfMissing?: boolean;
1690
1908
  };
1909
+ ForagerBackfillProgress: {
1910
+ id: string;
1911
+ /** @enum {string} */
1912
+ object: "forager_backfill_progress";
1913
+ backfillId: string;
1914
+ status: string;
1915
+ progress: {
1916
+ jobsMatched: number;
1917
+ jobsToEnhance: number;
1918
+ jobsEnhanced: number;
1919
+ jobsFailed: number;
1920
+ };
1921
+ errorMessage: string | null;
1922
+ createdAt: string;
1923
+ };
1924
+ ForagerConfig: {
1925
+ /** @enum {string} */
1926
+ object: "forager_config";
1927
+ configured: boolean;
1928
+ isActive?: boolean;
1929
+ foragerUserId?: string | null;
1930
+ privateVerticalId?: string | null;
1931
+ foragerPlan?: string | null;
1932
+ autoExpireJobs?: boolean;
1933
+ lastSyncedAt?: string | null;
1934
+ hasApiKey?: boolean;
1935
+ hasWebhookSecret?: boolean;
1936
+ };
1937
+ ForagerExclusion: {
1938
+ id: string;
1939
+ /** @enum {string} */
1940
+ object: "forager_exclusion";
1941
+ pattern: string;
1942
+ type: string;
1943
+ createdAt: string;
1944
+ };
1945
+ ForagerSyncRun: {
1946
+ id: string;
1947
+ /** @enum {string} */
1948
+ object: "forager_sync_run";
1949
+ startedAt: string | null;
1950
+ completedAt: string;
1951
+ /** @enum {string} */
1952
+ status: "completed";
1953
+ jobsCreated: number;
1954
+ jobsRepublished: number;
1955
+ companiesCreated: number;
1956
+ totalActive: number;
1957
+ };
1691
1958
  HandleAvailability: {
1692
1959
  /** @enum {string} */
1693
1960
  object: "handle_availability";
1694
1961
  handle: string;
1695
1962
  available: boolean;
1696
1963
  };
1964
+ Import: {
1965
+ id: string;
1966
+ /** @enum {string} */
1967
+ object: "import";
1968
+ filename: string;
1969
+ sourceFormat: string;
1970
+ status: string;
1971
+ discoveryStatus: string | null;
1972
+ totalRows: number;
1973
+ processedRows: number;
1974
+ createdCount: number;
1975
+ updatedCount: number;
1976
+ skippedCount: number;
1977
+ errorCount: number;
1978
+ mappingId: string | null;
1979
+ startedAt: string | null;
1980
+ completedAt: string | null;
1981
+ createdAt: string;
1982
+ };
1983
+ ImportBatchError: {
1984
+ rowIndex: number;
1985
+ code: string;
1986
+ message: string;
1987
+ };
1988
+ ImportDetail: {
1989
+ id: string;
1990
+ /** @enum {string} */
1991
+ object: "import";
1992
+ filename: string;
1993
+ sourceFormat: string;
1994
+ status: string;
1995
+ discoveryStatus: string | null;
1996
+ totalRows: number;
1997
+ processedRows: number;
1998
+ createdCount: number;
1999
+ updatedCount: number;
2000
+ skippedCount: number;
2001
+ errorCount: number;
2002
+ mappingId: string | null;
2003
+ startedAt: string | null;
2004
+ completedAt: string | null;
2005
+ createdAt: string;
2006
+ errors: components["schemas"]["ImportBatchError"][];
2007
+ proposedMapping?: unknown;
2008
+ };
2009
+ ImportFieldMapping: {
2010
+ sourceColumn: string;
2011
+ targetField: string;
2012
+ confidence: number;
2013
+ notes?: string;
2014
+ };
2015
+ ImportMapping: {
2016
+ id: string;
2017
+ /** @enum {string} */
2018
+ object: "import_mapping";
2019
+ schemaFingerprint: string;
2020
+ /** @enum {string} */
2021
+ sourceFormat: "csv" | "xml";
2022
+ fieldMappings: components["schemas"]["ImportFieldMapping"][];
2023
+ valueTransforms: components["schemas"]["ImportValueTransform"][];
2024
+ defaults: components["schemas"]["ImportMappingDefaults"];
2025
+ importCount: number;
2026
+ lastUsedAt: string;
2027
+ createdByUserId: string | null;
2028
+ createdAt: string;
2029
+ };
2030
+ ImportMappingDefaults: {
2031
+ employmentType?: string;
2032
+ remoteOption?: string;
2033
+ currency?: string;
2034
+ descriptionFormat?: string;
2035
+ };
2036
+ ImportQuota: {
2037
+ /** @enum {string} */
2038
+ object: "import_quota";
2039
+ used: number;
2040
+ remaining: number;
2041
+ limit: number;
2042
+ resetAt: string;
2043
+ };
2044
+ ImportValueTransform: {
2045
+ sourceColumn: string;
2046
+ targetField: string;
2047
+ map: {
2048
+ [key: string]: string;
2049
+ };
2050
+ fallback?: string;
2051
+ };
2052
+ IndexingConfig: {
2053
+ /** @enum {string} */
2054
+ id: "indexing_config";
2055
+ /** @enum {string} */
2056
+ object: "indexing_config";
2057
+ /** @description Whether Google Indexing submission is active. */
2058
+ enabled: boolean;
2059
+ /** @description Whether IndexNow (Bing/Yandex) instant indexing is enabled. */
2060
+ indexNowEnabled: boolean;
2061
+ /** @description GCP provisioning state (`pending` | `provisioning` | `ready` | `error`), or null. */
2062
+ provisioningStatus: string | null;
2063
+ /** @description ISO-8601 timestamp of the last submission, or null. */
2064
+ lastRunAt: string | null;
2065
+ /** @description The last recorded error message, or null. */
2066
+ lastError: string | null;
2067
+ };
2068
+ IndexingToggleBody: {
2069
+ /** @description Whether to enable the toggle. */
2070
+ enabled: boolean;
2071
+ };
1697
2072
  /** @description An inline company payload, resolved via `find-or-create` before the job is created. Provide either `company` or `companyId`, not both. */
1698
2073
  InlineCompanyInput: {
1699
2074
  /** @description The company's display name. */
@@ -1707,6 +2082,33 @@ interface components {
1707
2082
  /** @description If `true` (default), creates a new company when no match is found. Set to `false` to receive a `404 companies_not_found` response instead. */
1708
2083
  createIfMissing?: boolean;
1709
2084
  };
2085
+ Invitation: {
2086
+ /** @description Unique identifier for the invitation. */
2087
+ id: string;
2088
+ /**
2089
+ * @description String representing the object's type.
2090
+ * @enum {string}
2091
+ */
2092
+ object: "invitation";
2093
+ /** @description The invited email address. */
2094
+ email: string;
2095
+ /** @description The role the invitee will receive on accept. */
2096
+ role: string;
2097
+ /** @description The invitation status: pending, expired, accepted, declined. */
2098
+ status: string;
2099
+ /** @description ISO-8601 timestamp of when the invitation expires. */
2100
+ expiresAt: string;
2101
+ /** @description Identifier of the user who created the invitation. */
2102
+ invitedByUserId: string | null;
2103
+ /** @description ISO-8601 timestamp of when the invitation was created. */
2104
+ createdAt: string;
2105
+ };
2106
+ InvitationWithToken: components["schemas"]["Invitation"] & {
2107
+ /** @description The opaque accept token. */
2108
+ token: string;
2109
+ /** @description The full URL a recipient uses to accept the invitation. */
2110
+ acceptUrl: string;
2111
+ };
1710
2112
  Job: components["schemas"]["JobSummary"] & {
1711
2113
  /** @description Public + admin URLs for this job. `public` may be `null` if the job lacks a slug or company-slug. */
1712
2114
  links?: components["schemas"]["ResourceLinks"] & {
@@ -1834,11 +2236,6 @@ interface components {
1834
2236
  /** @description Free-form location string (e.g. `"Berlin, Germany"`, `"Mountain View, California, USA"`). Mapbox parses + ranks candidates server-side; rejects on low confidence. */
1835
2237
  query: string;
1836
2238
  };
1837
- JobPostingBillingCheck: {
1838
- /** @enum {string} */
1839
- object: "job_posting_billing_check";
1840
- hasActiveBilling: boolean;
1841
- };
1842
2239
  JobPostingBillingOptions: {
1843
2240
  /** @enum {string} */
1844
2241
  object: "job_posting_billing_options";
@@ -1869,10 +2266,6 @@ interface components {
1869
2266
  object: "job_posting_billing_verification";
1870
2267
  success: boolean;
1871
2268
  };
1872
- JobPostingCheckBillingBody: {
1873
- /** Format: email */
1874
- email: string;
1875
- };
1876
2269
  JobPostingLogo: {
1877
2270
  /** @enum {string} */
1878
2271
  object: "job_posting_logo";
@@ -1936,23 +2329,6 @@ interface components {
1936
2329
  /** Format: email */
1937
2330
  email: string;
1938
2331
  };
1939
- JobPostingSubscriptionEntitlements: {
1940
- /** @enum {string} */
1941
- object: "job_posting_subscription_entitlements";
1942
- hasSubscription: boolean;
1943
- subscriptionId: string | null;
1944
- canFeature: boolean | null;
1945
- featuredSlotsRemaining: number | null;
1946
- featuredSlotsTotal: number | null;
1947
- maxActiveRemaining: number | null;
1948
- maxActiveTotal: number | null;
1949
- featureSelectionMode: string | null;
1950
- };
1951
- JobPostingSubscriptionEntitlementsBody: {
1952
- /** Format: email */
1953
- email: string;
1954
- planId: string;
1955
- };
1956
2332
  JobSummary: {
1957
2333
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`). */
1958
2334
  id: string;
@@ -2189,6 +2565,41 @@ interface components {
2189
2565
  */
2190
2566
  purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
2191
2567
  };
2568
+ Member: {
2569
+ /** @description Unique identifier for the membership. */
2570
+ id: string;
2571
+ /**
2572
+ * @description String representing the object's type.
2573
+ * @enum {string}
2574
+ */
2575
+ object: "member";
2576
+ /** @description Identifier of the user behind the member. */
2577
+ userId: string;
2578
+ /** @description The member's email address. */
2579
+ email: string;
2580
+ /** @description The member's display name. */
2581
+ name: string;
2582
+ /** @description URL of the member's avatar, or `null` if none is set. */
2583
+ avatarUrl: string | null;
2584
+ /** @description The member's role in the account. */
2585
+ role: string;
2586
+ /** @description Whether the member is currently suspended. */
2587
+ suspended: boolean;
2588
+ /** @description ISO-8601 timestamp of when the member joined the account. */
2589
+ joinedAt: string;
2590
+ /** @description Whether the member is the account primary owner. */
2591
+ isPrimaryOwner: boolean;
2592
+ };
2593
+ MemberPermissions: {
2594
+ /** @enum {string} */
2595
+ id: "members_me";
2596
+ /** @enum {string} */
2597
+ object: "member_permissions";
2598
+ /** @description The acting member's role, or `null` if they are not a member. */
2599
+ role: string | null;
2600
+ /** @description The permission strings the acting member effectively holds. */
2601
+ permissions: string[];
2602
+ };
2192
2603
  Message: {
2193
2604
  id: string;
2194
2605
  /** @enum {string} */
@@ -2230,6 +2641,13 @@ interface components {
2230
2641
  subscribed: boolean;
2231
2642
  updatedAt: number | null;
2232
2643
  };
2644
+ NotificationPreferences: {
2645
+ /** @enum {string} */
2646
+ object: "notification_preferences";
2647
+ backfillDigest: boolean;
2648
+ companyAccessRequest: boolean;
2649
+ companyRegistered: boolean;
2650
+ };
2233
2651
  OffsetPagination: {
2234
2652
  /** @description Total number of results matching the query. */
2235
2653
  count?: number;
@@ -2298,6 +2716,19 @@ interface components {
2298
2716
  /** @description Identifier of the parent operation when this operation is a child of a fan-out, or `null` otherwise. */
2299
2717
  parentOperationId: string | null;
2300
2718
  };
2719
+ PatchForagerConfigBody: {
2720
+ isActive?: boolean;
2721
+ autoExpireJobs?: boolean;
2722
+ };
2723
+ PatchNotificationPreferencesBody: {
2724
+ backfillDigest?: boolean;
2725
+ companyAccessRequest?: boolean;
2726
+ companyRegistered?: boolean;
2727
+ };
2728
+ PatchReportingIntegrationBody: {
2729
+ /** @description Whether collection is enabled for this integration. */
2730
+ enabled: boolean;
2731
+ };
2301
2732
  PatchSettingsBody: {
2302
2733
  /** @description Display name of the board. */
2303
2734
  name?: string;
@@ -2327,8 +2758,25 @@ interface components {
2327
2758
  requireApprovalAggregatedJobs?: boolean;
2328
2759
  /** @description Whether visitors must sign in to view jobs. */
2329
2760
  registrationWallEnabled?: boolean;
2330
- /** @description Whether the public talent directory is enabled. */
2761
+ /** @description Legacy shorthand for the talent directory. `true` maps to `talentDirectoryVisibility: "public"`; `false` maps to `"off"`. Prefer the tri-state field. Providing both with conflicting values returns `settings_conflicting_fields`. */
2331
2762
  talentDirectoryEnabled?: boolean;
2763
+ /**
2764
+ * @description Talent directory access mode: `off` (hidden), `public` (anyone), or `employers_only` (approved employers). Canonical field; supersedes `talentDirectoryEnabled`.
2765
+ * @enum {string}
2766
+ */
2767
+ talentDirectoryVisibility?: "off" | "public" | "employers_only";
2768
+ /** @description Whether the public board shows a cookie consent banner before non-essential tracking runs. */
2769
+ requireCookieConsent?: boolean;
2770
+ /** @description Title shown on the cookie consent banner. 1–200 characters. */
2771
+ cookieBannerTitle?: string;
2772
+ /** @description Body copy shown on the cookie consent banner. 1–500 characters. */
2773
+ cookieBannerDescription?: string;
2774
+ /** @description Reject-button label on the cookie consent banner. 1–80 characters. */
2775
+ cookieBannerRejectLabel?: string;
2776
+ /** @description Accept-button label on the cookie consent banner. 1–80 characters. */
2777
+ cookieBannerAcceptLabel?: string;
2778
+ /** @description Preferences/manage-button label on the cookie consent banner. 1–80 characters. */
2779
+ cookieBannerManageLabel?: string;
2332
2780
  /** @description Whether the Cavuno-branded footer is displayed on the public board. Plan-gated; lower-tier plans cannot disable this. */
2333
2781
  showCavunoBranding?: boolean;
2334
2782
  /** @description Default expiry, in days, applied to newly published jobs when no `expiresAt` is supplied. */
@@ -2374,6 +2822,17 @@ interface components {
2374
2822
  intervalCount: number | null;
2375
2823
  isDefault: boolean;
2376
2824
  };
2825
+ Permission: {
2826
+ /** @description Unique identifier for the permission. */
2827
+ id: string;
2828
+ /**
2829
+ * @description String representing the object's type.
2830
+ * @enum {string}
2831
+ */
2832
+ object: "permission";
2833
+ /** @description The permission string, e.g. `members.manage`. */
2834
+ permission: string;
2835
+ };
2377
2836
  Plan: {
2378
2837
  /** @enum {string} */
2379
2838
  object: "plan";
@@ -2582,6 +3041,22 @@ interface components {
2582
3041
  */
2583
3042
  public: string | null;
2584
3043
  };
3044
+ PublicInvitation: {
3045
+ /** @enum {string} */
3046
+ object: "invitation";
3047
+ /** @description The invited email address. */
3048
+ email: string;
3049
+ /** @description The role the invitee will receive on accept. */
3050
+ role: string;
3051
+ /** @description The invitation status. */
3052
+ status: string;
3053
+ /** @description ISO-8601 timestamp of when the invitation expires. */
3054
+ expiresAt: string;
3055
+ /** @description The inviting account (name only). */
3056
+ account: {
3057
+ name: string;
3058
+ } | null;
3059
+ };
2585
3060
  PublicJob: {
2586
3061
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`). */
2587
3062
  id: string;
@@ -2743,21 +3218,20 @@ interface components {
2743
3218
  PublicJobAlertResend: {
2744
3219
  /** @enum {string} */
2745
3220
  object: "job_alert_confirmation_resend";
2746
- /** @enum {string} */
2747
- status: "sent" | "not_found" | "already_confirmed" | "throttled" | "send_failed";
3221
+ /**
3222
+ * @description Always `submitted`. The response is intentionally uniform to prevent email enumeration. If a pending confirmation exists for this email, a confirmation email has been sent (subject to server-side throttle).
3223
+ * @enum {string}
3224
+ */
3225
+ status: "submitted";
2748
3226
  };
2749
3227
  PublicJobAlertSubscription: {
2750
3228
  /** @enum {string} */
2751
3229
  object: "job_alert_subscription";
2752
3230
  /**
2753
- * @description `created` on a new subscription; `duplicate` if it existed.
3231
+ * @description Always `submitted`. The response is intentionally uniform to prevent email enumeration. If this email isn't already subscribed, a confirmation email has been sent.
2754
3232
  * @enum {string}
2755
3233
  */
2756
- status: "created" | "duplicate";
2757
- /** @description True when a double-opt-in confirmation email was sent. */
2758
- requiresConfirmation: boolean;
2759
- /** @description True if the subscriber was already email-confirmed. */
2760
- confirmed: boolean;
3234
+ status: "submitted";
2761
3235
  };
2762
3236
  PublicJobCard: {
2763
3237
  id: string;
@@ -2894,6 +3368,20 @@ interface components {
2894
3368
  redirectTo: string | null;
2895
3369
  geo: components["schemas"]["TaxonomyGeo"];
2896
3370
  };
3371
+ PublicTaxonomyTerm: {
3372
+ /** @enum {string} */
3373
+ object: "taxonomy_term";
3374
+ /** @description Stable taxonomy entity ID. */
3375
+ id: string;
3376
+ /** @enum {string} */
3377
+ type: "category" | "skill";
3378
+ /** @description Current source-locale slug used by job search; old slugs may remain aliases. */
3379
+ sourceSlug: string;
3380
+ /** @description Board-language canonical URL slug. */
3381
+ canonicalSlug: string;
3382
+ /** @description Board-language name with source-name fallback. */
3383
+ displayName: string;
3384
+ };
2897
3385
  PublicVerifyBoardPasswordBody: {
2898
3386
  /** @description The board password. */
2899
3387
  password: string;
@@ -2911,6 +3399,23 @@ interface components {
2911
3399
  /** Format: date-time */
2912
3400
  markedAt: string;
2913
3401
  };
3402
+ Redirect: {
3403
+ /** @description Unique identifier for the redirect. */
3404
+ id: string;
3405
+ /**
3406
+ * @description String representing the object's type. Objects of the same type share the same value.
3407
+ * @enum {string}
3408
+ */
3409
+ object: "redirect";
3410
+ /** @description Source path matched by this redirect. */
3411
+ fromPath: string;
3412
+ /** @description Destination path or URL. */
3413
+ toPath: string;
3414
+ /** @description HTTP status code used when redirecting. */
3415
+ statusCode: 301 | 302;
3416
+ /** @description Time at which the redirect was created. ISO 8601 datetime. */
3417
+ createdAt: string;
3418
+ };
2914
3419
  RedirectResolution: {
2915
3420
  /** @enum {string} */
2916
3421
  object: "redirect_resolution";
@@ -2918,6 +3423,32 @@ interface components {
2918
3423
  /** @description The redirect target (board-relative), or `null` when no redirect matches. The consumer 308s to `target`, or 404s when `null`. */
2919
3424
  target: string | null;
2920
3425
  };
3426
+ RedirectsBatchRequest: {
3427
+ /** @description Array of sub-operations to execute. Each entry runs independently and reports its result on the corresponding entry of the response `data` array. Sub-operation `id` values must be unique within the batch. Up to 100 entries. */
3428
+ operations: ({
3429
+ id: string;
3430
+ /** @enum {string} */
3431
+ method: "POST";
3432
+ body?: unknown;
3433
+ action?: string;
3434
+ resourceId?: string;
3435
+ } | {
3436
+ id: string;
3437
+ /** @enum {string} */
3438
+ method: "PATCH";
3439
+ body?: unknown;
3440
+ resourceId: string;
3441
+ } | {
3442
+ id: string;
3443
+ /** @enum {string} */
3444
+ method: "DELETE";
3445
+ resourceId: string;
3446
+ })[];
3447
+ };
3448
+ RejectClaimBody: {
3449
+ /** @description Optional free-form reason recorded in the audit log. */
3450
+ reason?: string;
3451
+ };
2921
3452
  RemotePermitTaxonomyEntry: {
2922
3453
  /** @description Discriminator. One of: `worldwide`, `world_region`, `continent`, `region`, `subregion`, `custom`, `country`, `subdivision`. */
2923
3454
  type: string;
@@ -2948,6 +3479,94 @@ interface components {
2948
3479
  reason: "spam" | "harassment" | "misrepresentation" | "other";
2949
3480
  freeText?: string;
2950
3481
  };
3482
+ ReportSnapshot: {
3483
+ /** @description Unique identifier for the snapshot. */
3484
+ id: string;
3485
+ /**
3486
+ * @description String representing the object's type.
3487
+ * @enum {string}
3488
+ */
3489
+ object: "report_snapshot";
3490
+ /** @description The provider that produced the snapshot. */
3491
+ provider: string;
3492
+ /** @description The metric name. */
3493
+ metric: string;
3494
+ /** @description The segment (e.g. `global`, `country`). */
3495
+ segment: string;
3496
+ /** @description The aggregation interval (e.g. `1d`). */
3497
+ interval: string;
3498
+ /** @description ISO date string — inclusive start of the snapshot range. */
3499
+ rangeStart: string;
3500
+ /** @description ISO date string — inclusive end of the snapshot range. */
3501
+ rangeEnd: string;
3502
+ /** @description Provider-specific metric payload as collected. */
3503
+ payload?: unknown;
3504
+ };
3505
+ ReportingConnect: {
3506
+ /** @description Provider-synthetic identifier for the connect. */
3507
+ id: string;
3508
+ /**
3509
+ * @description String representing the object's type.
3510
+ * @enum {string}
3511
+ */
3512
+ object: "reporting_integration_connect";
3513
+ /** @description The reporting provider key. */
3514
+ provider: string;
3515
+ /** @description Whether the integration is already fully connected. */
3516
+ connected: boolean;
3517
+ /** @description OAuth providers only — the URL the user must visit to grant access. */
3518
+ authorizationUrl?: string;
3519
+ /** @description Search Console only — the site-verification DNS token. */
3520
+ verificationToken?: string;
3521
+ /** @description The board site URL the integration reports on. */
3522
+ siteUrl?: string;
3523
+ /** @description Stripe only — the Monetization settings deep link. */
3524
+ redirectUrl?: string;
3525
+ /** @description Stripe only — why no OAuth URL is returned. */
3526
+ reason?: string;
3527
+ };
3528
+ ReportingIntegration: {
3529
+ /** @description Unique identifier for the integration. */
3530
+ id: string;
3531
+ /**
3532
+ * @description String representing the object's type.
3533
+ * @enum {string}
3534
+ */
3535
+ object: "reporting_integration";
3536
+ /**
3537
+ * @description The reporting provider key.
3538
+ * @enum {string}
3539
+ */
3540
+ provider: "search_console" | "adsense" | "tinybird" | "stripe" | "google_analytics";
3541
+ /** @description Whether collection is enabled for this integration. */
3542
+ enabled: boolean;
3543
+ /** @description ISO-8601 timestamp of when the integration was connected. */
3544
+ connectedAt: string | null;
3545
+ /** @description Provider-side identifier (e.g. the verified site URL). */
3546
+ externalId: string | null;
3547
+ /** @description OAuth scopes granted to the integration. */
3548
+ scopes: string[];
3549
+ settings: components["schemas"]["ReportingIntegrationSettings"];
3550
+ /** @description ISO-8601 timestamp of the last successful collection. */
3551
+ lastCollectedAt: string | null;
3552
+ };
3553
+ /** @description Provider-specific settings. The OAuth `refreshToken` and `oauthState` are always redacted. */
3554
+ ReportingIntegrationSettings: {
3555
+ type?: string;
3556
+ siteUrl?: string;
3557
+ domain?: string | null;
3558
+ siteHostname?: string;
3559
+ verificationToken?: string;
3560
+ status?: string;
3561
+ slug?: string;
3562
+ inspectionUrl?: string;
3563
+ lastSyncedAt?: string;
3564
+ permissionLevel?: string;
3565
+ platformSiteUrl?: string;
3566
+ propertyUrl?: string;
3567
+ adsenseAccountId?: string;
3568
+ sitemapSubmitted?: boolean;
3569
+ } | null;
2951
3570
  ResourceLinks: {
2952
3571
  /**
2953
3572
  * Format: uri
@@ -2993,6 +3612,19 @@ interface components {
2993
3612
  /** @description OAuth client secret. May be supplied here or via HTTP Basic authentication. */
2994
3613
  client_secret?: string;
2995
3614
  };
3615
+ Role: {
3616
+ /** @description Unique identifier for the role. */
3617
+ id: string;
3618
+ /**
3619
+ * @description String representing the object's type.
3620
+ * @enum {string}
3621
+ */
3622
+ object: "role";
3623
+ /** @description The role name: owner, admin, or member. */
3624
+ role: string;
3625
+ /** @description The permission strings granted to the role by default. */
3626
+ permissions: string[];
3627
+ };
2996
3628
  SalaryCompanyIndexItem: {
2997
3629
  /** @enum {string} */
2998
3630
  object: "salary_company";
@@ -3053,6 +3685,14 @@ interface components {
3053
3685
  featuredBullets: string[];
3054
3686
  displayOrder: number;
3055
3687
  };
3688
+ SampleJobsBody: {
3689
+ /** @description The board name. */
3690
+ boardName: string;
3691
+ /** @description Optional board description to tailor the sample jobs. */
3692
+ boardDescription?: string;
3693
+ /** @description How many sample jobs to generate (default 10, max 25). */
3694
+ count?: number;
3695
+ };
3056
3696
  SaveJobBody: {
3057
3697
  jobId: string;
3058
3698
  };
@@ -3084,6 +3724,10 @@ interface components {
3084
3724
  * @example 20
3085
3725
  */
3086
3726
  limit?: number;
3727
+ filters?: {
3728
+ /** @description Return companies assigned to any of these canonical market slugs. Up to 10 values. */
3729
+ markets?: string[];
3730
+ };
3087
3731
  };
3088
3732
  SearchJobsBody: {
3089
3733
  /** @description Free-text search query matched against job title and description. Up to 200 characters. */
@@ -3341,6 +3985,57 @@ interface components {
3341
3985
  candidateBoardUserId: string;
3342
3986
  body: string;
3343
3987
  };
3988
+ Subscriber: {
3989
+ /** @description Unique identifier for the subscriber. */
3990
+ id: string;
3991
+ /**
3992
+ * @description String representing the object's type.
3993
+ * @enum {string}
3994
+ */
3995
+ object: "subscriber";
3996
+ /** @description The subscriber's email address. */
3997
+ email: string;
3998
+ /** @description ISO-8601 timestamp of double-opt-in confirmation, or `null`. */
3999
+ confirmedAt: string | null;
4000
+ /** @description ISO-8601 timestamp of when the subscriber was waitlisted. */
4001
+ waitlistedAt: string | null;
4002
+ /** @description ISO-8601 timestamp of when the subscriber unsubscribed. */
4003
+ unsubscribedAt: string | null;
4004
+ /** @description ISO-8601 timestamp of when the subscriber was created. */
4005
+ createdAt: string;
4006
+ };
4007
+ SubscriberCount: {
4008
+ /** @enum {string} */
4009
+ object: "subscriber_count";
4010
+ /** @description The number of confirmed subscribers for the account. */
4011
+ confirmed: number;
4012
+ };
4013
+ SubscriberDetail: components["schemas"]["Subscriber"] & {
4014
+ /** @description ISO-8601 timestamp of the most recent alert dispatch, or `null`. */
4015
+ lastSentAt: string | null;
4016
+ /** @description The subscriber's alerts. */
4017
+ alerts: (components["schemas"]["Alert"] & {
4018
+ /** @description Unique identifier for the alert. */
4019
+ id: string;
4020
+ /**
4021
+ * @description String representing the object's type.
4022
+ * @enum {string}
4023
+ */
4024
+ object: "alert";
4025
+ /** @description Identifier of the subscriber that owns this alert. */
4026
+ subscriberId: string;
4027
+ /** @description The job-filter criteria the alert matches against. */
4028
+ filters?: unknown;
4029
+ /** @description Delivery cadence: `instant`, `daily`, or `weekly`. */
4030
+ frequency: string;
4031
+ /** @description Whether the alert is currently active. */
4032
+ isActive: boolean;
4033
+ /** @description ISO-8601 timestamp of the last dispatch, or `null`. */
4034
+ lastSentAt: string | null;
4035
+ /** @description ISO-8601 timestamp of when the alert was created. */
4036
+ createdAt: string;
4037
+ })[];
4038
+ };
3344
4039
  TalentDirectoryEntry: {
3345
4040
  /** @enum {string} */
3346
4041
  object: "talent_directory_entry";
@@ -3604,6 +4299,10 @@ interface components {
3604
4299
  /** @description Space-separated list of scopes granted on the issued token. */
3605
4300
  scope: string;
3606
4301
  };
4302
+ TransferOwnershipBody: {
4303
+ /** @description The user ID of the member who will become the primary owner. */
4304
+ newOwnerUserId: string;
4305
+ };
3607
4306
  UnreadCount: {
3608
4307
  /** @enum {string} */
3609
4308
  object: "unread_count";
@@ -3615,6 +4314,10 @@ interface components {
3615
4314
  channel: "messageEmails" | "applicationEmails";
3616
4315
  token: string;
3617
4316
  };
4317
+ UnsubscribeSubscriberBody: {
4318
+ /** @description Optional free-form reason recorded in the audit log. */
4319
+ reason?: string;
4320
+ };
3618
4321
  UpdateApplicationFactsBody: {
3619
4322
  candidateName?: string;
3620
4323
  /** Format: email */
@@ -3710,6 +4413,8 @@ interface components {
3710
4413
  linkedinUrl?: string;
3711
4414
  /** @description Facebook company page URL. */
3712
4415
  facebookUrl?: string;
4416
+ /** @description Canonical market slugs assigned to the company. Pass an empty array to clear all markets. */
4417
+ markets?: string[];
3713
4418
  /** @description The company's display name. */
3714
4419
  name?: string;
3715
4420
  /** @description URL-friendly slug for the company. */
@@ -3749,6 +4454,13 @@ interface components {
3749
4454
  description?: string;
3750
4455
  sortOrder?: number;
3751
4456
  };
4457
+ UpdateInvitationBody: {
4458
+ /**
4459
+ * @description The new role for the pending invitation.
4460
+ * @enum {string}
4461
+ */
4462
+ role: "admin" | "member";
4463
+ };
3752
4464
  UpdateJobBody: {
3753
4465
  /** @description Identifier of the company the job belongs to. */
3754
4466
  companyId?: string;
@@ -3847,6 +4559,13 @@ interface components {
3847
4559
  slug?: string;
3848
4560
  sourceLocale?: string;
3849
4561
  };
4562
+ UpdateMemberBody: {
4563
+ /**
4564
+ * @description The new role. Only an owner may set `owner`; the primary owner’s role is immutable (use transfer-ownership).
4565
+ * @enum {string}
4566
+ */
4567
+ role: "owner" | "admin" | "member";
4568
+ };
3850
4569
  UpdateNotificationPreferenceBody: {
3851
4570
  /** @enum {string} */
3852
4571
  channel: "messageEmails" | "applicationEmails";
@@ -3856,6 +4575,14 @@ interface components {
3856
4575
  label?: string;
3857
4576
  hidden?: boolean;
3858
4577
  };
4578
+ UpdateRedirectBody: {
4579
+ /** @description Source path to match, for example `/old-careers`. */
4580
+ fromPath?: string;
4581
+ /** @description Destination path or URL, for example `/jobs`. */
4582
+ toPath?: string;
4583
+ /** @description HTTP status code. One of `301` or `302`. */
4584
+ statusCode?: 301 | 302;
4585
+ };
3859
4586
  UpdateSkillBody: {
3860
4587
  name?: string;
3861
4588
  slug?: string;