@cavuno/board 1.21.1 → 1.23.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.ts CHANGED
@@ -12,6 +12,42 @@ interface components {
12
12
  */
13
13
  admin: string;
14
14
  };
15
+ Alert: {
16
+ /** @description Job-alert preference ID — also the path key. */
17
+ id: string;
18
+ /** @enum {string} */
19
+ object: "alert";
20
+ label: string | null;
21
+ /** @enum {string} */
22
+ frequency: "daily" | "weekly";
23
+ isActive: boolean;
24
+ filters: {
25
+ jobFunctions: string[];
26
+ seniorityLevels: string[];
27
+ remoteOptions: string[];
28
+ placeIds: string[];
29
+ salaryMin: number | null;
30
+ salaryMax: number | null;
31
+ salaryCurrency: string | null;
32
+ };
33
+ /**
34
+ * Format: date-time
35
+ * @description When this alert last dispatched a digest, or null.
36
+ */
37
+ lastSentAt: string | null;
38
+ };
39
+ AlertBody: {
40
+ label?: string;
41
+ /** @enum {string} */
42
+ frequency: "daily" | "weekly";
43
+ jobFunctions?: string[];
44
+ seniorityLevels?: string[];
45
+ remoteOptions?: string[];
46
+ placeIds?: string[];
47
+ salaryMin?: number | null;
48
+ salaryMax?: number | null;
49
+ salaryCurrency?: string | null;
50
+ };
15
51
  ApiKey: {
16
52
  /** @description Unique identifier for the object. */
17
53
  id: string;
@@ -37,6 +73,40 @@ interface components {
37
73
  /** @description Time at which the key expires, or `null` if the key has no expiry. Unix epoch in milliseconds. */
38
74
  expiresAt: number | null;
39
75
  };
76
+ Application: {
77
+ /** @description Application ID — the `:applicationId` path key. */
78
+ id: string;
79
+ /** @enum {string} */
80
+ object: "application";
81
+ /**
82
+ * @description Coarse candidate-facing status derived from the employer pipeline stage.
83
+ * @enum {string}
84
+ */
85
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
86
+ /** Format: date-time */
87
+ appliedAt: string;
88
+ /** Format: date-time */
89
+ updatedAt: string;
90
+ coverNote: string | null;
91
+ candidateName: string | null;
92
+ candidateEmail: string | null;
93
+ candidateLocation: string | null;
94
+ candidateHeadline: string | null;
95
+ resumeFilename: string | null;
96
+ job: {
97
+ id: string;
98
+ title: string;
99
+ slug: string | null;
100
+ companySlug: string | null;
101
+ companyName: string | null;
102
+ } | null;
103
+ };
104
+ ApplyBody: {
105
+ name?: string;
106
+ /** Format: email */
107
+ email?: string;
108
+ coverNote?: string;
109
+ };
40
110
  AuditLogEntry: {
41
111
  /** @description Unique identifier for the object. */
42
112
  id: string;
@@ -99,6 +169,30 @@ interface components {
99
169
  resourceId: string;
100
170
  })[];
101
171
  };
172
+ Block: {
173
+ /** @enum {string} */
174
+ object: "block";
175
+ /** @enum {boolean} */
176
+ blocked: true;
177
+ };
178
+ BlockStatus: {
179
+ /** @enum {string} */
180
+ object: "block_status";
181
+ blocked: boolean;
182
+ };
183
+ BlockUserBody: {
184
+ boardUserId: string;
185
+ };
186
+ BlockedUser: {
187
+ id: string;
188
+ /** @enum {string} */
189
+ object: "blocked_user";
190
+ boardUserId: string;
191
+ displayName: string;
192
+ avatarUrl: string | null;
193
+ /** Format: date-time */
194
+ createdAt: string;
195
+ };
102
196
  BlogAuthor: {
103
197
  /** @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}`). */
104
198
  id: string;
@@ -648,6 +742,43 @@ interface components {
648
742
  ConfirmWorkEmailBody: {
649
743
  token: string;
650
744
  };
745
+ Conversation: {
746
+ id: string;
747
+ /** @enum {string} */
748
+ object: "conversation";
749
+ /** Format: date-time */
750
+ lastMessageAt: string;
751
+ lastMessageSnippet: string;
752
+ lastMessageAuthorBoardUserId: string;
753
+ /** Format: date-time */
754
+ archivedAt: string | null;
755
+ hasUnread: boolean;
756
+ counterparty: components["schemas"]["ConversationCounterparty"];
757
+ };
758
+ ConversationArchive: {
759
+ /** @enum {string} */
760
+ object: "conversation_archive";
761
+ /** Format: date-time */
762
+ archivedAt: string | null;
763
+ };
764
+ ConversationCounterparty: {
765
+ boardUserId: string;
766
+ displayName: string;
767
+ avatarUrl: string | null;
768
+ companyName: string | null;
769
+ handle: string | null;
770
+ companySlug: string | null;
771
+ };
772
+ ConversationDetail: components["schemas"]["Conversation"] & {
773
+ /** @enum {string} */
774
+ viewerRole: "employer" | "candidate";
775
+ viewerLastReadMessageId: string | null;
776
+ };
777
+ ConversationRef: {
778
+ /** @enum {string} */
779
+ object: "conversation_ref";
780
+ conversationId: string | null;
781
+ };
651
782
  CreateAuthorBody: {
652
783
  /** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
653
784
  slug?: string;
@@ -1002,6 +1133,9 @@ interface components {
1002
1133
  /** @description Space-separated list of scopes the client may request. */
1003
1134
  scope: string;
1004
1135
  };
1136
+ EditMessageBody: {
1137
+ body: string;
1138
+ };
1005
1139
  EmployerApplicant: {
1006
1140
  id: string;
1007
1141
  /** @enum {string} */
@@ -1900,6 +2034,35 @@ interface components {
1900
2034
  */
1901
2035
  purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
1902
2036
  };
2037
+ Message: {
2038
+ id: string;
2039
+ /** @enum {string} */
2040
+ object: "message";
2041
+ conversationId: string;
2042
+ authorBoardUserId: string;
2043
+ recipientBoardUserId: string;
2044
+ body: string;
2045
+ author: components["schemas"]["MessageAuthor"];
2046
+ /** Format: date-time */
2047
+ sentAt: string;
2048
+ /** Format: date-time */
2049
+ editedAt: string | null;
2050
+ /** Format: date-time */
2051
+ deletedAt: string | null;
2052
+ /** Format: date-time */
2053
+ readAt: string | null;
2054
+ };
2055
+ MessageAuthor: {
2056
+ displayName: string;
2057
+ avatarUrl: string | null;
2058
+ companyName: string | null;
2059
+ };
2060
+ ModerationReport: {
2061
+ /** @enum {string} */
2062
+ object: "moderation_report";
2063
+ id: string;
2064
+ blocked: boolean;
2065
+ };
1903
2066
  MoveApplicantStageBody: {
1904
2067
  /** @description The target stage id. */
1905
2068
  stageId: string;
@@ -2517,6 +2680,12 @@ interface components {
2517
2680
  */
2518
2681
  expiresAt?: string | null;
2519
2682
  };
2683
+ ReadReceipt: {
2684
+ /** @enum {string} */
2685
+ object: "read_receipt";
2686
+ /** Format: date-time */
2687
+ markedAt: string;
2688
+ };
2520
2689
  RedirectResolution: {
2521
2690
  /** @enum {string} */
2522
2691
  object: "redirect_resolution";
@@ -2546,6 +2715,14 @@ interface components {
2546
2715
  /** @description Every stage id of the job, in the new order. */
2547
2716
  orderedStageIds: string[];
2548
2717
  };
2718
+ ReplyBody: {
2719
+ body: string;
2720
+ };
2721
+ ReportBody: {
2722
+ /** @enum {string} */
2723
+ reason: "spam" | "harassment" | "misrepresentation" | "other";
2724
+ freeText?: string;
2725
+ };
2549
2726
  ResourceLinks: {
2550
2727
  /**
2551
2728
  * Format: uri
@@ -2558,6 +2735,26 @@ interface components {
2558
2735
  */
2559
2736
  admin: string;
2560
2737
  };
2738
+ Resume: {
2739
+ /** @enum {string} */
2740
+ object: "resume";
2741
+ /**
2742
+ * @description Async parse state; poll GET /me/resume until parsed or failed.
2743
+ * @enum {string|null}
2744
+ */
2745
+ parseStatus: "parsing" | "parsed" | "failed" | null;
2746
+ parseFailureReason: string | null;
2747
+ /** Format: date-time */
2748
+ parsedAt: string | null;
2749
+ keepResumeOnFile: boolean | null;
2750
+ hasResumeOnFile: boolean;
2751
+ file: {
2752
+ /** @description Short-lived signed download URL. */
2753
+ url: string;
2754
+ contentType: string;
2755
+ sizeBytes: number;
2756
+ } | null;
2757
+ };
2561
2758
  RevokeRequest: {
2562
2759
  /** @description The access or refresh token to revoke. */
2563
2760
  token: string;
@@ -2897,6 +3094,14 @@ interface components {
2897
3094
  boardMedianMax: number | null;
2898
3095
  currency: string;
2899
3096
  };
3097
+ StartAboutApplicationBody: {
3098
+ applicationId: string;
3099
+ body: string;
3100
+ };
3101
+ StartConversationBody: {
3102
+ candidateBoardUserId: string;
3103
+ body: string;
3104
+ };
2900
3105
  TalentDirectoryEntry: {
2901
3106
  /** @enum {string} */
2902
3107
  object: "talent_directory_entry";
@@ -3160,12 +3365,25 @@ interface components {
3160
3365
  /** @description Space-separated list of scopes granted on the issued token. */
3161
3366
  scope: string;
3162
3367
  };
3368
+ UnreadCount: {
3369
+ /** @enum {string} */
3370
+ object: "unread_count";
3371
+ count: number;
3372
+ };
3163
3373
  UnsubscribeBody: {
3164
3374
  boardUserId: string;
3165
3375
  /** @enum {string} */
3166
3376
  channel: "messageEmails" | "applicationEmails";
3167
3377
  token: string;
3168
3378
  };
3379
+ UpdateApplicationFactsBody: {
3380
+ candidateName?: string;
3381
+ /** Format: email */
3382
+ candidateEmail?: string;
3383
+ candidateHeadline?: string;
3384
+ candidateLocation?: string;
3385
+ coverNote?: string;
3386
+ };
3169
3387
  UpdateAuthorBody: {
3170
3388
  /** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
3171
3389
  slug?: string;
@@ -3421,6 +3639,9 @@ interface components {
3421
3639
  /** @description Slug of the account's current plan. */
3422
3640
  plan: string;
3423
3641
  };
3642
+ VerifyEmailOtpBody: {
3643
+ code: string;
3644
+ };
3424
3645
  };
3425
3646
  responses: never;
3426
3647
  parameters: never;
@@ -3644,7 +3865,7 @@ declare function isConflict(e: unknown): e is BoardApiError;
3644
3865
  * constant because the package is platform-neutral and cannot read
3645
3866
  * package.json at runtime.
3646
3867
  */
3647
- declare const SDK_VERSION = "1.21.1";
3868
+ declare const SDK_VERSION = "1.23.0";
3648
3869
 
3649
3870
  type BoardUser = Schemas['BoardUser'];
3650
3871
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -3858,6 +4079,82 @@ type CandidateAvatar = Schemas['CandidateAvatar'];
3858
4079
  type NotificationPreference = Schemas['NotificationPreference'];
3859
4080
  type UpdateNotificationPreferenceBody = Schemas['UpdateNotificationPreferenceBody'];
3860
4081
  type UnsubscribeBody = Schemas['UnsubscribeBody'];
4082
+ /** One inbox row — the counterparty identity is live-resolved. */
4083
+ type Conversation = Schemas['Conversation'];
4084
+ /** A conversation header — adds the viewer's role + last-read pointer. */
4085
+ type ConversationDetail = Schemas['ConversationDetail'];
4086
+ /** One message in a thread. `body` is `''` when unsent (tombstoned). */
4087
+ type Message = Schemas['Message'];
4088
+ /** The distinct-unread-thread count for the inbox badge. */
4089
+ type UnreadCount = Schemas['UnreadCount'];
4090
+ /** Query for `board.me.conversations.list`. */
4091
+ type ConversationsListQuery = {
4092
+ /** `true` for the archived view; omit/false for the main inbox. */
4093
+ archived?: boolean;
4094
+ cursor?: string;
4095
+ /** 1–100. */
4096
+ limit?: number;
4097
+ };
4098
+ /** One of the authenticated board user's job-alert preferences. */
4099
+ type Alert = Schemas['Alert'];
4100
+ /** Create/replace body for `board.me.alerts.create` / `board.me.alerts.update`. */
4101
+ type AlertBody = Schemas['AlertBody'];
4102
+ /** The candidate's own view of an application they submitted. */
4103
+ type Application = Schemas['Application'];
4104
+ /** Body for `board.jobs.apply` (name/email omitted when signed in). */
4105
+ type ApplyBody = Schemas['ApplyBody'];
4106
+ /** Merge-patch body for `board.me.applications.updateFacts`. */
4107
+ type UpdateApplicationFactsBody = Schemas['UpdateApplicationFactsBody'];
4108
+ /** Query for `board.me.applications.list`. */
4109
+ type ApplicationsListQuery = {
4110
+ cursor?: string;
4111
+ /** 1–100. */
4112
+ limit?: number;
4113
+ };
4114
+ /** Query for `board.me.conversations.listMessages`. */
4115
+ type ThreadMessagesQuery = {
4116
+ cursor?: string;
4117
+ /** 1–200. */
4118
+ limit?: number;
4119
+ };
4120
+ /** Body for `board.me.conversations.start` (cold-initiate a candidate). */
4121
+ type StartConversationBody = Schemas['StartConversationBody'];
4122
+ /** Body for `board.me.conversations.startAboutApplication` (message an applicant). */
4123
+ type StartAboutApplicationBody = Schemas['StartAboutApplicationBody'];
4124
+ /** Body for `board.me.conversations.reply`. */
4125
+ type ReplyBody = Schemas['ReplyBody'];
4126
+ /** The result of `board.me.conversations.markRead`. */
4127
+ type ReadReceipt = Schemas['ReadReceipt'];
4128
+ /** The result of `board.me.conversations.{archive,unarchive}`. */
4129
+ type ConversationArchive = Schemas['ConversationArchive'];
4130
+ /** Body for `board.me.messages.edit`. */
4131
+ type EditMessageBody = Schemas['EditMessageBody'];
4132
+ /** Body for `board.me.messages.report`. */
4133
+ type ReportBody = Schemas['ReportBody'];
4134
+ /** The result of `board.me.messages.report` (with the auto-block outcome). */
4135
+ type ModerationReport = Schemas['ModerationReport'];
4136
+ /** One blocked user from `board.me.blocks.list`. */
4137
+ type BlockedUser = Schemas['BlockedUser'];
4138
+ /** Body for `board.me.blocks.create`. */
4139
+ type BlockUserBody = Schemas['BlockUserBody'];
4140
+ /** The result of `board.me.blocks.create`. */
4141
+ type Block = Schemas['Block'];
4142
+ /** The result of `board.me.blocks.status`. */
4143
+ type BlockStatus = Schemas['BlockStatus'];
4144
+ /** The result of `board.me.conversations.findExisting`. */
4145
+ type ConversationRef = Schemas['ConversationRef'];
4146
+ /** Query for `board.me.conversations.findExisting`. */
4147
+ type FindExistingConversationQuery = {
4148
+ candidateBoardUserId: string;
4149
+ };
4150
+ /** The candidate's resume state (async parse status + stored file). */
4151
+ type Resume = Schemas['Resume'];
4152
+ /** Options for `board.me.resume.upload`. */
4153
+ type ResumeUploadOptions = {
4154
+ keepResumeOnFile?: boolean;
4155
+ importMode?: 'append_only' | 'replace_all';
4156
+ confirmReplaceAll?: boolean;
4157
+ };
3861
4158
  /** The caller's tie to a company, with a computed claim `status`. */
3862
4159
  type CompanyMembership = Schemas['CompanyMembership'];
3863
4160
  /** The full editable company (`board.me.companies.update` echoes this). */
@@ -4252,6 +4549,68 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4252
4549
  };
4253
4550
  description?: string | null;
4254
4551
  }>>;
4552
+ apply(jobSlug: string, body?: ApplyBody, options?: FetchOptions): Promise<{
4553
+ id: string;
4554
+ object: "application";
4555
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
4556
+ appliedAt: string;
4557
+ updatedAt: string;
4558
+ coverNote: string | null;
4559
+ candidateName: string | null;
4560
+ candidateEmail: string | null;
4561
+ candidateLocation: string | null;
4562
+ candidateHeadline: string | null;
4563
+ resumeFilename: string | null;
4564
+ job: {
4565
+ id: string;
4566
+ title: string;
4567
+ slug: string | null;
4568
+ companySlug: string | null;
4569
+ companyName: string | null;
4570
+ } | null;
4571
+ }>;
4572
+ uploadApplicationResume(jobSlug: string, file: Blob, opts?: {
4573
+ applicationId?: string;
4574
+ }, options?: FetchOptions): Promise<{
4575
+ id: string;
4576
+ object: "application";
4577
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
4578
+ appliedAt: string;
4579
+ updatedAt: string;
4580
+ coverNote: string | null;
4581
+ candidateName: string | null;
4582
+ candidateEmail: string | null;
4583
+ candidateLocation: string | null;
4584
+ candidateHeadline: string | null;
4585
+ resumeFilename: string | null;
4586
+ job: {
4587
+ id: string;
4588
+ title: string;
4589
+ slug: string | null;
4590
+ companySlug: string | null;
4591
+ companyName: string | null;
4592
+ } | null;
4593
+ }>;
4594
+ myApplication(jobSlug: string, options?: FetchOptions): Promise<{
4595
+ id: string;
4596
+ object: "application";
4597
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
4598
+ appliedAt: string;
4599
+ updatedAt: string;
4600
+ coverNote: string | null;
4601
+ candidateName: string | null;
4602
+ candidateEmail: string | null;
4603
+ candidateLocation: string | null;
4604
+ candidateHeadline: string | null;
4605
+ resumeFilename: string | null;
4606
+ job: {
4607
+ id: string;
4608
+ title: string;
4609
+ slug: string | null;
4610
+ companySlug: string | null;
4611
+ companyName: string | null;
4612
+ } | null;
4613
+ }>;
4255
4614
  };
4256
4615
  embed: {
4257
4616
  jobs(query?: EmbedJobsQuery, options?: FetchOptions): Promise<ListEnvelope<{
@@ -4613,6 +4972,10 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4613
4972
  }>;
4614
4973
  logout(body?: LogoutBody, options?: FetchOptions): Promise<void>;
4615
4974
  verifyEmail(body: VerifyEmailBody, options?: FetchOptions): Promise<void>;
4975
+ verifyEmailWithCode(body: {
4976
+ code: string;
4977
+ }, options?: FetchOptions): Promise<void>;
4978
+ resendVerification(options?: FetchOptions): Promise<void>;
4616
4979
  forgotPassword(body: ForgotPasswordBody, options?: FetchOptions): Promise<void>;
4617
4980
  resetPassword(body: ResetPasswordBody, options?: FetchOptions): Promise<void>;
4618
4981
  requestMagicLink(body: RequestMagicLinkBody, options?: FetchOptions): Promise<void>;
@@ -5206,6 +5569,169 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
5206
5569
  reorder(slug: string, body: ReorderPipelineStagesBody, options?: FetchOptions): Promise<void>;
5207
5570
  };
5208
5571
  };
5572
+ alerts: {
5573
+ list(options?: FetchOptions): Promise<ListEnvelope<{
5574
+ id: string;
5575
+ object: "alert";
5576
+ label: string | null;
5577
+ frequency: "daily" | "weekly";
5578
+ isActive: boolean;
5579
+ filters: {
5580
+ jobFunctions: string[];
5581
+ seniorityLevels: string[];
5582
+ remoteOptions: string[];
5583
+ placeIds: string[];
5584
+ salaryMin: number | null;
5585
+ salaryMax: number | null;
5586
+ salaryCurrency: string | null;
5587
+ };
5588
+ lastSentAt: string | null;
5589
+ }>>;
5590
+ create(body: AlertBody, options?: FetchOptions): Promise<{
5591
+ id: string;
5592
+ object: "alert";
5593
+ label: string | null;
5594
+ frequency: "daily" | "weekly";
5595
+ isActive: boolean;
5596
+ filters: {
5597
+ jobFunctions: string[];
5598
+ seniorityLevels: string[];
5599
+ remoteOptions: string[];
5600
+ placeIds: string[];
5601
+ salaryMin: number | null;
5602
+ salaryMax: number | null;
5603
+ salaryCurrency: string | null;
5604
+ };
5605
+ lastSentAt: string | null;
5606
+ }>;
5607
+ retrieve(alertId: string, options?: FetchOptions): Promise<{
5608
+ id: string;
5609
+ object: "alert";
5610
+ label: string | null;
5611
+ frequency: "daily" | "weekly";
5612
+ isActive: boolean;
5613
+ filters: {
5614
+ jobFunctions: string[];
5615
+ seniorityLevels: string[];
5616
+ remoteOptions: string[];
5617
+ placeIds: string[];
5618
+ salaryMin: number | null;
5619
+ salaryMax: number | null;
5620
+ salaryCurrency: string | null;
5621
+ };
5622
+ lastSentAt: string | null;
5623
+ }>;
5624
+ update(alertId: string, body: AlertBody, options?: FetchOptions): Promise<{
5625
+ id: string;
5626
+ object: "alert";
5627
+ label: string | null;
5628
+ frequency: "daily" | "weekly";
5629
+ isActive: boolean;
5630
+ filters: {
5631
+ jobFunctions: string[];
5632
+ seniorityLevels: string[];
5633
+ remoteOptions: string[];
5634
+ placeIds: string[];
5635
+ salaryMin: number | null;
5636
+ salaryMax: number | null;
5637
+ salaryCurrency: string | null;
5638
+ };
5639
+ lastSentAt: string | null;
5640
+ }>;
5641
+ remove(alertId: string, options?: FetchOptions): Promise<void>;
5642
+ };
5643
+ applications: {
5644
+ list(query?: ApplicationsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
5645
+ id: string;
5646
+ object: "application";
5647
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
5648
+ appliedAt: string;
5649
+ updatedAt: string;
5650
+ coverNote: string | null;
5651
+ candidateName: string | null;
5652
+ candidateEmail: string | null;
5653
+ candidateLocation: string | null;
5654
+ candidateHeadline: string | null;
5655
+ resumeFilename: string | null;
5656
+ job: {
5657
+ id: string;
5658
+ title: string;
5659
+ slug: string | null;
5660
+ companySlug: string | null;
5661
+ companyName: string | null;
5662
+ } | null;
5663
+ }>>;
5664
+ retrieve(applicationId: string, options?: FetchOptions): Promise<{
5665
+ id: string;
5666
+ object: "application";
5667
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
5668
+ appliedAt: string;
5669
+ updatedAt: string;
5670
+ coverNote: string | null;
5671
+ candidateName: string | null;
5672
+ candidateEmail: string | null;
5673
+ candidateLocation: string | null;
5674
+ candidateHeadline: string | null;
5675
+ resumeFilename: string | null;
5676
+ job: {
5677
+ id: string;
5678
+ title: string;
5679
+ slug: string | null;
5680
+ companySlug: string | null;
5681
+ companyName: string | null;
5682
+ } | null;
5683
+ }>;
5684
+ updateFacts(applicationId: string, body: UpdateApplicationFactsBody, options?: FetchOptions): Promise<{
5685
+ id: string;
5686
+ object: "application";
5687
+ status: "applied" | "interviewing" | "negotiation" | "hired" | "archived";
5688
+ appliedAt: string;
5689
+ updatedAt: string;
5690
+ coverNote: string | null;
5691
+ candidateName: string | null;
5692
+ candidateEmail: string | null;
5693
+ candidateLocation: string | null;
5694
+ candidateHeadline: string | null;
5695
+ resumeFilename: string | null;
5696
+ job: {
5697
+ id: string;
5698
+ title: string;
5699
+ slug: string | null;
5700
+ companySlug: string | null;
5701
+ companyName: string | null;
5702
+ } | null;
5703
+ }>;
5704
+ withdraw(applicationId: string, options?: FetchOptions): Promise<void>;
5705
+ };
5706
+ resume: {
5707
+ upload(file: Blob, opts?: ResumeUploadOptions, options?: FetchOptions): Promise<{
5708
+ object: "resume";
5709
+ parseStatus: "parsing" | "parsed" | "failed" | null;
5710
+ parseFailureReason: string | null;
5711
+ parsedAt: string | null;
5712
+ keepResumeOnFile: boolean | null;
5713
+ hasResumeOnFile: boolean;
5714
+ file: {
5715
+ url: string;
5716
+ contentType: string;
5717
+ sizeBytes: number;
5718
+ } | null;
5719
+ }>;
5720
+ retrieve(options?: FetchOptions): Promise<{
5721
+ object: "resume";
5722
+ parseStatus: "parsing" | "parsed" | "failed" | null;
5723
+ parseFailureReason: string | null;
5724
+ parsedAt: string | null;
5725
+ keepResumeOnFile: boolean | null;
5726
+ hasResumeOnFile: boolean;
5727
+ file: {
5728
+ url: string;
5729
+ contentType: string;
5730
+ sizeBytes: number;
5731
+ } | null;
5732
+ }>;
5733
+ delete(options?: FetchOptions): Promise<void>;
5734
+ };
5209
5735
  savedJobs: {
5210
5736
  list(query?: SavedJobsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
5211
5737
  id: string;
@@ -5223,6 +5749,155 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
5223
5749
  }>;
5224
5750
  unsave(jobId: string, query?: Record<string, never>, options?: FetchOptions): Promise<void>;
5225
5751
  };
5752
+ conversations: {
5753
+ list(query?: ConversationsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
5754
+ id: string;
5755
+ object: "conversation";
5756
+ lastMessageAt: string;
5757
+ lastMessageSnippet: string;
5758
+ lastMessageAuthorBoardUserId: string;
5759
+ archivedAt: string | null;
5760
+ hasUnread: boolean;
5761
+ counterparty: components["schemas"]["ConversationCounterparty"];
5762
+ }>>;
5763
+ unreadCount(options?: FetchOptions): Promise<{
5764
+ object: "unread_count";
5765
+ count: number;
5766
+ }>;
5767
+ retrieve(id: string, options?: FetchOptions): Promise<{
5768
+ id: string;
5769
+ object: "conversation";
5770
+ lastMessageAt: string;
5771
+ lastMessageSnippet: string;
5772
+ lastMessageAuthorBoardUserId: string;
5773
+ archivedAt: string | null;
5774
+ hasUnread: boolean;
5775
+ counterparty: components["schemas"]["ConversationCounterparty"];
5776
+ } & {
5777
+ viewerRole: "employer" | "candidate";
5778
+ viewerLastReadMessageId: string | null;
5779
+ }>;
5780
+ listMessages(id: string, query?: ThreadMessagesQuery, options?: FetchOptions): Promise<ListEnvelope<{
5781
+ id: string;
5782
+ object: "message";
5783
+ conversationId: string;
5784
+ authorBoardUserId: string;
5785
+ recipientBoardUserId: string;
5786
+ body: string;
5787
+ author: components["schemas"]["MessageAuthor"];
5788
+ sentAt: string;
5789
+ editedAt: string | null;
5790
+ deletedAt: string | null;
5791
+ readAt: string | null;
5792
+ }>>;
5793
+ start(body: StartConversationBody, options?: FetchOptions): Promise<{
5794
+ id: string;
5795
+ object: "message";
5796
+ conversationId: string;
5797
+ authorBoardUserId: string;
5798
+ recipientBoardUserId: string;
5799
+ body: string;
5800
+ author: components["schemas"]["MessageAuthor"];
5801
+ sentAt: string;
5802
+ editedAt: string | null;
5803
+ deletedAt: string | null;
5804
+ readAt: string | null;
5805
+ }>;
5806
+ startAboutApplication(body: StartAboutApplicationBody, options?: FetchOptions): Promise<{
5807
+ id: string;
5808
+ object: "message";
5809
+ conversationId: string;
5810
+ authorBoardUserId: string;
5811
+ recipientBoardUserId: string;
5812
+ body: string;
5813
+ author: components["schemas"]["MessageAuthor"];
5814
+ sentAt: string;
5815
+ editedAt: string | null;
5816
+ deletedAt: string | null;
5817
+ readAt: string | null;
5818
+ }>;
5819
+ reply(id: string, body: ReplyBody, options?: FetchOptions): Promise<{
5820
+ id: string;
5821
+ object: "message";
5822
+ conversationId: string;
5823
+ authorBoardUserId: string;
5824
+ recipientBoardUserId: string;
5825
+ body: string;
5826
+ author: components["schemas"]["MessageAuthor"];
5827
+ sentAt: string;
5828
+ editedAt: string | null;
5829
+ deletedAt: string | null;
5830
+ readAt: string | null;
5831
+ }>;
5832
+ markRead(id: string, options?: FetchOptions): Promise<{
5833
+ object: "read_receipt";
5834
+ markedAt: string;
5835
+ }>;
5836
+ archive(id: string, options?: FetchOptions): Promise<{
5837
+ object: "conversation_archive";
5838
+ archivedAt: string | null;
5839
+ }>;
5840
+ unarchive(id: string, options?: FetchOptions): Promise<{
5841
+ object: "conversation_archive";
5842
+ archivedAt: string | null;
5843
+ }>;
5844
+ findExisting(query: FindExistingConversationQuery, options?: FetchOptions): Promise<{
5845
+ object: "conversation_ref";
5846
+ conversationId: string | null;
5847
+ }>;
5848
+ };
5849
+ blocks: {
5850
+ list(options?: FetchOptions): Promise<ListEnvelope<{
5851
+ id: string;
5852
+ object: "blocked_user";
5853
+ boardUserId: string;
5854
+ displayName: string;
5855
+ avatarUrl: string | null;
5856
+ createdAt: string;
5857
+ }>>;
5858
+ create(body: BlockUserBody, options?: FetchOptions): Promise<{
5859
+ object: "block";
5860
+ blocked: true;
5861
+ }>;
5862
+ remove(boardUserId: string, options?: FetchOptions): Promise<void>;
5863
+ status(boardUserId: string, options?: FetchOptions): Promise<{
5864
+ object: "block_status";
5865
+ blocked: boolean;
5866
+ }>;
5867
+ };
5868
+ messages: {
5869
+ edit(id: string, body: EditMessageBody, options?: FetchOptions): Promise<{
5870
+ id: string;
5871
+ object: "message";
5872
+ conversationId: string;
5873
+ authorBoardUserId: string;
5874
+ recipientBoardUserId: string;
5875
+ body: string;
5876
+ author: components["schemas"]["MessageAuthor"];
5877
+ sentAt: string;
5878
+ editedAt: string | null;
5879
+ deletedAt: string | null;
5880
+ readAt: string | null;
5881
+ }>;
5882
+ unsend(id: string, options?: FetchOptions): Promise<{
5883
+ id: string;
5884
+ object: "message";
5885
+ conversationId: string;
5886
+ authorBoardUserId: string;
5887
+ recipientBoardUserId: string;
5888
+ body: string;
5889
+ author: components["schemas"]["MessageAuthor"];
5890
+ sentAt: string;
5891
+ editedAt: string | null;
5892
+ deletedAt: string | null;
5893
+ readAt: string | null;
5894
+ }>;
5895
+ report(id: string, body: ReportBody, options?: FetchOptions): Promise<{
5896
+ object: "moderation_report";
5897
+ id: string;
5898
+ blocked: boolean;
5899
+ }>;
5900
+ };
5226
5901
  };
5227
5902
  password: {
5228
5903
  verify(password: string, options?: FetchOptions): Promise<BoardAccessGrant>;
@@ -5922,4 +6597,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
5922
6597
  };
5923
6598
  type BoardSdk = ReturnType<typeof createBoardClient>;
5924
6599
 
5925
- export { ACCESS_TOKEN_KEY, type AddApplicantNoteBody, 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, 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 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 };
6600
+ export { ACCESS_TOKEN_KEY, 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 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 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 };