@cavuno/board 1.20.0 → 1.21.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
@@ -1,5 +1,9 @@
1
1
  interface components {
2
2
  schemas: {
3
+ AddApplicantNoteBody: {
4
+ /** @description The note text. */
5
+ body: string;
6
+ };
3
7
  /** @description Links related to this resource. List responses only carry the `admin` URL because the public URL needs the company slug, which list-shape Convex projections do not fan out to. */
4
8
  AdminOnlyResourceLinks: {
5
9
  /**
@@ -325,6 +329,14 @@ interface components {
325
329
  displayName: string | null;
326
330
  emailVerified: boolean;
327
331
  };
332
+ BulkMoveApplicantsBody: {
333
+ applicationIds: string[];
334
+ /** @description The target stage id. */
335
+ stageId: string;
336
+ };
337
+ BulkRejectApplicantsBody: {
338
+ applicationIds: string[];
339
+ };
328
340
  CandidateAvatar: {
329
341
  /** @enum {string} */
330
342
  object: "candidate_avatar";
@@ -392,6 +404,14 @@ interface components {
392
404
  name: string;
393
405
  jobSkillId: string | null;
394
406
  };
407
+ ClaimableCompany: {
408
+ id: string;
409
+ /** @enum {string} */
410
+ object: "claimable_company";
411
+ name: string;
412
+ slug: string;
413
+ website: string | null;
414
+ };
395
415
  CompaniesBatchRequest: {
396
416
  /** @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. */
397
417
  operations: ({
@@ -482,6 +502,24 @@ interface components {
482
502
  /** @description Source slug for the market. Use it as the `:market` segment of the market-scoped company browse. */
483
503
  slug: string;
484
504
  };
505
+ CompanyMembership: {
506
+ id: string;
507
+ /** @enum {string} */
508
+ object: "company_membership";
509
+ /** @enum {string} */
510
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
511
+ role: string;
512
+ workEmail: string | null;
513
+ /** Format: date-time */
514
+ workEmailVerifiedAt: string | null;
515
+ company: {
516
+ id: string;
517
+ name: string;
518
+ slug: string | null;
519
+ website: string | null;
520
+ logoUrl: string | null;
521
+ };
522
+ };
485
523
  CompanyPublic: {
486
524
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the company endpoints (e.g. `GET /v1/companies/{id}`). */
487
525
  id: string;
@@ -607,6 +645,9 @@ interface components {
607
645
  public?: string | null;
608
646
  };
609
647
  };
648
+ ConfirmWorkEmailBody: {
649
+ token: string;
650
+ };
610
651
  CreateAuthorBody: {
611
652
  /** @description URL-friendly slug for the author. Auto-generated from `name` when omitted. */
612
653
  slug?: string;
@@ -877,6 +918,12 @@ interface components {
877
918
  };
878
919
  colorMode?: string;
879
920
  };
921
+ CreatePipelineStageBody: {
922
+ /** @description The job whose pipeline gains the stage. */
923
+ jobId: string;
924
+ /** @description The stage label. */
925
+ label: string;
926
+ };
880
927
  CreateTagBody: {
881
928
  /** @description URL-friendly slug for the tag. Auto-generated from `name` when omitted. */
882
929
  slug?: string;
@@ -955,6 +1002,405 @@ interface components {
955
1002
  /** @description Space-separated list of scopes the client may request. */
956
1003
  scope: string;
957
1004
  };
1005
+ EmployerApplicant: {
1006
+ id: string;
1007
+ /** @enum {string} */
1008
+ object: "employer_applicant";
1009
+ jobId: string;
1010
+ candidateBoardUserId: string | null;
1011
+ candidateProfileId: string | null;
1012
+ candidateProfileHandle: string | null;
1013
+ candidateName: string | null;
1014
+ candidateEmail: string | null;
1015
+ candidateHeadline: string | null;
1016
+ candidateLocation: string | null;
1017
+ coverNote: string | null;
1018
+ resumeFilename: string | null;
1019
+ /** @description A short-lived signed URL to the uploaded resume, or `null`. */
1020
+ resumeUrl: string | null;
1021
+ stage: string;
1022
+ /** @description How the application arrived (e.g. `native_apply`). */
1023
+ source: string;
1024
+ /** Format: date-time */
1025
+ appliedAt: string;
1026
+ timeline: components["schemas"]["EmployerApplicantTimelineEntry"][];
1027
+ };
1028
+ EmployerApplicantTimelineEntry: {
1029
+ id: string;
1030
+ /** @description The activity kind (e.g. `stage_changed`, `note_created`, `application_created`). */
1031
+ type: string;
1032
+ actorBoardUserId: string | null;
1033
+ actorName: string | null;
1034
+ noteId: string | null;
1035
+ /** @description The note text for a `note_created` entry, else `null`. */
1036
+ noteBody: string | null;
1037
+ fromStage: string | null;
1038
+ toStage: string | null;
1039
+ /** Format: date-time */
1040
+ createdAt: string;
1041
+ };
1042
+ EmployerBillingOption: {
1043
+ id: string;
1044
+ /** @enum {string} */
1045
+ object: "employer_billing_option";
1046
+ /** @enum {string} */
1047
+ type: "subscription" | "order";
1048
+ planId: string;
1049
+ planName: string;
1050
+ /** @enum {string} */
1051
+ planKind: "subscription" | "one_time" | "bundle";
1052
+ jobsRemaining: number;
1053
+ jobsTotal: number;
1054
+ featuredRemaining: number;
1055
+ featuredTotal: number;
1056
+ /**
1057
+ * Format: date-time
1058
+ * @description When a subscription renews, or `null` for one-time orders.
1059
+ */
1060
+ renewsAt: string | null;
1061
+ };
1062
+ EmployerCheckout: {
1063
+ /** @enum {string} */
1064
+ object: "employer_checkout";
1065
+ /** @enum {string} */
1066
+ status: "checkout" | "published" | "invoice_sent";
1067
+ /** @description The Stripe Checkout / hosted-invoice URL, or `null`. */
1068
+ checkoutUrl: string | null;
1069
+ jobId: string;
1070
+ jobSlug: string | null;
1071
+ };
1072
+ EmployerCheckoutBody: {
1073
+ billing: {
1074
+ /** @enum {string} */
1075
+ type: "new";
1076
+ planId: string;
1077
+ } | {
1078
+ /** @enum {string} */
1079
+ type: "order";
1080
+ planId: string;
1081
+ id: string;
1082
+ } | {
1083
+ /** @enum {string} */
1084
+ type: "subscription";
1085
+ planId: string;
1086
+ id: string;
1087
+ };
1088
+ invoiceBilling?: {
1089
+ billingName?: string;
1090
+ /** Format: email */
1091
+ email?: string;
1092
+ address?: {
1093
+ line1?: string;
1094
+ city?: string;
1095
+ postalCode?: string;
1096
+ country?: string;
1097
+ };
1098
+ taxId?: string;
1099
+ detailFields?: {
1100
+ name: string;
1101
+ value: string;
1102
+ }[];
1103
+ };
1104
+ isFeatured?: boolean;
1105
+ /**
1106
+ * Format: uri
1107
+ * @description Where Stripe returns the buyer on success. Defaults to the board's canonical employer pages.
1108
+ */
1109
+ successUrl?: string;
1110
+ /**
1111
+ * Format: uri
1112
+ * @description Where Stripe returns the buyer on cancel.
1113
+ */
1114
+ cancelUrl?: string;
1115
+ };
1116
+ EmployerCompany: {
1117
+ id: string;
1118
+ /** @enum {string} */
1119
+ object: "employer_company";
1120
+ name: string;
1121
+ slug: string;
1122
+ website: string | null;
1123
+ description: string | null;
1124
+ summary: string | null;
1125
+ xUrl: string | null;
1126
+ linkedinUrl: string | null;
1127
+ facebookUrl: string | null;
1128
+ logoUrl: string | null;
1129
+ };
1130
+ EmployerCreateJobBody: {
1131
+ /** @description Long-form description of the role. Up to 25,000 characters. */
1132
+ description: string;
1133
+ /** @description URL-friendly slug for the job. Auto-generated from `title` when omitted. */
1134
+ slug?: string;
1135
+ /**
1136
+ * @description Employment type of the role.
1137
+ * @enum {string}
1138
+ */
1139
+ employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
1140
+ /**
1141
+ * @description Whether the role is on-site, hybrid, or fully remote.
1142
+ * @enum {string}
1143
+ */
1144
+ remoteOption?: "on_site" | "hybrid" | "remote";
1145
+ /** @description Where remote candidates must hold work authorization. Each entry is the smallest relevant scope: `worldwide`, a `world_region` (EMEA / LATAM / NA / APAC), a `continent`, a `region`, a `subregion`, a `custom` group (e.g. `EU`), a `country` (ISO 3166-1 alpha-2), or a `subdivision` (ISO 3166-2). Subdivisions auto-imply their parent country in the derived `remoteWorkPermitCountryCodes` output. Worldwide is mutually exclusive with all other entries. The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-permits`. Pass `[]` to clear an existing constraint. */
1146
+ remotePermits?: {
1147
+ /** @enum {string} */
1148
+ type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1149
+ value: string;
1150
+ }[];
1151
+ /** @description Where remote candidates must be timezone-compatible. Each entry mirrors the `remotePermits` shape (`world_region`, `continent`, `region`, `subregion`, `country`) plus `timezone` (specific IANA name with optional `plusMinus` ±N hours expansion) and `all` (every timezone — equivalent of `worldwide` for permits). The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-timezones`. **When omitted on POST**, the server auto-derives this from `remotePermits` (or `[{all,all}]` if neither was provided). **PATCH never auto-re-derives** — once set, only an explicit replacement updates the stored value, even when `remotePermits` changes. Pass `[]` to clear an existing constraint. */
1152
+ remoteTimezones?: {
1153
+ /** @enum {string} */
1154
+ type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
1155
+ value: string;
1156
+ plusMinus?: number;
1157
+ }[];
1158
+ /**
1159
+ * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
1160
+ * @enum {string}
1161
+ */
1162
+ remoteSponsorship?: "yes" | "no" | "unknown";
1163
+ /**
1164
+ * @description Seniority level of the role.
1165
+ * @enum {string}
1166
+ */
1167
+ seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
1168
+ /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (normalized to `mailto:` form). */
1169
+ applicationUrl: string;
1170
+ /** @description Minimum salary, in `salaryCurrency` units. */
1171
+ salaryMin?: number;
1172
+ /** @description Maximum salary, in `salaryCurrency` units. */
1173
+ salaryMax?: number;
1174
+ /** @description Three-letter ISO 4217 currency code for `salaryMin` and `salaryMax`. */
1175
+ salaryCurrency?: string;
1176
+ /**
1177
+ * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
1178
+ * @enum {string}
1179
+ */
1180
+ salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
1181
+ /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
1182
+ educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
1183
+ /** @description Minimum required experience, expressed in months. */
1184
+ experienceMonths?: number;
1185
+ /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
1186
+ experienceInPlaceOfEducation?: boolean;
1187
+ /**
1188
+ * @description Period denominator for `inOfficeFrequency`.
1189
+ * @enum {string}
1190
+ */
1191
+ inOfficePeriod?: "per_week" | "per_month" | "per_year";
1192
+ /** @description How often the candidate must be in-office over `inOfficePeriod`. */
1193
+ inOfficeFrequency?: number;
1194
+ /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
1195
+ officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
1196
+ /** @description The job title. */
1197
+ title: string;
1198
+ };
1199
+ EmployerJob: components["schemas"]["EmployerJobSummary"] & {
1200
+ /** @description Long-form description of the role, or `null` if not specified. */
1201
+ description: string | null;
1202
+ /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
1203
+ applicationUrl: string | null;
1204
+ /** @description Hierarchical permit selection authored by the employer. The three `remoteWorkPermit*` and `remoteWorldwide` fields are read-only derived projections. */
1205
+ remotePermits: {
1206
+ type: string;
1207
+ value: string;
1208
+ }[];
1209
+ /** @description Read-only — derived from `remotePermits`. */
1210
+ remoteWorldwide: boolean | null;
1211
+ /** @description Hierarchical timezone selection. The flat `remoteAllowedTzOffsets` below is the read-only derived projection. */
1212
+ remoteTimezones: {
1213
+ type: string;
1214
+ value: string;
1215
+ plusMinus?: number;
1216
+ }[];
1217
+ /** @description Read-only — derived from `remoteTimezones`. UTC hour offsets. */
1218
+ remoteAllowedTzOffsets: number[];
1219
+ /** @description Read-only — derived from `remotePermits`. ISO 3166-1 alpha-2. */
1220
+ remoteWorkPermitCountryCodes: string[];
1221
+ /** @description Read-only — derived from `remotePermits`. ISO 3166-2. */
1222
+ remoteWorkPermitSubdivisionCodes: string[];
1223
+ /**
1224
+ * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
1225
+ * @enum {string}
1226
+ */
1227
+ remoteSponsorship: "yes" | "no" | "unknown";
1228
+ /** @description Required education credentials. */
1229
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
1230
+ /** @description Minimum required experience in months, or `null`. */
1231
+ experienceMonths: number | null;
1232
+ /** @description If `true`, equivalent experience may substitute for education. `null` if not specified. */
1233
+ experienceInPlaceOfEducation: boolean | null;
1234
+ /**
1235
+ * @description Period denominator for `inOfficeFrequency`, or `null`.
1236
+ * @enum {string|null}
1237
+ */
1238
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
1239
+ /** @description How often the candidate must be in-office, or `null`. */
1240
+ inOfficeFrequency: number | null;
1241
+ company: components["schemas"]["JobCompany"];
1242
+ /** @description Physical office locations associated with the job. */
1243
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
1244
+ };
1245
+ /** @description Public-only links. The operator dashboard URL is intentionally omitted on employer responses. */
1246
+ EmployerJobLinks: {
1247
+ /**
1248
+ * Format: uri
1249
+ * @description Canonical public URL for this job, or `null` when the job has no slug or no associated company slug (so a stable URL cannot be assembled). A draft carries a URL but only resolves once published.
1250
+ */
1251
+ public: string | null;
1252
+ };
1253
+ EmployerJobSummary: {
1254
+ /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`). */
1255
+ id: string;
1256
+ /**
1257
+ * @description String representing the object's type. Objects of the same type share the same value.
1258
+ * @enum {string}
1259
+ */
1260
+ object: "employer_job";
1261
+ /** @description The job title. */
1262
+ title: string;
1263
+ /** @description URL-friendly slug used in public board URLs, or `null` if no slug is set. */
1264
+ slug: string | null;
1265
+ /**
1266
+ * @description Current status of the job. One of `draft`, `published`, `expired`, or `archived`.
1267
+ * @enum {string}
1268
+ */
1269
+ status: "draft" | "published" | "expired" | "archived";
1270
+ /** @description Identifier of the company the job belongs to, or `null` if no company is attached. */
1271
+ companyId: string | null;
1272
+ /**
1273
+ * @description Employment type of the role, or `null` if not specified.
1274
+ * @enum {string|null}
1275
+ */
1276
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
1277
+ /**
1278
+ * @description Whether the role is on-site, hybrid, or fully remote, or `null` if not specified.
1279
+ * @enum {string|null}
1280
+ */
1281
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
1282
+ /**
1283
+ * @description Seniority level of the role, or `null` if not specified.
1284
+ * @enum {string|null}
1285
+ */
1286
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
1287
+ /** @description Minimum salary in `salaryCurrency` units, or `null` if not specified. */
1288
+ salaryMin: number | null;
1289
+ /** @description Maximum salary in `salaryCurrency` units, or `null` if not specified. */
1290
+ salaryMax: number | null;
1291
+ /** @description Three-letter ISO 4217 currency code for the salary range, or `null` if no salary is specified. */
1292
+ salaryCurrency: string | null;
1293
+ /**
1294
+ * @description Period the salary range is quoted against, or `null` if no salary is specified.
1295
+ * @enum {string|null}
1296
+ */
1297
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
1298
+ /** @description Whether the job appears in featured slots on the public board. */
1299
+ isFeatured: boolean;
1300
+ /** @description Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime. */
1301
+ publishedAt: string | null;
1302
+ /** @description Time at which the job expires, or `null` if no expiry is set. ISO 8601 datetime. */
1303
+ expiresAt: string | null;
1304
+ /** @description Time at which the job was created. ISO 8601 datetime. */
1305
+ createdAt: string;
1306
+ /** @description Time at which the job was last updated. ISO 8601 datetime. */
1307
+ updatedAt: string;
1308
+ links: components["schemas"]["EmployerJobLinks"];
1309
+ };
1310
+ EmployerPipeline: {
1311
+ /** @enum {string} */
1312
+ object: "employer_pipeline";
1313
+ job: {
1314
+ id: string;
1315
+ title: string;
1316
+ status: string;
1317
+ /** Format: date-time */
1318
+ expiresAt: string | null;
1319
+ };
1320
+ stages: components["schemas"]["EmployerPipelineStage"][];
1321
+ applicants: components["schemas"]["EmployerApplicant"][];
1322
+ };
1323
+ EmployerPipelineStage: {
1324
+ id: string;
1325
+ /** @enum {string} */
1326
+ object: "employer_pipeline_stage";
1327
+ jobId: string;
1328
+ label: string;
1329
+ /** @description The stable system meaning (`review`/`offer`/`hired`/`rejected`), or `null` for a custom employer stage. */
1330
+ systemStage: string | null;
1331
+ isProtected: boolean;
1332
+ hidden: boolean;
1333
+ position: number;
1334
+ };
1335
+ EmployerUpdateJobBody: {
1336
+ /** @description Long-form description of the role. Up to 25,000 characters. */
1337
+ description?: string;
1338
+ /** @description URL-friendly slug for the job. Auto-generated from `title` when omitted. */
1339
+ slug?: string;
1340
+ /**
1341
+ * @description Employment type of the role.
1342
+ * @enum {string}
1343
+ */
1344
+ employmentType?: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other";
1345
+ /**
1346
+ * @description Whether the role is on-site, hybrid, or fully remote.
1347
+ * @enum {string}
1348
+ */
1349
+ remoteOption?: "on_site" | "hybrid" | "remote";
1350
+ /** @description Where remote candidates must hold work authorization. Each entry is the smallest relevant scope: `worldwide`, a `world_region` (EMEA / LATAM / NA / APAC), a `continent`, a `region`, a `subregion`, a `custom` group (e.g. `EU`), a `country` (ISO 3166-1 alpha-2), or a `subdivision` (ISO 3166-2). Subdivisions auto-imply their parent country in the derived `remoteWorkPermitCountryCodes` output. Worldwide is mutually exclusive with all other entries. The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-permits`. Pass `[]` to clear an existing constraint. */
1351
+ remotePermits?: {
1352
+ /** @enum {string} */
1353
+ type: "worldwide" | "world_region" | "continent" | "region" | "subregion" | "subdivision" | "country" | "custom";
1354
+ value: string;
1355
+ }[];
1356
+ /** @description Where remote candidates must be timezone-compatible. Each entry mirrors the `remotePermits` shape (`world_region`, `continent`, `region`, `subregion`, `country`) plus `timezone` (specific IANA name with optional `plusMinus` ±N hours expansion) and `all` (every timezone — equivalent of `worldwide` for permits). The canonical `{type, value}` set is published at `GET /v1/taxonomies/remote-timezones`. **When omitted on POST**, the server auto-derives this from `remotePermits` (or `[{all,all}]` if neither was provided). **PATCH never auto-re-derives** — once set, only an explicit replacement updates the stored value, even when `remotePermits` changes. Pass `[]` to clear an existing constraint. */
1357
+ remoteTimezones?: {
1358
+ /** @enum {string} */
1359
+ type: "all" | "world_region" | "continent" | "region" | "subregion" | "country" | "timezone";
1360
+ value: string;
1361
+ plusMinus?: number;
1362
+ }[];
1363
+ /**
1364
+ * @description Whether the employer sponsors visas for remote candidates. One of `yes`, `no`, or `unknown`.
1365
+ * @enum {string}
1366
+ */
1367
+ remoteSponsorship?: "yes" | "no" | "unknown";
1368
+ /**
1369
+ * @description Seniority level of the role.
1370
+ * @enum {string}
1371
+ */
1372
+ seniority?: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive";
1373
+ /** @description Where candidates apply. Accepts an HTTPS URL, a `mailto:` URI, or a bare email address (which is normalized to `mailto:` form). */
1374
+ applicationUrl?: string;
1375
+ /** @description Minimum salary, in `salaryCurrency` units. */
1376
+ salaryMin?: number;
1377
+ /** @description Maximum salary, in `salaryCurrency` units. */
1378
+ salaryMax?: number;
1379
+ /** @description Three-letter ISO 4217 currency code for `salaryMin` and `salaryMax`. */
1380
+ salaryCurrency?: string;
1381
+ /**
1382
+ * @description Period the `salaryMin` and `salaryMax` figures are quoted against.
1383
+ * @enum {string}
1384
+ */
1385
+ salaryTimeframe?: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour";
1386
+ /** @description Required education credentials. Each value is one of `high_school`, `associate_degree`, `bachelor_degree`, `professional_certificate`, `postgraduate_degree`, or `no_requirements`. */
1387
+ educationRequirements?: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
1388
+ /** @description Minimum required experience, expressed in months. */
1389
+ experienceMonths?: number;
1390
+ /** @description If `true`, equivalent experience may substitute for the listed education requirements. */
1391
+ experienceInPlaceOfEducation?: boolean;
1392
+ /**
1393
+ * @description Period denominator for `inOfficeFrequency`.
1394
+ * @enum {string}
1395
+ */
1396
+ inOfficePeriod?: "per_week" | "per_month" | "per_year";
1397
+ /** @description How often the candidate must be in-office over `inOfficePeriod`. */
1398
+ inOfficeFrequency?: number;
1399
+ /** @description Physical office locations associated with the job. Each entry is forward-geocoded server-side; a country mismatch returns `400 jobs_unresolvable_location`. */
1400
+ officeLocations?: components["schemas"]["JobOfficeLocationInput"][];
1401
+ /** @description The job title. */
1402
+ title?: string;
1403
+ };
958
1404
  FindOrCreateCompanyBody: {
959
1405
  /** @description The company's display name. */
960
1406
  name: string;
@@ -1454,6 +1900,10 @@ interface components {
1454
1900
  */
1455
1901
  purpose: "board_logo" | "board_hero" | "account_avatar" | "company_logo" | "blog_image";
1456
1902
  };
1903
+ MoveApplicantStageBody: {
1904
+ /** @description The target stage id. */
1905
+ stageId: string;
1906
+ };
1457
1907
  NotificationPreference: {
1458
1908
  /** @enum {string} */
1459
1909
  object: "notification_preference";
@@ -2090,6 +2540,12 @@ interface components {
2090
2540
  /** @description Human-readable display label. */
2091
2541
  label: string;
2092
2542
  };
2543
+ ReorderPipelineStagesBody: {
2544
+ /** @description The job whose stages are reordered. */
2545
+ jobId: string;
2546
+ /** @description Every stage id of the job, in the new order. */
2547
+ orderedStageIds: string[];
2548
+ };
2093
2549
  ResourceLinks: {
2094
2550
  /**
2095
2551
  * Format: uri
@@ -2244,6 +2700,10 @@ interface components {
2244
2700
  */
2245
2701
  limit?: number;
2246
2702
  };
2703
+ SendWorkEmailBody: {
2704
+ /** Format: email */
2705
+ workEmail: string;
2706
+ };
2247
2707
  SettingsAdsenseBody: {
2248
2708
  /** @description Whether AdSense placements are rendered on the public board. */
2249
2709
  adsenseEnabled?: boolean;
@@ -2804,6 +3264,15 @@ interface components {
2804
3264
  description?: string;
2805
3265
  sortOrder?: number;
2806
3266
  };
3267
+ UpdateEmployerCompanyBody: {
3268
+ name?: string;
3269
+ description?: string;
3270
+ website?: string;
3271
+ summary?: string;
3272
+ xUrl?: string;
3273
+ linkedinUrl?: string;
3274
+ facebookUrl?: string;
3275
+ };
2807
3276
  UpdateExperienceBody: {
2808
3277
  title?: string;
2809
3278
  companyName?: string;
@@ -2911,6 +3380,10 @@ interface components {
2911
3380
  channel: "messageEmails" | "applicationEmails";
2912
3381
  subscribed: boolean;
2913
3382
  };
3383
+ UpdatePipelineStageBody: {
3384
+ label?: string;
3385
+ hidden?: boolean;
3386
+ };
2914
3387
  UpdateSkillsBody: {
2915
3388
  skills: string[];
2916
3389
  };
@@ -2958,6 +3431,67 @@ interface components {
2958
3431
 
2959
3432
  type Schemas = components['schemas'];
2960
3433
 
3434
+ type SavedJob = Schemas['SavedJob'];
3435
+ type SavedJobsListQuery = {
3436
+ cursor?: string;
3437
+ /** 1–100. */
3438
+ limit?: number;
3439
+ };
3440
+ type SaveJobBody = Schemas['SaveJobBody'];
3441
+ /** The authenticated user's lean candidate profile singleton. */
3442
+ type CandidateProfile = Schemas['CandidateProfile'];
3443
+ /** Optional-field merge-patch body for `board.me.profile.update`. */
3444
+ type UpdateCandidateProfileBody = Schemas['UpdateCandidateProfileBody'];
3445
+ /** The result of `board.me.profile.handleAvailable(handle)`. */
3446
+ type HandleAvailability = Schemas['HandleAvailability'];
3447
+ type CandidateExperience = Schemas['CandidateExperience'];
3448
+ type CreateExperienceBody = Schemas['CreateExperienceBody'];
3449
+ type UpdateExperienceBody = Schemas['UpdateExperienceBody'];
3450
+ type CandidateEducation = Schemas['CandidateEducation'];
3451
+ type CreateEducationBody = Schemas['CreateEducationBody'];
3452
+ type UpdateEducationBody = Schemas['UpdateEducationBody'];
3453
+ type CandidateSkill = Schemas['CandidateSkill'];
3454
+ type UpdateSkillsBody = Schemas['UpdateSkillsBody'];
3455
+ type CandidateLanguage = Schemas['CandidateLanguage'];
3456
+ type UpdateLanguagesBody = Schemas['UpdateLanguagesBody'];
3457
+ /** The result of `board.me.profile.uploadAvatar(file)`. */
3458
+ type CandidateAvatar = Schemas['CandidateAvatar'];
3459
+ type NotificationPreference = Schemas['NotificationPreference'];
3460
+ type UpdateNotificationPreferenceBody = Schemas['UpdateNotificationPreferenceBody'];
3461
+ type UnsubscribeBody = Schemas['UnsubscribeBody'];
3462
+ type CreateCompanyBody = Schemas['CreateCompanyBody'];
3463
+ type UpdateEmployerCompanyBody = Schemas['UpdateEmployerCompanyBody'];
3464
+ type SendWorkEmailBody = Schemas['SendWorkEmailBody'];
3465
+ type ConfirmWorkEmailBody = Schemas['ConfirmWorkEmailBody'];
3466
+ /** Query for `board.me.companies.search`. */
3467
+ type EmployerCompanySearchQuery = {
3468
+ q: string;
3469
+ /** 1–50. */
3470
+ limit?: number;
3471
+ };
3472
+ type CreateEmployerJobBody = Schemas['EmployerCreateJobBody'];
3473
+ type UpdateEmployerJobBody = Schemas['EmployerUpdateJobBody'];
3474
+ /** Query for `board.me.companies.jobs.list`. */
3475
+ type EmployerJobsListQuery = {
3476
+ /** 1–200 (default 200). */
3477
+ limit?: number;
3478
+ };
3479
+ type MoveApplicantStageBody = Schemas['MoveApplicantStageBody'];
3480
+ type BulkMoveApplicantsBody = Schemas['BulkMoveApplicantsBody'];
3481
+ type BulkRejectApplicantsBody = Schemas['BulkRejectApplicantsBody'];
3482
+ type AddApplicantNoteBody = Schemas['AddApplicantNoteBody'];
3483
+ type CreatePipelineStageBody = Schemas['CreatePipelineStageBody'];
3484
+ type UpdatePipelineStageBody = Schemas['UpdatePipelineStageBody'];
3485
+ type ReorderPipelineStagesBody = Schemas['ReorderPipelineStagesBody'];
3486
+ /** Query for `board.me.companies.applicants.list`. */
3487
+ type EmployerPipelineQuery = {
3488
+ /** The job id whose pipeline to read. */
3489
+ job: string;
3490
+ /** Filter to a single stage (systemStage key, custom stage id, or `applied`). */
3491
+ stage?: string;
3492
+ };
3493
+ type EmployerCheckoutBody = Schemas['EmployerCheckoutBody'];
3494
+
2961
3495
  /**
2962
3496
  * Stripe-shaped success envelopes (`01-conventions.md` §5.1). The
2963
3497
  * server MAY add top-level fields; consumers MUST ignore unknown
@@ -3171,7 +3705,7 @@ declare function isConflict(e: unknown): e is BoardApiError;
3171
3705
  * constant because the package is platform-neutral and cannot read
3172
3706
  * package.json at runtime.
3173
3707
  */
3174
- declare const SDK_VERSION = "1.20.0";
3708
+ declare const SDK_VERSION = "1.21.0";
3175
3709
 
3176
3710
  type BoardUser = Schemas['BoardUser'];
3177
3711
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -3357,35 +3891,6 @@ type PlansListQuery = {
3357
3891
  type PlanListEnvelope = ListEnvelope<Plan>;
3358
3892
  type SalesLedPlanListEnvelope = ListEnvelope<SalesLedPlan>;
3359
3893
 
3360
- type SavedJob = Schemas['SavedJob'];
3361
- type SavedJobsListQuery = {
3362
- cursor?: string;
3363
- /** 1–100. */
3364
- limit?: number;
3365
- };
3366
- type SaveJobBody = Schemas['SaveJobBody'];
3367
- /** The authenticated user's lean candidate profile singleton. */
3368
- type CandidateProfile = Schemas['CandidateProfile'];
3369
- /** Optional-field merge-patch body for `board.me.profile.update`. */
3370
- type UpdateCandidateProfileBody = Schemas['UpdateCandidateProfileBody'];
3371
- /** The result of `board.me.profile.handleAvailable(handle)`. */
3372
- type HandleAvailability = Schemas['HandleAvailability'];
3373
- type CandidateExperience = Schemas['CandidateExperience'];
3374
- type CreateExperienceBody = Schemas['CreateExperienceBody'];
3375
- type UpdateExperienceBody = Schemas['UpdateExperienceBody'];
3376
- type CandidateEducation = Schemas['CandidateEducation'];
3377
- type CreateEducationBody = Schemas['CreateEducationBody'];
3378
- type UpdateEducationBody = Schemas['UpdateEducationBody'];
3379
- type CandidateSkill = Schemas['CandidateSkill'];
3380
- type UpdateSkillsBody = Schemas['UpdateSkillsBody'];
3381
- type CandidateLanguage = Schemas['CandidateLanguage'];
3382
- type UpdateLanguagesBody = Schemas['UpdateLanguagesBody'];
3383
- /** The result of `board.me.profile.uploadAvatar(file)`. */
3384
- type CandidateAvatar = Schemas['CandidateAvatar'];
3385
- type NotificationPreference = Schemas['NotificationPreference'];
3386
- type UpdateNotificationPreferenceBody = Schemas['UpdateNotificationPreferenceBody'];
3387
- type UnsubscribeBody = Schemas['UnsubscribeBody'];
3388
-
3389
3894
  type JobAlertFrequency = 'daily' | 'weekly';
3390
3895
  type JobAlertRemoteOption = 'on_site' | 'hybrid' | 'remote';
3391
3896
  /**
@@ -4287,6 +4792,400 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4287
4792
  }>>;
4288
4793
  unsubscribeWithToken(body: UnsubscribeBody, options?: FetchOptions): Promise<void>;
4289
4794
  };
4795
+ companies: {
4796
+ search(query: EmployerCompanySearchQuery, options?: FetchOptions): Promise<ListEnvelope<{
4797
+ id: string;
4798
+ object: "claimable_company";
4799
+ name: string;
4800
+ slug: string;
4801
+ website: string | null;
4802
+ }>>;
4803
+ list(options?: FetchOptions): Promise<ListEnvelope<{
4804
+ id: string;
4805
+ object: "company_membership";
4806
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
4807
+ role: string;
4808
+ workEmail: string | null;
4809
+ workEmailVerifiedAt: string | null;
4810
+ company: {
4811
+ id: string;
4812
+ name: string;
4813
+ slug: string | null;
4814
+ website: string | null;
4815
+ logoUrl: string | null;
4816
+ };
4817
+ }>>;
4818
+ create(body: CreateCompanyBody, options?: FetchOptions): Promise<{
4819
+ id: string;
4820
+ object: "company_membership";
4821
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
4822
+ role: string;
4823
+ workEmail: string | null;
4824
+ workEmailVerifiedAt: string | null;
4825
+ company: {
4826
+ id: string;
4827
+ name: string;
4828
+ slug: string | null;
4829
+ website: string | null;
4830
+ logoUrl: string | null;
4831
+ };
4832
+ }>;
4833
+ claim(slug: string, options?: FetchOptions): Promise<{
4834
+ id: string;
4835
+ object: "company_membership";
4836
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
4837
+ role: string;
4838
+ workEmail: string | null;
4839
+ workEmailVerifiedAt: string | null;
4840
+ company: {
4841
+ id: string;
4842
+ name: string;
4843
+ slug: string | null;
4844
+ website: string | null;
4845
+ logoUrl: string | null;
4846
+ };
4847
+ }>;
4848
+ cancelClaim(slug: string, options?: FetchOptions): Promise<void>;
4849
+ update(slug: string, body: UpdateEmployerCompanyBody, options?: FetchOptions): Promise<{
4850
+ id: string;
4851
+ object: "employer_company";
4852
+ name: string;
4853
+ slug: string;
4854
+ website: string | null;
4855
+ description: string | null;
4856
+ summary: string | null;
4857
+ xUrl: string | null;
4858
+ linkedinUrl: string | null;
4859
+ facebookUrl: string | null;
4860
+ logoUrl: string | null;
4861
+ }>;
4862
+ workEmail: {
4863
+ verify(slug: string, body: SendWorkEmailBody, options?: FetchOptions): Promise<{
4864
+ id: string;
4865
+ object: "company_membership";
4866
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
4867
+ role: string;
4868
+ workEmail: string | null;
4869
+ workEmailVerifiedAt: string | null;
4870
+ company: {
4871
+ id: string;
4872
+ name: string;
4873
+ slug: string | null;
4874
+ website: string | null;
4875
+ logoUrl: string | null;
4876
+ };
4877
+ }>;
4878
+ confirm(slug: string, body: ConfirmWorkEmailBody, options?: FetchOptions): Promise<{
4879
+ id: string;
4880
+ object: "company_membership";
4881
+ status: "approved" | "pending_work_email" | "awaiting_admin" | "rejected";
4882
+ role: string;
4883
+ workEmail: string | null;
4884
+ workEmailVerifiedAt: string | null;
4885
+ company: {
4886
+ id: string;
4887
+ name: string;
4888
+ slug: string | null;
4889
+ website: string | null;
4890
+ logoUrl: string | null;
4891
+ };
4892
+ }>;
4893
+ };
4894
+ jobs: {
4895
+ list(slug: string, query?: EmployerJobsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
4896
+ id: string;
4897
+ object: "employer_job";
4898
+ title: string;
4899
+ slug: string | null;
4900
+ status: "draft" | "published" | "expired" | "archived";
4901
+ companyId: string | null;
4902
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
4903
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
4904
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
4905
+ salaryMin: number | null;
4906
+ salaryMax: number | null;
4907
+ salaryCurrency: string | null;
4908
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
4909
+ isFeatured: boolean;
4910
+ publishedAt: string | null;
4911
+ expiresAt: string | null;
4912
+ createdAt: string;
4913
+ updatedAt: string;
4914
+ links: components["schemas"]["EmployerJobLinks"];
4915
+ }>>;
4916
+ retrieve(slug: string, id: string, options?: FetchOptions): Promise<{
4917
+ id: string;
4918
+ object: "employer_job";
4919
+ title: string;
4920
+ slug: string | null;
4921
+ status: "draft" | "published" | "expired" | "archived";
4922
+ companyId: string | null;
4923
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
4924
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
4925
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
4926
+ salaryMin: number | null;
4927
+ salaryMax: number | null;
4928
+ salaryCurrency: string | null;
4929
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
4930
+ isFeatured: boolean;
4931
+ publishedAt: string | null;
4932
+ expiresAt: string | null;
4933
+ createdAt: string;
4934
+ updatedAt: string;
4935
+ links: components["schemas"]["EmployerJobLinks"];
4936
+ } & {
4937
+ description: string | null;
4938
+ applicationUrl: string | null;
4939
+ remotePermits: {
4940
+ type: string;
4941
+ value: string;
4942
+ }[];
4943
+ remoteWorldwide: boolean | null;
4944
+ remoteTimezones: {
4945
+ type: string;
4946
+ value: string;
4947
+ plusMinus?: number;
4948
+ }[];
4949
+ remoteAllowedTzOffsets: number[];
4950
+ remoteWorkPermitCountryCodes: string[];
4951
+ remoteWorkPermitSubdivisionCodes: string[];
4952
+ remoteSponsorship: "yes" | "no" | "unknown";
4953
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
4954
+ experienceMonths: number | null;
4955
+ experienceInPlaceOfEducation: boolean | null;
4956
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
4957
+ inOfficeFrequency: number | null;
4958
+ company: components["schemas"]["JobCompany"];
4959
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
4960
+ }>;
4961
+ create(slug: string, body: CreateEmployerJobBody, options?: FetchOptions): Promise<{
4962
+ id: string;
4963
+ object: "employer_job";
4964
+ title: string;
4965
+ slug: string | null;
4966
+ status: "draft" | "published" | "expired" | "archived";
4967
+ companyId: string | null;
4968
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
4969
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
4970
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
4971
+ salaryMin: number | null;
4972
+ salaryMax: number | null;
4973
+ salaryCurrency: string | null;
4974
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
4975
+ isFeatured: boolean;
4976
+ publishedAt: string | null;
4977
+ expiresAt: string | null;
4978
+ createdAt: string;
4979
+ updatedAt: string;
4980
+ links: components["schemas"]["EmployerJobLinks"];
4981
+ } & {
4982
+ description: string | null;
4983
+ applicationUrl: string | null;
4984
+ remotePermits: {
4985
+ type: string;
4986
+ value: string;
4987
+ }[];
4988
+ remoteWorldwide: boolean | null;
4989
+ remoteTimezones: {
4990
+ type: string;
4991
+ value: string;
4992
+ plusMinus?: number;
4993
+ }[];
4994
+ remoteAllowedTzOffsets: number[];
4995
+ remoteWorkPermitCountryCodes: string[];
4996
+ remoteWorkPermitSubdivisionCodes: string[];
4997
+ remoteSponsorship: "yes" | "no" | "unknown";
4998
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
4999
+ experienceMonths: number | null;
5000
+ experienceInPlaceOfEducation: boolean | null;
5001
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
5002
+ inOfficeFrequency: number | null;
5003
+ company: components["schemas"]["JobCompany"];
5004
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
5005
+ }>;
5006
+ update(slug: string, id: string, body: UpdateEmployerJobBody, options?: FetchOptions): Promise<{
5007
+ id: string;
5008
+ object: "employer_job";
5009
+ title: string;
5010
+ slug: string | null;
5011
+ status: "draft" | "published" | "expired" | "archived";
5012
+ companyId: string | null;
5013
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
5014
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
5015
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
5016
+ salaryMin: number | null;
5017
+ salaryMax: number | null;
5018
+ salaryCurrency: string | null;
5019
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
5020
+ isFeatured: boolean;
5021
+ publishedAt: string | null;
5022
+ expiresAt: string | null;
5023
+ createdAt: string;
5024
+ updatedAt: string;
5025
+ links: components["schemas"]["EmployerJobLinks"];
5026
+ } & {
5027
+ description: string | null;
5028
+ applicationUrl: string | null;
5029
+ remotePermits: {
5030
+ type: string;
5031
+ value: string;
5032
+ }[];
5033
+ remoteWorldwide: boolean | null;
5034
+ remoteTimezones: {
5035
+ type: string;
5036
+ value: string;
5037
+ plusMinus?: number;
5038
+ }[];
5039
+ remoteAllowedTzOffsets: number[];
5040
+ remoteWorkPermitCountryCodes: string[];
5041
+ remoteWorkPermitSubdivisionCodes: string[];
5042
+ remoteSponsorship: "yes" | "no" | "unknown";
5043
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
5044
+ experienceMonths: number | null;
5045
+ experienceInPlaceOfEducation: boolean | null;
5046
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
5047
+ inOfficeFrequency: number | null;
5048
+ company: components["schemas"]["JobCompany"];
5049
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
5050
+ }>;
5051
+ delete(slug: string, id: string, options?: FetchOptions): Promise<void>;
5052
+ publish(slug: string, id: string, options?: FetchOptions): Promise<{
5053
+ id: string;
5054
+ object: "employer_job";
5055
+ title: string;
5056
+ slug: string | null;
5057
+ status: "draft" | "published" | "expired" | "archived";
5058
+ companyId: string | null;
5059
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
5060
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
5061
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
5062
+ salaryMin: number | null;
5063
+ salaryMax: number | null;
5064
+ salaryCurrency: string | null;
5065
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
5066
+ isFeatured: boolean;
5067
+ publishedAt: string | null;
5068
+ expiresAt: string | null;
5069
+ createdAt: string;
5070
+ updatedAt: string;
5071
+ links: components["schemas"]["EmployerJobLinks"];
5072
+ } & {
5073
+ description: string | null;
5074
+ applicationUrl: string | null;
5075
+ remotePermits: {
5076
+ type: string;
5077
+ value: string;
5078
+ }[];
5079
+ remoteWorldwide: boolean | null;
5080
+ remoteTimezones: {
5081
+ type: string;
5082
+ value: string;
5083
+ plusMinus?: number;
5084
+ }[];
5085
+ remoteAllowedTzOffsets: number[];
5086
+ remoteWorkPermitCountryCodes: string[];
5087
+ remoteWorkPermitSubdivisionCodes: string[];
5088
+ remoteSponsorship: "yes" | "no" | "unknown";
5089
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
5090
+ experienceMonths: number | null;
5091
+ experienceInPlaceOfEducation: boolean | null;
5092
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
5093
+ inOfficeFrequency: number | null;
5094
+ company: components["schemas"]["JobCompany"];
5095
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
5096
+ }>;
5097
+ unpublish(slug: string, id: string, options?: FetchOptions): Promise<{
5098
+ id: string;
5099
+ object: "employer_job";
5100
+ title: string;
5101
+ slug: string | null;
5102
+ status: "draft" | "published" | "expired" | "archived";
5103
+ companyId: string | null;
5104
+ employmentType: "full_time" | "part_time" | "contract" | "internship" | "temporary" | "volunteer" | "other" | null;
5105
+ remoteOption: "on_site" | "hybrid" | "remote" | null;
5106
+ seniority: "entry_level" | "associate" | "mid_level" | "senior" | "lead" | "principal" | "director" | "executive" | null;
5107
+ salaryMin: number | null;
5108
+ salaryMax: number | null;
5109
+ salaryCurrency: string | null;
5110
+ salaryTimeframe: "per_year" | "per_month" | "per_week" | "per_day" | "per_hour" | null;
5111
+ isFeatured: boolean;
5112
+ publishedAt: string | null;
5113
+ expiresAt: string | null;
5114
+ createdAt: string;
5115
+ updatedAt: string;
5116
+ links: components["schemas"]["EmployerJobLinks"];
5117
+ } & {
5118
+ description: string | null;
5119
+ applicationUrl: string | null;
5120
+ remotePermits: {
5121
+ type: string;
5122
+ value: string;
5123
+ }[];
5124
+ remoteWorldwide: boolean | null;
5125
+ remoteTimezones: {
5126
+ type: string;
5127
+ value: string;
5128
+ plusMinus?: number;
5129
+ }[];
5130
+ remoteAllowedTzOffsets: number[];
5131
+ remoteWorkPermitCountryCodes: string[];
5132
+ remoteWorkPermitSubdivisionCodes: string[];
5133
+ remoteSponsorship: "yes" | "no" | "unknown";
5134
+ educationRequirements: ("high_school" | "associate_degree" | "bachelor_degree" | "professional_certificate" | "postgraduate_degree" | "no_requirements")[];
5135
+ experienceMonths: number | null;
5136
+ experienceInPlaceOfEducation: boolean | null;
5137
+ inOfficePeriod: "per_week" | "per_month" | "per_year" | null;
5138
+ inOfficeFrequency: number | null;
5139
+ company: components["schemas"]["JobCompany"];
5140
+ officeLocations: components["schemas"]["JobOfficeLocation"][];
5141
+ }>;
5142
+ checkout(slug: string, id: string, body: EmployerCheckoutBody, options?: FetchOptions): Promise<{
5143
+ object: "employer_checkout";
5144
+ status: "checkout" | "published" | "invoice_sent";
5145
+ checkoutUrl: string | null;
5146
+ jobId: string;
5147
+ jobSlug: string | null;
5148
+ }>;
5149
+ };
5150
+ billingOptions: {
5151
+ list(slug: string, options?: FetchOptions): Promise<ListEnvelope<{
5152
+ id: string;
5153
+ object: "employer_billing_option";
5154
+ type: "subscription" | "order";
5155
+ planId: string;
5156
+ planName: string;
5157
+ planKind: "subscription" | "one_time" | "bundle";
5158
+ jobsRemaining: number;
5159
+ jobsTotal: number;
5160
+ featuredRemaining: number;
5161
+ featuredTotal: number;
5162
+ renewsAt: string | null;
5163
+ }>>;
5164
+ };
5165
+ applicants: {
5166
+ list(slug: string, query: EmployerPipelineQuery, options?: FetchOptions): Promise<{
5167
+ object: "employer_pipeline";
5168
+ job: {
5169
+ id: string;
5170
+ title: string;
5171
+ status: string;
5172
+ expiresAt: string | null;
5173
+ };
5174
+ stages: components["schemas"]["EmployerPipelineStage"][];
5175
+ applicants: components["schemas"]["EmployerApplicant"][];
5176
+ }>;
5177
+ move(slug: string, applicationId: string, body: MoveApplicantStageBody, options?: FetchOptions): Promise<void>;
5178
+ bulkMove(slug: string, body: BulkMoveApplicantsBody, options?: FetchOptions): Promise<void>;
5179
+ bulkReject(slug: string, body: BulkRejectApplicantsBody, options?: FetchOptions): Promise<void>;
5180
+ addNote(slug: string, applicationId: string, body: AddApplicantNoteBody, options?: FetchOptions): Promise<void>;
5181
+ };
5182
+ pipelineStages: {
5183
+ create(slug: string, body: CreatePipelineStageBody, options?: FetchOptions): Promise<void>;
5184
+ update(slug: string, stageId: string, body: UpdatePipelineStageBody, options?: FetchOptions): Promise<void>;
5185
+ remove(slug: string, stageId: string, options?: FetchOptions): Promise<void>;
5186
+ reorder(slug: string, body: ReorderPipelineStagesBody, options?: FetchOptions): Promise<void>;
5187
+ };
5188
+ };
4290
5189
  savedJobs: {
4291
5190
  list(query?: SavedJobsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
4292
5191
  id: string;