@cavuno/board 1.22.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,61 @@
1
1
  interface components {
2
2
  schemas: {
3
+ AccessCheckoutBody: {
4
+ /**
5
+ * @description The offer tier to purchase (from `GET /paywall/offers/enabled`).
6
+ * @enum {string}
7
+ */
8
+ offerKey: "daily" | "weekly" | "monthly" | "quarterly" | "yearly" | "lifetime";
9
+ /** @description Relative path Stripe returns the buyer to on completion; `session_id` is appended. */
10
+ returnPath: string;
11
+ /** @enum {string} */
12
+ colorMode: "light" | "dark";
13
+ };
14
+ AccessCheckoutSession: {
15
+ /** @enum {string} */
16
+ object: "checkout_session";
17
+ sessionId: string;
18
+ /** @description The Checkout Session client secret to mount the embedded form. */
19
+ clientSecret: string;
20
+ /** @description The board’s connected Stripe account to initialise Stripe.js with. */
21
+ stripeAccountId: string;
22
+ /** @description The platform Stripe publishable key for `loadStripe`. */
23
+ publishableKey: string;
24
+ /**
25
+ * @description `recurring` grants get a manage-subscription portal; `lifetime` do not.
26
+ * @enum {string}
27
+ */
28
+ offerType: "recurring" | "lifetime";
29
+ };
30
+ AccessCheckoutSessionState: {
31
+ /** @enum {string} */
32
+ object: "checkout_session_state";
33
+ /** @enum {string} */
34
+ status: "open" | "complete" | "expired";
35
+ clientSecret: string | null;
36
+ };
37
+ AccessGrant: {
38
+ /** @enum {string} */
39
+ object: "access_grant";
40
+ hasAccess: boolean;
41
+ /** @enum {string|null} */
42
+ status: "active" | "past_due" | "unpaid" | "incomplete" | "incomplete_expired" | "canceled" | "pending" | null;
43
+ /** @enum {string|null} */
44
+ offerType: "recurring" | "lifetime" | null;
45
+ offerKey: string | null;
46
+ currentPeriodEnd: string | null;
47
+ cancelAtPeriodEnd: boolean;
48
+ };
49
+ AccessPortalBody: {
50
+ /** @description Relative path Stripe returns the buyer to; defaults to the board root. */
51
+ returnPath?: string;
52
+ };
53
+ AccessPortalSession: {
54
+ /** @enum {string} */
55
+ object: "portal_session";
56
+ /** Format: uri */
57
+ url: string;
58
+ };
3
59
  AddApplicantNoteBody: {
4
60
  /** @description The note text. */
5
61
  body: string;
@@ -169,6 +225,30 @@ interface components {
169
225
  resourceId: string;
170
226
  })[];
171
227
  };
228
+ Block: {
229
+ /** @enum {string} */
230
+ object: "block";
231
+ /** @enum {boolean} */
232
+ blocked: true;
233
+ };
234
+ BlockStatus: {
235
+ /** @enum {string} */
236
+ object: "block_status";
237
+ blocked: boolean;
238
+ };
239
+ BlockUserBody: {
240
+ boardUserId: string;
241
+ };
242
+ BlockedUser: {
243
+ id: string;
244
+ /** @enum {string} */
245
+ object: "blocked_user";
246
+ boardUserId: string;
247
+ displayName: string;
248
+ avatarUrl: string | null;
249
+ /** Format: date-time */
250
+ createdAt: string;
251
+ };
172
252
  BlogAuthor: {
173
253
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the author endpoints (e.g. `GET /v1/blog/authors/{id}`). */
174
254
  id: string;
@@ -718,6 +798,43 @@ interface components {
718
798
  ConfirmWorkEmailBody: {
719
799
  token: string;
720
800
  };
801
+ Conversation: {
802
+ id: string;
803
+ /** @enum {string} */
804
+ object: "conversation";
805
+ /** Format: date-time */
806
+ lastMessageAt: string;
807
+ lastMessageSnippet: string;
808
+ lastMessageAuthorBoardUserId: string;
809
+ /** Format: date-time */
810
+ archivedAt: string | null;
811
+ hasUnread: boolean;
812
+ counterparty: components["schemas"]["ConversationCounterparty"];
813
+ };
814
+ ConversationArchive: {
815
+ /** @enum {string} */
816
+ object: "conversation_archive";
817
+ /** Format: date-time */
818
+ archivedAt: string | null;
819
+ };
820
+ ConversationCounterparty: {
821
+ boardUserId: string;
822
+ displayName: string;
823
+ avatarUrl: string | null;
824
+ companyName: string | null;
825
+ handle: string | null;
826
+ companySlug: string | null;
827
+ };
828
+ ConversationDetail: components["schemas"]["Conversation"] & {
829
+ /** @enum {string} */
830
+ viewerRole: "employer" | "candidate";
831
+ viewerLastReadMessageId: string | null;
832
+ };
833
+ ConversationRef: {
834
+ /** @enum {string} */
835
+ object: "conversation_ref";
836
+ conversationId: string | null;
837
+ };
721
838
  CreateAuthorBody: {
722
839
  /** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
723
840
  slug?: string;
@@ -1072,6 +1189,9 @@ interface components {
1072
1189
  /** @description Space-separated list of scopes the client may request. */
1073
1190
  scope: string;
1074
1191
  };
1192
+ EditMessageBody: {
1193
+ body: string;
1194
+ };
1075
1195
  EmployerApplicant: {
1076
1196
  id: string;
1077
1197
  /** @enum {string} */
@@ -1970,6 +2090,35 @@ interface components {
1970
2090
  */
1971
2091
  purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
1972
2092
  };
2093
+ Message: {
2094
+ id: string;
2095
+ /** @enum {string} */
2096
+ object: "message";
2097
+ conversationId: string;
2098
+ authorBoardUserId: string;
2099
+ recipientBoardUserId: string;
2100
+ body: string;
2101
+ author: components["schemas"]["MessageAuthor"];
2102
+ /** Format: date-time */
2103
+ sentAt: string;
2104
+ /** Format: date-time */
2105
+ editedAt: string | null;
2106
+ /** Format: date-time */
2107
+ deletedAt: string | null;
2108
+ /** Format: date-time */
2109
+ readAt: string | null;
2110
+ };
2111
+ MessageAuthor: {
2112
+ displayName: string;
2113
+ avatarUrl: string | null;
2114
+ companyName: string | null;
2115
+ };
2116
+ ModerationReport: {
2117
+ /** @enum {string} */
2118
+ object: "moderation_report";
2119
+ id: string;
2120
+ blocked: boolean;
2121
+ };
1973
2122
  MoveApplicantStageBody: {
1974
2123
  /** @description The target stage id. */
1975
2124
  stageId: string;
@@ -2098,6 +2247,24 @@ interface components {
2098
2247
  [key: string]: unknown;
2099
2248
  };
2100
2249
  };
2250
+ PaywallOffer: {
2251
+ /** @enum {string} */
2252
+ object: "paywall_offer";
2253
+ /** @description The tier key posted to checkout (e.g. `monthly`, `lifetime`). */
2254
+ offerKey: string;
2255
+ label: string;
2256
+ billingLabel: string;
2257
+ amountCents: number;
2258
+ currency: string;
2259
+ /**
2260
+ * @description `recurring` tiers get a manage-subscription portal; `lifetime` do not.
2261
+ * @enum {string}
2262
+ */
2263
+ offerType: "recurring" | "lifetime";
2264
+ intervalUnit: string | null;
2265
+ intervalCount: number | null;
2266
+ isDefault: boolean;
2267
+ };
2101
2268
  Plan: {
2102
2269
  /** @enum {string} */
2103
2270
  object: "plan";
@@ -2587,6 +2754,12 @@ interface components {
2587
2754
  */
2588
2755
  expiresAt?: string | null;
2589
2756
  };
2757
+ ReadReceipt: {
2758
+ /** @enum {string} */
2759
+ object: "read_receipt";
2760
+ /** Format: date-time */
2761
+ markedAt: string;
2762
+ };
2590
2763
  RedirectResolution: {
2591
2764
  /** @enum {string} */
2592
2765
  object: "redirect_resolution";
@@ -2616,6 +2789,14 @@ interface components {
2616
2789
  /** @description Every stage id of the job, in the new order. */
2617
2790
  orderedStageIds: string[];
2618
2791
  };
2792
+ ReplyBody: {
2793
+ body: string;
2794
+ };
2795
+ ReportBody: {
2796
+ /** @enum {string} */
2797
+ reason: "spam" | "harassment" | "misrepresentation" | "other";
2798
+ freeText?: string;
2799
+ };
2619
2800
  ResourceLinks: {
2620
2801
  /**
2621
2802
  * Format: uri
@@ -2987,6 +3168,14 @@ interface components {
2987
3168
  boardMedianMax: number | null;
2988
3169
  currency: string;
2989
3170
  };
3171
+ StartAboutApplicationBody: {
3172
+ applicationId: string;
3173
+ body: string;
3174
+ };
3175
+ StartConversationBody: {
3176
+ candidateBoardUserId: string;
3177
+ body: string;
3178
+ };
2990
3179
  TalentDirectoryEntry: {
2991
3180
  /** @enum {string} */
2992
3181
  object: "talent_directory_entry";
@@ -3250,6 +3439,11 @@ interface components {
3250
3439
  /** @description Space-separated list of scopes granted on the issued token. */
3251
3440
  scope: string;
3252
3441
  };
3442
+ UnreadCount: {
3443
+ /** @enum {string} */
3444
+ object: "unread_count";
3445
+ count: number;
3446
+ };
3253
3447
  UnsubscribeBody: {
3254
3448
  boardUserId: string;
3255
3449
  /** @enum {string} */
@@ -3530,102 +3724,6 @@ interface components {
3530
3724
  pathItems: never;
3531
3725
  }
3532
3726
 
3533
- type Schemas = components['schemas'];
3534
-
3535
- /**
3536
- * Stripe-shaped success envelopes (`01-conventions.md` §5.1). The
3537
- * server MAY add top-level fields; consumers MUST ignore unknown
3538
- * fields.
3539
- */
3540
- /**
3541
- * Medusa-style storefront pagination fields (ADR-0037 §7), populated only by
3542
- * the board jobs catalog reads (browse / search / company-jobs); absent on
3543
- * every other list/search. `nextCursor` is preserved alongside (offset-encoded).
3544
- */
3545
- interface StorefrontPagination {
3546
- /** Total matching results ("X jobs"). */
3547
- count?: number;
3548
- /** The page size used for this response. */
3549
- limit?: number;
3550
- /** Number of items skipped before this page. */
3551
- offset?: number;
3552
- /** Items hidden behind the candidate paywall for the current viewer; absent/0 when entitled. */
3553
- gatedCount?: number;
3554
- }
3555
- interface ListEnvelope<T> extends StorefrontPagination {
3556
- object: 'list';
3557
- url: string;
3558
- hasMore: boolean;
3559
- /** `null` when `hasMore` is false — always present, never undefined. */
3560
- nextCursor: string | null;
3561
- data: T[];
3562
- }
3563
- interface SearchEnvelope<T> extends StorefrontPagination {
3564
- object: 'search_result';
3565
- url: string;
3566
- hasMore: boolean;
3567
- nextCursor: string | null;
3568
- data: T[];
3569
- }
3570
-
3571
- type PublicJob = Schemas['PublicJob'];
3572
- type PublicJobCard = Schemas['PublicJobCard'];
3573
- type JobCompany = Schemas['JobCompany'];
3574
- type OfficeLocation = Schemas['JobOfficeLocation'];
3575
- type RemoteOption = NonNullable<PublicJob['remoteOption']>;
3576
- type EmploymentType = NonNullable<PublicJob['employmentType']>;
3577
- type Seniority = NonNullable<PublicJob['seniority']>;
3578
- /** Candidate-facing result ordering (ADR-0048); `relevance` is the default. */
3579
- type JobSort = NonNullable<Schemas['PublicSearchJobsBody']['sort']>;
3580
- type EducationRequirement = PublicJob['educationRequirements'][number];
3581
- type RemotePermit = PublicJob['remotePermits'][number];
3582
- type RemoteTimezone = PublicJob['remoteTimezones'][number];
3583
- /**
3584
- * Derived suggestion on a browse list (ADR-0037 §8): jobs surface `category`
3585
- * and `skill` terms; the companies list surfaces `market` terms.
3586
- */
3587
- interface RelatedSearch {
3588
- type: 'category' | 'skill' | 'market';
3589
- slug: string;
3590
- term: string;
3591
- count: number;
3592
- }
3593
- /** The browse list envelope — `PublicJobCard`s + storefront fields + `relatedSearches`. */
3594
- interface JobCardListEnvelope extends ListEnvelope<PublicJobCard> {
3595
- relatedSearches?: RelatedSearch[];
3596
- }
3597
- /** The search envelope — `PublicJobCard`s + storefront fields. */
3598
- type JobCardSearchEnvelope = SearchEnvelope<PublicJobCard>;
3599
- type JobsListQuery = {
3600
- cursor?: string;
3601
- /** 1–100. */
3602
- limit?: number;
3603
- /** Storefront page offset; takes precedence over `cursor`. `offset + limit` ≤ 10,000. */
3604
- offset?: number;
3605
- /** Repeated param (up to 10) — OR-matched. Repeat `companyId` per value. */
3606
- companyId?: string[];
3607
- remoteOption?: RemoteOption[];
3608
- employmentType?: EmploymentType[];
3609
- seniority?: Seniority[];
3610
- /** Result ordering (ADR-0048). Absent ⇒ `relevance` (the featured-ranked browse). */
3611
- sort?: JobSort;
3612
- /** Place slug for a geo radius search; unresolvable slugs are ignored. */
3613
- location?: string;
3614
- /** Radius in km around `location` (10–250; default 50). */
3615
- radius?: number;
3616
- /** Category slug seed (the `/jobs/[keyword]` page) — server resolves it to the English source name; unresolvable → 404. */
3617
- category?: string;
3618
- /** Skill slug seed (the `/jobs/skills/[skill]` page) — server-resolved; unresolvable → 404. */
3619
- skill?: string;
3620
- /** Sparse fieldset (Medusa-style `+field`). Only `'+description'` is supported — adds `description` to each card. */
3621
- fields?: string;
3622
- };
3623
- type JobsSimilarQuery = {
3624
- /** How many similar jobs to return (1–20; default 5). */
3625
- limit?: number;
3626
- };
3627
- type JobsSearchBody = Schemas['PublicSearchJobsBody'];
3628
-
3629
3727
  type Awaitable<T> = T | Promise<T>;
3630
3728
  /**
3631
3729
  * Async token storage. The SDK reads the access token from storage on
@@ -3745,7 +3843,9 @@ declare function isConflict(e: unknown): e is BoardApiError;
3745
3843
  * constant because the package is platform-neutral and cannot read
3746
3844
  * package.json at runtime.
3747
3845
  */
3748
- declare const SDK_VERSION = "1.22.0";
3846
+ declare const SDK_VERSION = "1.24.0";
3847
+
3848
+ type Schemas = components['schemas'];
3749
3849
 
3750
3850
  type BoardUser = Schemas['BoardUser'];
3751
3851
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -3778,6 +3878,100 @@ type PublicBoardTheme = NonNullable<PublicBoard['theme']>;
3778
3878
  */
3779
3879
  type BoardSeo = Schemas['BoardSeo'];
3780
3880
 
3881
+ /**
3882
+ * Stripe-shaped success envelopes (`01-conventions.md` §5.1). The
3883
+ * server MAY add top-level fields; consumers MUST ignore unknown
3884
+ * fields.
3885
+ */
3886
+ /**
3887
+ * Medusa-style storefront pagination fields (ADR-0037 §7), populated only by
3888
+ * the board jobs catalog reads (browse / search / company-jobs); absent on
3889
+ * every other list/search. `nextCursor` is preserved alongside (offset-encoded).
3890
+ */
3891
+ interface StorefrontPagination {
3892
+ /** Total matching results ("X jobs"). */
3893
+ count?: number;
3894
+ /** The page size used for this response. */
3895
+ limit?: number;
3896
+ /** Number of items skipped before this page. */
3897
+ offset?: number;
3898
+ /** Items hidden behind the candidate paywall for the current viewer; absent/0 when entitled. */
3899
+ gatedCount?: number;
3900
+ }
3901
+ interface ListEnvelope<T> extends StorefrontPagination {
3902
+ object: 'list';
3903
+ url: string;
3904
+ hasMore: boolean;
3905
+ /** `null` when `hasMore` is false — always present, never undefined. */
3906
+ nextCursor: string | null;
3907
+ data: T[];
3908
+ }
3909
+ interface SearchEnvelope<T> extends StorefrontPagination {
3910
+ object: 'search_result';
3911
+ url: string;
3912
+ hasMore: boolean;
3913
+ nextCursor: string | null;
3914
+ data: T[];
3915
+ }
3916
+
3917
+ type PublicJob = Schemas['PublicJob'];
3918
+ type PublicJobCard = Schemas['PublicJobCard'];
3919
+ type JobCompany = Schemas['JobCompany'];
3920
+ type OfficeLocation = Schemas['JobOfficeLocation'];
3921
+ type RemoteOption = NonNullable<PublicJob['remoteOption']>;
3922
+ type EmploymentType = NonNullable<PublicJob['employmentType']>;
3923
+ type Seniority = NonNullable<PublicJob['seniority']>;
3924
+ /** Candidate-facing result ordering (ADR-0048); `relevance` is the default. */
3925
+ type JobSort = NonNullable<Schemas['PublicSearchJobsBody']['sort']>;
3926
+ type EducationRequirement = PublicJob['educationRequirements'][number];
3927
+ type RemotePermit = PublicJob['remotePermits'][number];
3928
+ type RemoteTimezone = PublicJob['remoteTimezones'][number];
3929
+ /**
3930
+ * Derived suggestion on a browse list (ADR-0037 §8): jobs surface `category`
3931
+ * and `skill` terms; the companies list surfaces `market` terms.
3932
+ */
3933
+ interface RelatedSearch {
3934
+ type: 'category' | 'skill' | 'market';
3935
+ slug: string;
3936
+ term: string;
3937
+ count: number;
3938
+ }
3939
+ /** The browse list envelope — `PublicJobCard`s + storefront fields + `relatedSearches`. */
3940
+ interface JobCardListEnvelope extends ListEnvelope<PublicJobCard> {
3941
+ relatedSearches?: RelatedSearch[];
3942
+ }
3943
+ /** The search envelope — `PublicJobCard`s + storefront fields. */
3944
+ type JobCardSearchEnvelope = SearchEnvelope<PublicJobCard>;
3945
+ type JobsListQuery = {
3946
+ cursor?: string;
3947
+ /** 1–100. */
3948
+ limit?: number;
3949
+ /** Storefront page offset; takes precedence over `cursor`. `offset + limit` ≤ 10,000. */
3950
+ offset?: number;
3951
+ /** Repeated param (up to 10) — OR-matched. Repeat `companyId` per value. */
3952
+ companyId?: string[];
3953
+ remoteOption?: RemoteOption[];
3954
+ employmentType?: EmploymentType[];
3955
+ seniority?: Seniority[];
3956
+ /** Result ordering (ADR-0048). Absent ⇒ `relevance` (the featured-ranked browse). */
3957
+ sort?: JobSort;
3958
+ /** Place slug for a geo radius search; unresolvable slugs are ignored. */
3959
+ location?: string;
3960
+ /** Radius in km around `location` (10–250; default 50). */
3961
+ radius?: number;
3962
+ /** Category slug seed (the `/jobs/[keyword]` page) — server resolves it to the English source name; unresolvable → 404. */
3963
+ category?: string;
3964
+ /** Skill slug seed (the `/jobs/skills/[skill]` page) — server-resolved; unresolvable → 404. */
3965
+ skill?: string;
3966
+ /** Sparse fieldset (Medusa-style `+field`). Only `'+description'` is supported — adds `description` to each card. */
3967
+ fields?: string;
3968
+ };
3969
+ type JobsSimilarQuery = {
3970
+ /** How many similar jobs to return (1–20; default 5). */
3971
+ limit?: number;
3972
+ };
3973
+ type JobsSearchBody = Schemas['PublicSearchJobsBody'];
3974
+
3781
3975
  type EmbedJobsQuery = {
3782
3976
  /** Free-text search query, up to 200 characters. */
3783
3977
  q?: string;
@@ -3931,6 +4125,26 @@ type PlansListQuery = {
3931
4125
  type PlanListEnvelope = ListEnvelope<Plan>;
3932
4126
  type SalesLedPlanListEnvelope = ListEnvelope<SalesLedPlan>;
3933
4127
 
4128
+ /** An enabled candidate-access paywall offer tier (public). */
4129
+ type PaywallOffer = Schemas['PaywallOffer'];
4130
+ /**
4131
+ * The connected-account embedded-checkout mount kit returned by
4132
+ * `board.me.access.checkout`. Mount with `loadStripe(publishableKey, {
4133
+ * stripeAccount: stripeAccountId })` then `initEmbeddedCheckout({ clientSecret })`.
4134
+ */
4135
+ type AccessCheckoutSession = Schemas['AccessCheckoutSession'];
4136
+ /** The polled state of a checkout session (`board.me.access.retrieveCheckout`). */
4137
+ type AccessCheckoutSessionState = Schemas['AccessCheckoutSessionState'];
4138
+ /** The viewer's candidate-access entitlement (`board.me.access.grant`). */
4139
+ type AccessGrant = Schemas['AccessGrant'];
4140
+ /** A minted Stripe billing-portal session (`board.me.access.portal`). */
4141
+ type AccessPortalSession = Schemas['AccessPortalSession'];
4142
+ /** Body for `board.me.access.checkout`. */
4143
+ type AccessCheckoutBody = Schemas['AccessCheckoutBody'];
4144
+ /** Body for `board.me.access.portal`. */
4145
+ type AccessPortalBody = Schemas['AccessPortalBody'];
4146
+ type PaywallOfferListEnvelope = ListEnvelope<PaywallOffer>;
4147
+
3934
4148
  type SavedJob = Schemas['SavedJob'];
3935
4149
  type SavedJobsListQuery = {
3936
4150
  cursor?: string;
@@ -3959,6 +4173,22 @@ type CandidateAvatar = Schemas['CandidateAvatar'];
3959
4173
  type NotificationPreference = Schemas['NotificationPreference'];
3960
4174
  type UpdateNotificationPreferenceBody = Schemas['UpdateNotificationPreferenceBody'];
3961
4175
  type UnsubscribeBody = Schemas['UnsubscribeBody'];
4176
+ /** One inbox row — the counterparty identity is live-resolved. */
4177
+ type Conversation = Schemas['Conversation'];
4178
+ /** A conversation header — adds the viewer's role + last-read pointer. */
4179
+ type ConversationDetail = Schemas['ConversationDetail'];
4180
+ /** One message in a thread. `body` is `''` when unsent (tombstoned). */
4181
+ type Message = Schemas['Message'];
4182
+ /** The distinct-unread-thread count for the inbox badge. */
4183
+ type UnreadCount = Schemas['UnreadCount'];
4184
+ /** Query for `board.me.conversations.list`. */
4185
+ type ConversationsListQuery = {
4186
+ /** `true` for the archived view; omit/false for the main inbox. */
4187
+ archived?: boolean;
4188
+ cursor?: string;
4189
+ /** 1–100. */
4190
+ limit?: number;
4191
+ };
3962
4192
  /** One of the authenticated board user's job-alert preferences. */
3963
4193
  type Alert = Schemas['Alert'];
3964
4194
  /** Create/replace body for `board.me.alerts.create` / `board.me.alerts.update`. */
@@ -3975,6 +4205,42 @@ type ApplicationsListQuery = {
3975
4205
  /** 1–100. */
3976
4206
  limit?: number;
3977
4207
  };
4208
+ /** Query for `board.me.conversations.listMessages`. */
4209
+ type ThreadMessagesQuery = {
4210
+ cursor?: string;
4211
+ /** 1–200. */
4212
+ limit?: number;
4213
+ };
4214
+ /** Body for `board.me.conversations.start` (cold-initiate a candidate). */
4215
+ type StartConversationBody = Schemas['StartConversationBody'];
4216
+ /** Body for `board.me.conversations.startAboutApplication` (message an applicant). */
4217
+ type StartAboutApplicationBody = Schemas['StartAboutApplicationBody'];
4218
+ /** Body for `board.me.conversations.reply`. */
4219
+ type ReplyBody = Schemas['ReplyBody'];
4220
+ /** The result of `board.me.conversations.markRead`. */
4221
+ type ReadReceipt = Schemas['ReadReceipt'];
4222
+ /** The result of `board.me.conversations.{archive,unarchive}`. */
4223
+ type ConversationArchive = Schemas['ConversationArchive'];
4224
+ /** Body for `board.me.messages.edit`. */
4225
+ type EditMessageBody = Schemas['EditMessageBody'];
4226
+ /** Body for `board.me.messages.report`. */
4227
+ type ReportBody = Schemas['ReportBody'];
4228
+ /** The result of `board.me.messages.report` (with the auto-block outcome). */
4229
+ type ModerationReport = Schemas['ModerationReport'];
4230
+ /** One blocked user from `board.me.blocks.list`. */
4231
+ type BlockedUser = Schemas['BlockedUser'];
4232
+ /** Body for `board.me.blocks.create`. */
4233
+ type BlockUserBody = Schemas['BlockUserBody'];
4234
+ /** The result of `board.me.blocks.create`. */
4235
+ type Block = Schemas['Block'];
4236
+ /** The result of `board.me.blocks.status`. */
4237
+ type BlockStatus = Schemas['BlockStatus'];
4238
+ /** The result of `board.me.conversations.findExisting`. */
4239
+ type ConversationRef = Schemas['ConversationRef'];
4240
+ /** Query for `board.me.conversations.findExisting`. */
4241
+ type FindExistingConversationQuery = {
4242
+ candidateBoardUserId: string;
4243
+ };
3978
4244
  /** The candidate's resume state (async parse status + stored file). */
3979
4245
  type Resume = Schemas['Resume'];
3980
4246
  /** Options for `board.me.resume.upload`. */
@@ -5577,6 +5843,183 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
5577
5843
  }>;
5578
5844
  unsave(jobId: string, query?: Record<string, never>, options?: FetchOptions): Promise<void>;
5579
5845
  };
5846
+ conversations: {
5847
+ list(query?: ConversationsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
5848
+ id: string;
5849
+ object: "conversation";
5850
+ lastMessageAt: string;
5851
+ lastMessageSnippet: string;
5852
+ lastMessageAuthorBoardUserId: string;
5853
+ archivedAt: string | null;
5854
+ hasUnread: boolean;
5855
+ counterparty: components["schemas"]["ConversationCounterparty"];
5856
+ }>>;
5857
+ unreadCount(options?: FetchOptions): Promise<{
5858
+ object: "unread_count";
5859
+ count: number;
5860
+ }>;
5861
+ retrieve(id: string, options?: FetchOptions): Promise<{
5862
+ id: string;
5863
+ object: "conversation";
5864
+ lastMessageAt: string;
5865
+ lastMessageSnippet: string;
5866
+ lastMessageAuthorBoardUserId: string;
5867
+ archivedAt: string | null;
5868
+ hasUnread: boolean;
5869
+ counterparty: components["schemas"]["ConversationCounterparty"];
5870
+ } & {
5871
+ viewerRole: "employer" | "candidate";
5872
+ viewerLastReadMessageId: string | null;
5873
+ }>;
5874
+ listMessages(id: string, query?: ThreadMessagesQuery, options?: FetchOptions): Promise<ListEnvelope<{
5875
+ id: string;
5876
+ object: "message";
5877
+ conversationId: string;
5878
+ authorBoardUserId: string;
5879
+ recipientBoardUserId: string;
5880
+ body: string;
5881
+ author: components["schemas"]["MessageAuthor"];
5882
+ sentAt: string;
5883
+ editedAt: string | null;
5884
+ deletedAt: string | null;
5885
+ readAt: string | null;
5886
+ }>>;
5887
+ start(body: StartConversationBody, options?: FetchOptions): Promise<{
5888
+ id: string;
5889
+ object: "message";
5890
+ conversationId: string;
5891
+ authorBoardUserId: string;
5892
+ recipientBoardUserId: string;
5893
+ body: string;
5894
+ author: components["schemas"]["MessageAuthor"];
5895
+ sentAt: string;
5896
+ editedAt: string | null;
5897
+ deletedAt: string | null;
5898
+ readAt: string | null;
5899
+ }>;
5900
+ startAboutApplication(body: StartAboutApplicationBody, options?: FetchOptions): Promise<{
5901
+ id: string;
5902
+ object: "message";
5903
+ conversationId: string;
5904
+ authorBoardUserId: string;
5905
+ recipientBoardUserId: string;
5906
+ body: string;
5907
+ author: components["schemas"]["MessageAuthor"];
5908
+ sentAt: string;
5909
+ editedAt: string | null;
5910
+ deletedAt: string | null;
5911
+ readAt: string | null;
5912
+ }>;
5913
+ reply(id: string, body: ReplyBody, options?: FetchOptions): Promise<{
5914
+ id: string;
5915
+ object: "message";
5916
+ conversationId: string;
5917
+ authorBoardUserId: string;
5918
+ recipientBoardUserId: string;
5919
+ body: string;
5920
+ author: components["schemas"]["MessageAuthor"];
5921
+ sentAt: string;
5922
+ editedAt: string | null;
5923
+ deletedAt: string | null;
5924
+ readAt: string | null;
5925
+ }>;
5926
+ markRead(id: string, options?: FetchOptions): Promise<{
5927
+ object: "read_receipt";
5928
+ markedAt: string;
5929
+ }>;
5930
+ archive(id: string, options?: FetchOptions): Promise<{
5931
+ object: "conversation_archive";
5932
+ archivedAt: string | null;
5933
+ }>;
5934
+ unarchive(id: string, options?: FetchOptions): Promise<{
5935
+ object: "conversation_archive";
5936
+ archivedAt: string | null;
5937
+ }>;
5938
+ findExisting(query: FindExistingConversationQuery, options?: FetchOptions): Promise<{
5939
+ object: "conversation_ref";
5940
+ conversationId: string | null;
5941
+ }>;
5942
+ };
5943
+ blocks: {
5944
+ list(options?: FetchOptions): Promise<ListEnvelope<{
5945
+ id: string;
5946
+ object: "blocked_user";
5947
+ boardUserId: string;
5948
+ displayName: string;
5949
+ avatarUrl: string | null;
5950
+ createdAt: string;
5951
+ }>>;
5952
+ create(body: BlockUserBody, options?: FetchOptions): Promise<{
5953
+ object: "block";
5954
+ blocked: true;
5955
+ }>;
5956
+ remove(boardUserId: string, options?: FetchOptions): Promise<void>;
5957
+ status(boardUserId: string, options?: FetchOptions): Promise<{
5958
+ object: "block_status";
5959
+ blocked: boolean;
5960
+ }>;
5961
+ };
5962
+ messages: {
5963
+ edit(id: string, body: EditMessageBody, options?: FetchOptions): Promise<{
5964
+ id: string;
5965
+ object: "message";
5966
+ conversationId: string;
5967
+ authorBoardUserId: string;
5968
+ recipientBoardUserId: string;
5969
+ body: string;
5970
+ author: components["schemas"]["MessageAuthor"];
5971
+ sentAt: string;
5972
+ editedAt: string | null;
5973
+ deletedAt: string | null;
5974
+ readAt: string | null;
5975
+ }>;
5976
+ unsend(id: string, options?: FetchOptions): Promise<{
5977
+ id: string;
5978
+ object: "message";
5979
+ conversationId: string;
5980
+ authorBoardUserId: string;
5981
+ recipientBoardUserId: string;
5982
+ body: string;
5983
+ author: components["schemas"]["MessageAuthor"];
5984
+ sentAt: string;
5985
+ editedAt: string | null;
5986
+ deletedAt: string | null;
5987
+ readAt: string | null;
5988
+ }>;
5989
+ report(id: string, body: ReportBody, options?: FetchOptions): Promise<{
5990
+ object: "moderation_report";
5991
+ id: string;
5992
+ blocked: boolean;
5993
+ }>;
5994
+ };
5995
+ access: {
5996
+ checkout(body: AccessCheckoutBody, options?: FetchOptions): Promise<{
5997
+ object: "checkout_session";
5998
+ sessionId: string;
5999
+ clientSecret: string;
6000
+ stripeAccountId: string;
6001
+ publishableKey: string;
6002
+ offerType: "recurring" | "lifetime";
6003
+ }>;
6004
+ retrieveCheckout(sessionId: string, options?: FetchOptions): Promise<{
6005
+ object: "checkout_session_state";
6006
+ status: "open" | "complete" | "expired";
6007
+ clientSecret: string | null;
6008
+ }>;
6009
+ grant(options?: FetchOptions): Promise<{
6010
+ object: "access_grant";
6011
+ hasAccess: boolean;
6012
+ status: "active" | "past_due" | "unpaid" | "incomplete" | "incomplete_expired" | "canceled" | "pending" | null;
6013
+ offerType: "recurring" | "lifetime" | null;
6014
+ offerKey: string | null;
6015
+ currentPeriodEnd: string | null;
6016
+ cancelAtPeriodEnd: boolean;
6017
+ }>;
6018
+ portal(body?: AccessPortalBody, options?: FetchOptions): Promise<{
6019
+ object: "portal_session";
6020
+ url: string;
6021
+ }>;
6022
+ };
5580
6023
  };
5581
6024
  password: {
5582
6025
  verify(password: string, options?: FetchOptions): Promise<BoardAccessGrant>;
@@ -6273,7 +6716,10 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
6273
6716
  list(query?: PlansListQuery, options?: FetchOptions): Promise<PlanListEnvelope>;
6274
6717
  salesLed(options?: FetchOptions): Promise<SalesLedPlanListEnvelope>;
6275
6718
  };
6719
+ paywall: {
6720
+ offers(options?: FetchOptions): Promise<PaywallOfferListEnvelope>;
6721
+ };
6276
6722
  };
6277
6723
  type BoardSdk = ReturnType<typeof createBoardClient>;
6278
6724
 
6279
- export { ACCESS_TOKEN_KEY, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyBody, type Awaitable, BOARD_ACCESS_GRANT_KEY, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, type CompaniesListQuery, type CompaniesSearchBody, type CompanyCategorySalary, type CompanyJobsListQuery, type CompanyListEnvelope, type CompanyMarket, type CompanyMarketRef, type CompanyMarketsListQuery, type CompanyMembership, type CompanySalary, type CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CustomStorage, type EducationRequirement, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmploymentType, type FetchOptions, 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, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobPostingBillingCheck, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, type JobPostingSubscriptionEntitlements, type JobSort, type JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type LocationSkillsIndex, type LocationTitlesIndex, type Logger, type LoginBody, type LogoutBody, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type OfficeLocation, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicCompanyDetail, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type ReorderPipelineStagesBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, type SalaryCompany, type SalaryDetailQuery, type SalaryLocation, type SalarySkill, type SalaryTitle, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type SendWorkEmailBody, type Seniority, type SkillLocationSalary, type SkillLocationsIndex, type SkillSalaryDetail, type StorageMode, type StorefrontPagination, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyResolution, type TitleLocationSalary, type TitleLocationsIndex, type TitleSalaryDetail, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };
6725
+ export { ACCESS_TOKEN_KEY, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyBody, type Awaitable, BOARD_ACCESS_GRANT_KEY, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, type CompaniesListQuery, type CompaniesSearchBody, type CompanyCategorySalary, type CompanyJobsListQuery, type CompanyListEnvelope, type CompanyMarket, type CompanyMarketRef, type CompanyMarketsListQuery, type CompanyMembership, type CompanySalary, type CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CustomStorage, type EditMessageBody, type EducationRequirement, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmploymentType, type 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, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobPostingBillingCheck, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, type JobPostingSubscriptionEntitlements, type JobSort, type JobsListQuery, type JobsSearchBody, type JobsSimilarQuery, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type LocationSkillsIndex, type LocationTitlesIndex, type Logger, type LoginBody, type LogoutBody, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type OfficeLocation, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicCompanyDetail, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type ReadReceipt, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, type SalaryCompany, type SalaryDetailQuery, type SalaryLocation, type SalarySkill, type SalaryTitle, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type SendWorkEmailBody, type Seniority, type SkillLocationSalary, type SkillLocationsIndex, type SkillSalaryDetail, type StartAboutApplicationBody, type StartConversationBody, type StorageMode, type StorefrontPagination, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyResolution, type ThreadMessagesQuery, type TitleLocationSalary, type TitleLocationsIndex, type TitleSalaryDetail, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };