@curviate/sdk 0.9.0 → 0.11.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.
@@ -48,9 +48,9 @@ export interface paths {
48
48
  * @description Stable status whitelist.
49
49
  * @enum {string}
50
50
  */
51
- status?: "active" | "reconnect_needed" | "restricted" | "connecting";
51
+ status?: "active" | "reconnect_needed" | "restricted" | "connecting" | "disconnected";
52
52
  /** @enum {string} */
53
- auth_method?: "credentials" | "cookie";
53
+ auth_method?: "credentials" | "cookie" | "hosted";
54
54
  full_name?: string | null;
55
55
  headline?: string | null;
56
56
  /** @description The seat this account occupies. */
@@ -247,6 +247,12 @@ export interface paths {
247
247
  auth_method?: "credentials" | "cookie";
248
248
  full_name?: string | null;
249
249
  headline?: string | null;
250
+ /** @description The seat this account occupies (canonical — supersedes the deprecated attached_seat_id). */
251
+ seat_id?: string | null;
252
+ /**
253
+ * @deprecated
254
+ * @description Deprecated — use seat_id (same value). Removed at the GA /v1 cutover.
255
+ */
250
256
  attached_seat_id?: string | null;
251
257
  };
252
258
  };
@@ -410,7 +416,7 @@ export interface paths {
410
416
  object?: "account";
411
417
  account_id?: string;
412
418
  /** @enum {string} */
413
- status?: "active" | "reconnect_needed" | "restricted" | "connecting";
419
+ status?: "active" | "reconnect_needed" | "restricted" | "connecting" | "disconnected";
414
420
  auth_method?: string;
415
421
  full_name?: string | null;
416
422
  headline?: string | null;
@@ -719,6 +725,15 @@ export interface paths {
719
725
  "application/json": components["schemas"]["Error"];
720
726
  };
721
727
  };
728
+ /** @description This managed-proxy configuration is not supported for this account (e.g. the requested proxy mode or location is unavailable on the account's current plan). Not retryable as-is — change the request rather than resubmitting. */
729
+ 501: {
730
+ headers: {
731
+ [name: string]: unknown;
732
+ };
733
+ content: {
734
+ "application/json": components["schemas"]["Error"];
735
+ };
736
+ };
722
737
  /** @description A temporary error occurred. Please try again. */
723
738
  502: {
724
739
  headers: {
@@ -810,6 +825,8 @@ export interface paths {
810
825
  object?: "hosted_auth_url";
811
826
  /** @description The hosted URL the end user opens. */
812
827
  url?: string;
828
+ /** @description Poll handle for GET /v1/accounts/connect-sessions/{session_id}. */
829
+ session_id?: string;
813
830
  expires_at?: string;
814
831
  seat_id?: string | null;
815
832
  account_id?: string | null;
@@ -899,6 +916,124 @@ export interface paths {
899
916
  patch?: never;
900
917
  trace?: never;
901
918
  };
919
+ "/v1/accounts/connect-sessions/{session_id}": {
920
+ parameters: {
921
+ query?: never;
922
+ header?: never;
923
+ path?: never;
924
+ cookie?: never;
925
+ };
926
+ /**
927
+ * Poll a hosted connect session
928
+ * @description Return the current status of a hosted connect session created by connect-link. A pure status read — it makes no external call and does not itself complete the connection (completion is signalled out-of-band once the end user finishes the hosted flow). status is `pending` until the hand-off completes, then `resolved` (with `account_id`), or `expired` / `failed`. Poll until it leaves `pending`.
929
+ */
930
+ get: {
931
+ parameters: {
932
+ query?: never;
933
+ header?: never;
934
+ path: {
935
+ /** @description The connect session id (`cs_…`) returned by connect-link. */
936
+ session_id: string;
937
+ };
938
+ cookie?: never;
939
+ };
940
+ requestBody?: never;
941
+ responses: {
942
+ /** @description The current status of a hosted connect session created by connect-link. Poll until status leaves pending; account_id is present only once status is resolved. */
943
+ 200: {
944
+ headers: {
945
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
946
+ RateLimit: components["headers"]["RateLimit"];
947
+ [name: string]: unknown;
948
+ };
949
+ content: {
950
+ "application/json": {
951
+ /**
952
+ * @description Response type discriminator.
953
+ * @enum {string}
954
+ */
955
+ object?: "connect_session";
956
+ /** @description The connect session id (cs_…). */
957
+ session_id?: string;
958
+ /**
959
+ * @description Lifecycle status. pending until the hand-off completes, then resolved / expired / failed.
960
+ * @enum {string}
961
+ */
962
+ status?: "pending" | "resolved" | "expired" | "failed";
963
+ /** @description The connected account (acc_…); null until status is resolved. */
964
+ account_id?: string | null;
965
+ /** @description ISO-8601 UTC session expiry. */
966
+ expires_at?: string;
967
+ };
968
+ };
969
+ };
970
+ /** @description Missing or invalid API key. */
971
+ 401: {
972
+ headers: {
973
+ [name: string]: unknown;
974
+ };
975
+ content: {
976
+ "application/json": components["schemas"]["Error"];
977
+ };
978
+ };
979
+ /** @description No such connect session for this tenant. */
980
+ 404: {
981
+ headers: {
982
+ [name: string]: unknown;
983
+ };
984
+ content: {
985
+ "application/json": components["schemas"]["Error"];
986
+ };
987
+ };
988
+ /** @description Rate limited — slow down and retry after the hinted delay. */
989
+ 429: {
990
+ headers: {
991
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
992
+ RateLimit: components["headers"]["RateLimit"];
993
+ "Retry-After": components["headers"]["Retry-After"];
994
+ [name: string]: unknown;
995
+ };
996
+ content: {
997
+ "application/json": components["schemas"]["Error"];
998
+ };
999
+ };
1000
+ /** @description Internal error. */
1001
+ 500: {
1002
+ headers: {
1003
+ [name: string]: unknown;
1004
+ };
1005
+ content: {
1006
+ "application/json": components["schemas"]["Error"];
1007
+ };
1008
+ };
1009
+ /** @description Service unavailable. */
1010
+ 503: {
1011
+ headers: {
1012
+ [name: string]: unknown;
1013
+ };
1014
+ content: {
1015
+ "application/json": components["schemas"]["Error"];
1016
+ };
1017
+ };
1018
+ /** @description Gateway timeout. */
1019
+ 504: {
1020
+ headers: {
1021
+ [name: string]: unknown;
1022
+ };
1023
+ content: {
1024
+ "application/json": components["schemas"]["Error"];
1025
+ };
1026
+ };
1027
+ };
1028
+ };
1029
+ put?: never;
1030
+ post?: never;
1031
+ delete?: never;
1032
+ options?: never;
1033
+ head?: never;
1034
+ patch?: never;
1035
+ trace?: never;
1036
+ };
902
1037
  "/v1/accounts/{account_id}/reconnect": {
903
1038
  parameters: {
904
1039
  query?: never;
@@ -1284,6 +1419,13 @@ export interface paths {
1284
1419
  account_id?: string;
1285
1420
  /** @enum {string} */
1286
1421
  status?: "active";
1422
+ /** @description The seat this account occupies (canonical — supersedes the deprecated attached_seat_id). */
1423
+ seat_id?: string | null;
1424
+ /**
1425
+ * @deprecated
1426
+ * @description Deprecated — use seat_id (same value). Removed at the GA /v1 cutover.
1427
+ */
1428
+ attached_seat_id?: string | null;
1287
1429
  };
1288
1430
  };
1289
1431
  };
@@ -1398,6 +1540,137 @@ export interface paths {
1398
1540
  patch?: never;
1399
1541
  trace?: never;
1400
1542
  };
1543
+ "/v1/accounts/checkpoints/resend": {
1544
+ parameters: {
1545
+ query?: never;
1546
+ header?: never;
1547
+ path?: never;
1548
+ cookie?: never;
1549
+ };
1550
+ get?: never;
1551
+ put?: never;
1552
+ /**
1553
+ * Resend a checkpoint verification notification
1554
+ * @description Re-push / re-issue the pending verification challenge notification for an account. Addressed by account_id in the body (the account_id returned with the 202 checkpoint_required response). Meaningful for otp / two_factor_sms / mobile_app_approval challenges; a two_factor_app challenge has nothing to resend (the code is generated on the device) and returns resent:false rather than an error — the response never claims a resend that did not happen. Does not reset the checkpoint's expiry.
1555
+ */
1556
+ post: {
1557
+ parameters: {
1558
+ query?: never;
1559
+ header?: never;
1560
+ path?: never;
1561
+ cookie?: never;
1562
+ };
1563
+ requestBody: {
1564
+ content: {
1565
+ "application/json": {
1566
+ /** @description The account whose pending checkpoint notification should be re-sent (returned with the 202 checkpoint_required response, or from link/poll). */
1567
+ account_id: string;
1568
+ };
1569
+ };
1570
+ };
1571
+ responses: {
1572
+ /** @description The resend request was processed. resent:true means the substrate confirmed the notification was re-sent; resent:false means the substrate acknowledged the request but had nothing to re-send (e.g. a two_factor_app challenge, where the code is generated on the device) — the response never claims a resend that did not happen. */
1573
+ 200: {
1574
+ headers: {
1575
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
1576
+ RateLimit: components["headers"]["RateLimit"];
1577
+ [name: string]: unknown;
1578
+ };
1579
+ content: {
1580
+ "application/json": {
1581
+ /**
1582
+ * @description Response type discriminator.
1583
+ * @enum {string}
1584
+ */
1585
+ object?: "checkpoint";
1586
+ account_id?: string;
1587
+ resent?: boolean;
1588
+ };
1589
+ };
1590
+ };
1591
+ /** @description No pending checkpoint for this account. */
1592
+ 404: {
1593
+ headers: {
1594
+ [name: string]: unknown;
1595
+ };
1596
+ content: {
1597
+ "application/json": components["schemas"]["Error"];
1598
+ };
1599
+ };
1600
+ /** @description The checkpoint has expired. */
1601
+ 409: {
1602
+ headers: {
1603
+ [name: string]: unknown;
1604
+ };
1605
+ content: {
1606
+ "application/json": components["schemas"]["Error"];
1607
+ };
1608
+ };
1609
+ /** @description Rate limited — slow down and retry after the hinted delay. */
1610
+ 429: {
1611
+ headers: {
1612
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
1613
+ RateLimit: components["headers"]["RateLimit"];
1614
+ "Retry-After": components["headers"]["Retry-After"];
1615
+ [name: string]: unknown;
1616
+ };
1617
+ content: {
1618
+ "application/json": components["schemas"]["Error"];
1619
+ };
1620
+ };
1621
+ /** @description Internal error. */
1622
+ 500: {
1623
+ headers: {
1624
+ [name: string]: unknown;
1625
+ };
1626
+ content: {
1627
+ "application/json": components["schemas"]["Error"];
1628
+ };
1629
+ };
1630
+ /** @description This challenge type does not support resend — there is nothing for the substrate to re-send. Not retryable as-is; resolve the checkpoint via submit, or by completing it directly (e.g. approving on the device), instead of resending. */
1631
+ 501: {
1632
+ headers: {
1633
+ [name: string]: unknown;
1634
+ };
1635
+ content: {
1636
+ "application/json": components["schemas"]["Error"];
1637
+ };
1638
+ };
1639
+ /** @description A temporary error occurred. Please try again. */
1640
+ 502: {
1641
+ headers: {
1642
+ [name: string]: unknown;
1643
+ };
1644
+ content: {
1645
+ "application/json": components["schemas"]["Error"];
1646
+ };
1647
+ };
1648
+ /** @description Service unavailable. */
1649
+ 503: {
1650
+ headers: {
1651
+ [name: string]: unknown;
1652
+ };
1653
+ content: {
1654
+ "application/json": components["schemas"]["Error"];
1655
+ };
1656
+ };
1657
+ /** @description Gateway timeout. */
1658
+ 504: {
1659
+ headers: {
1660
+ [name: string]: unknown;
1661
+ };
1662
+ content: {
1663
+ "application/json": components["schemas"]["Error"];
1664
+ };
1665
+ };
1666
+ };
1667
+ };
1668
+ delete?: never;
1669
+ options?: never;
1670
+ head?: never;
1671
+ patch?: never;
1672
+ trace?: never;
1673
+ };
1401
1674
  "/v1/accounts/checkpoints/poll": {
1402
1675
  parameters: {
1403
1676
  query?: never;
@@ -1449,7 +1722,12 @@ export interface paths {
1449
1722
  full_name?: string | null;
1450
1723
  /** @description Present on status:"active". */
1451
1724
  headline?: string | null;
1452
- /** @description The seat this account occupies. Present on status:"active". */
1725
+ /** @description The seat this account occupies (canonical — supersedes the deprecated attached_seat_id). Present on status:"active". */
1726
+ seat_id?: string | null;
1727
+ /**
1728
+ * @deprecated
1729
+ * @description Deprecated — use seat_id (same value). Removed at the GA /v1 cutover. Present on status:"active".
1730
+ */
1453
1731
  attached_seat_id?: string | null;
1454
1732
  /** @description ISO-8601 expiry. Present on status:"pending". */
1455
1733
  expires_at?: string;
@@ -2058,15 +2336,168 @@ export interface paths {
2058
2336
  "application/json": components["schemas"]["Error"];
2059
2337
  };
2060
2338
  };
2061
- /** @description Account restricted from performing this operation. */
2062
- 422: {
2063
- headers: {
2064
- [name: string]: unknown;
2065
- };
2066
- content: {
2067
- "application/json": components["schemas"]["Error"];
2068
- };
2069
- };
2339
+ /** @description Account restricted from performing this operation. */
2340
+ 422: {
2341
+ headers: {
2342
+ [name: string]: unknown;
2343
+ };
2344
+ content: {
2345
+ "application/json": components["schemas"]["Error"];
2346
+ };
2347
+ };
2348
+ /** @description Quota exceeded — slow down and retry after the hinted delay. */
2349
+ 429: {
2350
+ headers: {
2351
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
2352
+ RateLimit: components["headers"]["RateLimit"];
2353
+ "Retry-After": components["headers"]["Retry-After"];
2354
+ [name: string]: unknown;
2355
+ };
2356
+ content: {
2357
+ "application/json": components["schemas"]["Error"];
2358
+ };
2359
+ };
2360
+ /** @description Internal server error. */
2361
+ 500: {
2362
+ headers: {
2363
+ [name: string]: unknown;
2364
+ };
2365
+ content: {
2366
+ "application/json": components["schemas"]["Error"];
2367
+ };
2368
+ };
2369
+ /** @description A temporary error occurred while processing the request. */
2370
+ 502: {
2371
+ headers: {
2372
+ [name: string]: unknown;
2373
+ };
2374
+ content: {
2375
+ "application/json": components["schemas"]["Error"];
2376
+ };
2377
+ };
2378
+ /** @description Service unavailable. */
2379
+ 503: {
2380
+ headers: {
2381
+ [name: string]: unknown;
2382
+ };
2383
+ content: {
2384
+ "application/json": components["schemas"]["Error"];
2385
+ };
2386
+ };
2387
+ /** @description Gateway timeout. */
2388
+ 504: {
2389
+ headers: {
2390
+ [name: string]: unknown;
2391
+ };
2392
+ content: {
2393
+ "application/json": components["schemas"]["Error"];
2394
+ };
2395
+ };
2396
+ };
2397
+ };
2398
+ put?: never;
2399
+ post?: never;
2400
+ delete?: never;
2401
+ options?: never;
2402
+ head?: never;
2403
+ patch?: never;
2404
+ trace?: never;
2405
+ };
2406
+ "/v1/invites/received/{invitation_id}": {
2407
+ parameters: {
2408
+ query?: never;
2409
+ header?: never;
2410
+ path?: never;
2411
+ cookie?: never;
2412
+ };
2413
+ get?: never;
2414
+ put?: never;
2415
+ /**
2416
+ * Accept or decline a received invitation
2417
+ * @description Accepts or declines a received connection invitation. Requires the shared_secret token from the received invitation (GET /v1/invites/received). An unrecognized invitation_id returns status:not_found rather than an error.
2418
+ */
2419
+ post: {
2420
+ parameters: {
2421
+ query?: never;
2422
+ header?: never;
2423
+ path: {
2424
+ /** @description The received invitation's id (from GET /v1/invites/received items[].id). */
2425
+ invitation_id: string;
2426
+ };
2427
+ cookie?: never;
2428
+ };
2429
+ requestBody: {
2430
+ content: {
2431
+ "application/json": {
2432
+ /** @description The linked LinkedIn account to act on behalf of. */
2433
+ account_id: string;
2434
+ /**
2435
+ * @description Whether to accept or decline the received invitation. Required with no default — prevents silent wrong-direction accidents.
2436
+ * @enum {string}
2437
+ */
2438
+ action: "accept" | "decline";
2439
+ /** @description Per-invitation token issued by the platform. Required to accept or decline. Obtain it from GET /v1/invites/received (items[].specifics.shared_secret). Passed to the platform and immediately discarded — never stored. */
2440
+ shared_secret: string;
2441
+ };
2442
+ };
2443
+ };
2444
+ responses: {
2445
+ /** @description Invitation handled, or already absent (not_found) */
2446
+ 200: {
2447
+ headers: {
2448
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
2449
+ RateLimit: components["headers"]["RateLimit"];
2450
+ [name: string]: unknown;
2451
+ };
2452
+ content: {
2453
+ "application/json": {
2454
+ /**
2455
+ * @description Response type discriminator.
2456
+ * @enum {string}
2457
+ */
2458
+ object?: "invitation_handled";
2459
+ /** @description The handled invitation's id. */
2460
+ invitation_id?: string;
2461
+ /**
2462
+ * @description The action that was taken.
2463
+ * @enum {string}
2464
+ */
2465
+ action?: "accept" | "decline";
2466
+ /**
2467
+ * @description Outcome status. not_found means the invitation was already absent — not an error.
2468
+ * @enum {string}
2469
+ */
2470
+ status?: "accepted" | "declined" | "not_found";
2471
+ };
2472
+ };
2473
+ };
2474
+ /** @description Invalid request — missing or malformed parameters. */
2475
+ 400: {
2476
+ headers: {
2477
+ [name: string]: unknown;
2478
+ };
2479
+ content: {
2480
+ "application/json": components["schemas"]["Error"];
2481
+ };
2482
+ };
2483
+ /** @description Missing or invalid API key. */
2484
+ 401: {
2485
+ headers: {
2486
+ [name: string]: unknown;
2487
+ };
2488
+ content: {
2489
+ "application/json": components["schemas"]["Error"];
2490
+ };
2491
+ };
2492
+ /** @description Account not found or not owned by this tenant. */
2493
+ 404: {
2494
+ headers: {
2495
+ [name: string]: unknown;
2496
+ };
2497
+ content: {
2498
+ "application/json": components["schemas"]["Error"];
2499
+ };
2500
+ };
2070
2501
  /** @description Quota exceeded — slow down and retry after the hinted delay. */
2071
2502
  429: {
2072
2503
  headers: {
@@ -2117,15 +2548,13 @@ export interface paths {
2117
2548
  };
2118
2549
  };
2119
2550
  };
2120
- put?: never;
2121
- post?: never;
2122
2551
  delete?: never;
2123
2552
  options?: never;
2124
2553
  head?: never;
2125
2554
  patch?: never;
2126
2555
  trace?: never;
2127
2556
  };
2128
- "/v1/invites/received/{invitation_id}": {
2557
+ "/v1/invites/{invitation_id}": {
2129
2558
  parameters: {
2130
2559
  query?: never;
2131
2560
  header?: never;
@@ -2134,37 +2563,27 @@ export interface paths {
2134
2563
  };
2135
2564
  get?: never;
2136
2565
  put?: never;
2566
+ post?: never;
2137
2567
  /**
2138
- * Accept or decline a received invitation
2139
- * @description Accepts or declines a received connection invitation. Requires the shared_secret token from the received invitation (GET /v1/invites/received). An unrecognized invitation_id returns status:not_found rather than an error.
2568
+ * Cancel a sent invitation
2569
+ * @description Cancels a previously sent connection invitation by id. An already-absent or unrecognized invitation_id returns status:not_found rather than an error.
2140
2570
  */
2141
- post: {
2571
+ delete: {
2142
2572
  parameters: {
2143
- query?: never;
2573
+ query: {
2574
+ /** @description The linked LinkedIn account to act on behalf of. */
2575
+ account_id: string;
2576
+ };
2144
2577
  header?: never;
2145
2578
  path: {
2146
- /** @description The received invitation's id (from GET /v1/invites/received items[].id). */
2579
+ /** @description The sent invitation's id to cancel. */
2147
2580
  invitation_id: string;
2148
2581
  };
2149
2582
  cookie?: never;
2150
2583
  };
2151
- requestBody: {
2152
- content: {
2153
- "application/json": {
2154
- /** @description The linked LinkedIn account to act on behalf of. */
2155
- account_id: string;
2156
- /**
2157
- * @description Whether to accept or decline the received invitation. Required with no default — prevents silent wrong-direction accidents.
2158
- * @enum {string}
2159
- */
2160
- action: "accept" | "decline";
2161
- /** @description Per-invitation token issued by the platform. Required to accept or decline. Obtain it from GET /v1/invites/received (items[].specifics.shared_secret). Passed to the platform and immediately discarded — never stored. */
2162
- shared_secret: string;
2163
- };
2164
- };
2165
- };
2584
+ requestBody?: never;
2166
2585
  responses: {
2167
- /** @description Invitation handled, or already absent (not_found) */
2586
+ /** @description Invitation canceled, or already absent (not_found). */
2168
2587
  200: {
2169
2588
  headers: {
2170
2589
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -2177,19 +2596,14 @@ export interface paths {
2177
2596
  * @description Response type discriminator.
2178
2597
  * @enum {string}
2179
2598
  */
2180
- object?: "invitation_handled";
2181
- /** @description The handled invitation's id. */
2599
+ object?: "invitation_canceled";
2600
+ /** @description The canceled invitation's id. */
2182
2601
  invitation_id?: string;
2183
- /**
2184
- * @description The action that was taken.
2185
- * @enum {string}
2186
- */
2187
- action?: "accept" | "decline";
2188
2602
  /**
2189
2603
  * @description Outcome status. not_found means the invitation was already absent — not an error.
2190
2604
  * @enum {string}
2191
2605
  */
2192
- status?: "accepted" | "declined" | "not_found";
2606
+ status?: "canceled" | "not_found";
2193
2607
  };
2194
2608
  };
2195
2609
  };
@@ -2270,42 +2684,38 @@ export interface paths {
2270
2684
  };
2271
2685
  };
2272
2686
  };
2273
- delete?: never;
2274
2687
  options?: never;
2275
2688
  head?: never;
2276
2689
  patch?: never;
2277
2690
  trace?: never;
2278
2691
  };
2279
- "/v1/invites/{invitation_id}": {
2692
+ "/v1/jobs/{job_id}": {
2280
2693
  parameters: {
2281
2694
  query?: never;
2282
2695
  header?: never;
2283
2696
  path?: never;
2284
2697
  cookie?: never;
2285
2698
  };
2286
- get?: never;
2287
- put?: never;
2288
- post?: never;
2289
2699
  /**
2290
- * Cancel a sent invitation
2291
- * @description Cancels a previously sent connection invitation by id. An already-absent or unrecognized invitation_id returns status:not_found rather than an error.
2700
+ * Get job posting
2701
+ * @description Returns one public LinkedIn job posting's full detail title, company, location, description, and applicant count.
2292
2702
  */
2293
- delete: {
2703
+ get: {
2294
2704
  parameters: {
2295
2705
  query: {
2296
- /** @description The linked LinkedIn account to act on behalf of. */
2706
+ /** @description The connected LinkedIn account to retrieve the job posting on behalf of. */
2297
2707
  account_id: string;
2298
2708
  };
2299
2709
  header?: never;
2300
2710
  path: {
2301
- /** @description The sent invitation's id to cancel. */
2302
- invitation_id: string;
2711
+ /** @description The numeric id of the job posting, e.g. 4428113858. This is the number in a LinkedIn job URL (https://www.linkedin.com/jobs/view/4428113858) and the job_urn value in a POST /v1/search/jobs result. Pass the number only — a full URL is not accepted by the API (the SDK and CLI extract the id from a URL for you). */
2712
+ job_id: string;
2303
2713
  };
2304
2714
  cookie?: never;
2305
2715
  };
2306
2716
  requestBody?: never;
2307
2717
  responses: {
2308
- /** @description Invitation canceled, or already absent (not_found). */
2718
+ /** @description The job posting's full detail. Content fields (title, description) are returned verbatim and are never stored. */
2309
2719
  200: {
2310
2720
  headers: {
2311
2721
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -2318,18 +2728,35 @@ export interface paths {
2318
2728
  * @description Response type discriminator.
2319
2729
  * @enum {string}
2320
2730
  */
2321
- object?: "invitation_canceled";
2322
- /** @description The canceled invitation's id. */
2323
- invitation_id?: string;
2324
- /**
2325
- * @description Outcome status. not_found means the invitation was already absent — not an error.
2326
- * @enum {string}
2327
- */
2328
- status?: "canceled" | "not_found";
2731
+ object: "job_posting";
2732
+ /** @description The job posting's numeric identifier. */
2733
+ id: string;
2734
+ /** @description Job title (content pass-through — never stored). */
2735
+ title: string;
2736
+ /** @description Hiring company's display name. */
2737
+ company: string;
2738
+ /** @description The hiring company's id — pass it to GET /v1/profiles/companies/{company_id}. */
2739
+ company_id: string;
2740
+ /** @description Posting lifecycle state (e.g. active). */
2741
+ state: string;
2742
+ /** @description Job location, or null when not set. */
2743
+ location: string | null;
2744
+ /** @description Posting cost, in the currency the account bills in. */
2745
+ cost: number;
2746
+ /** @description Number of applicants so far. */
2747
+ applicants_counter: number;
2748
+ /** @description Full job description text (content pass-through — never stored). */
2749
+ description: string;
2750
+ /** @description ISO-8601 UTC timestamp the posting was created, or null when not set. */
2751
+ created_at: string | null;
2752
+ /** @description ISO-8601 UTC timestamp the posting was published, or null when not set. */
2753
+ published_at: string | null;
2754
+ /** @description Hiring team members associated with this posting, when the posting exposes any. */
2755
+ hiring_team: unknown[];
2329
2756
  };
2330
2757
  };
2331
2758
  };
2332
- /** @description Invalid request — missing or malformed parameters. */
2759
+ /** @description Missing or empty account_id. */
2333
2760
  400: {
2334
2761
  headers: {
2335
2762
  [name: string]: unknown;
@@ -2347,7 +2774,16 @@ export interface paths {
2347
2774
  "application/json": components["schemas"]["Error"];
2348
2775
  };
2349
2776
  };
2350
- /** @description Account not found or not owned by this tenant. */
2777
+ /** @description The account does not have the required Core seat. */
2778
+ 403: {
2779
+ headers: {
2780
+ [name: string]: unknown;
2781
+ };
2782
+ content: {
2783
+ "application/json": components["schemas"]["Error"];
2784
+ };
2785
+ };
2786
+ /** @description The account_id does not belong to this tenant, or the job posting was not found. */
2351
2787
  404: {
2352
2788
  headers: {
2353
2789
  [name: string]: unknown;
@@ -2356,7 +2792,16 @@ export interface paths {
2356
2792
  "application/json": components["schemas"]["Error"];
2357
2793
  };
2358
2794
  };
2359
- /** @description Quota exceeded slow down and retry after the hinted delay. */
2795
+ /** @description The account is restricted and cannot be queried. */
2796
+ 422: {
2797
+ headers: {
2798
+ [name: string]: unknown;
2799
+ };
2800
+ content: {
2801
+ "application/json": components["schemas"]["Error"];
2802
+ };
2803
+ };
2804
+ /** @description Rate limited — slow down and retry after the hinted delay. */
2360
2805
  429: {
2361
2806
  headers: {
2362
2807
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -2368,7 +2813,7 @@ export interface paths {
2368
2813
  "application/json": components["schemas"]["Error"];
2369
2814
  };
2370
2815
  };
2371
- /** @description Internal server error. */
2816
+ /** @description Internal error. */
2372
2817
  500: {
2373
2818
  headers: {
2374
2819
  [name: string]: unknown;
@@ -2377,7 +2822,7 @@ export interface paths {
2377
2822
  "application/json": components["schemas"]["Error"];
2378
2823
  };
2379
2824
  };
2380
- /** @description A temporary error occurred while processing the request. */
2825
+ /** @description A temporary error occurred. Please try again. */
2381
2826
  502: {
2382
2827
  headers: {
2383
2828
  [name: string]: unknown;
@@ -2406,6 +2851,9 @@ export interface paths {
2406
2851
  };
2407
2852
  };
2408
2853
  };
2854
+ put?: never;
2855
+ post?: never;
2856
+ delete?: never;
2409
2857
  options?: never;
2410
2858
  head?: never;
2411
2859
  patch?: never;
@@ -11103,6 +11551,176 @@ export interface paths {
11103
11551
  patch?: never;
11104
11552
  trace?: never;
11105
11553
  };
11554
+ "/v1/recruiter/jobs/{job_id}": {
11555
+ parameters: {
11556
+ query?: never;
11557
+ header?: never;
11558
+ path?: never;
11559
+ cookie?: never;
11560
+ };
11561
+ /**
11562
+ * Get job posting
11563
+ * @description Returns one public LinkedIn job posting's full detail (RECRUITER lens) — title, company, location, description, and applicant count. Requires a Recruiter seat.
11564
+ */
11565
+ get: {
11566
+ parameters: {
11567
+ query: {
11568
+ /** @description The connected LinkedIn account to retrieve the job posting on behalf of. */
11569
+ account_id: string;
11570
+ };
11571
+ header?: never;
11572
+ path: {
11573
+ /** @description The numeric id of the job posting, e.g. 4428113858. This is the number in a LinkedIn job URL (https://www.linkedin.com/jobs/view/4428113858) and the job_urn value in a POST /v1/search/jobs result. Pass the number only — a full URL is not accepted by the API (the SDK and CLI extract the id from a URL for you). */
11574
+ job_id: string;
11575
+ };
11576
+ cookie?: never;
11577
+ };
11578
+ requestBody?: never;
11579
+ responses: {
11580
+ /** @description The job posting's full detail (RECRUITER lens — the same job_posting shape as the Core retrieve; content fields are returned verbatim and never stored). Requires a Recruiter seat. */
11581
+ 200: {
11582
+ headers: {
11583
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
11584
+ RateLimit: components["headers"]["RateLimit"];
11585
+ [name: string]: unknown;
11586
+ };
11587
+ content: {
11588
+ "application/json": {
11589
+ /**
11590
+ * @description Response type discriminator.
11591
+ * @enum {string}
11592
+ */
11593
+ object: "job_posting";
11594
+ /** @description The job posting's numeric identifier. */
11595
+ id: string;
11596
+ /** @description Job title (content pass-through — never stored). */
11597
+ title: string;
11598
+ /** @description Hiring company's display name. */
11599
+ company: string;
11600
+ /** @description The hiring company's id — pass it to GET /v1/profiles/companies/{company_id}. */
11601
+ company_id: string;
11602
+ /** @description Posting lifecycle state (e.g. active). */
11603
+ state: string;
11604
+ /** @description Job location, or null when not set. */
11605
+ location: string | null;
11606
+ /** @description Posting cost, in the currency the account bills in. */
11607
+ cost: number;
11608
+ /** @description Number of applicants so far. */
11609
+ applicants_counter: number;
11610
+ /** @description Full job description text (content pass-through — never stored). */
11611
+ description: string;
11612
+ /** @description ISO-8601 UTC timestamp the posting was created, or null when not set. */
11613
+ created_at: string | null;
11614
+ /** @description ISO-8601 UTC timestamp the posting was published, or null when not set. */
11615
+ published_at: string | null;
11616
+ /** @description Hiring team members associated with this posting, when the posting exposes any. */
11617
+ hiring_team: unknown[];
11618
+ };
11619
+ };
11620
+ };
11621
+ /** @description Missing or empty account_id. */
11622
+ 400: {
11623
+ headers: {
11624
+ [name: string]: unknown;
11625
+ };
11626
+ content: {
11627
+ "application/json": components["schemas"]["Error"];
11628
+ };
11629
+ };
11630
+ /** @description Missing or invalid API key, or LinkedIn authentication failed. */
11631
+ 401: {
11632
+ headers: {
11633
+ [name: string]: unknown;
11634
+ };
11635
+ content: {
11636
+ "application/json": components["schemas"]["Error"];
11637
+ };
11638
+ };
11639
+ /** @description The account does not have the required Recruiter seat. */
11640
+ 403: {
11641
+ headers: {
11642
+ [name: string]: unknown;
11643
+ };
11644
+ content: {
11645
+ "application/json": components["schemas"]["Error"];
11646
+ };
11647
+ };
11648
+ /** @description The account_id does not belong to this tenant, or the job posting was not found. */
11649
+ 404: {
11650
+ headers: {
11651
+ [name: string]: unknown;
11652
+ };
11653
+ content: {
11654
+ "application/json": components["schemas"]["Error"];
11655
+ };
11656
+ };
11657
+ /** @description The account is restricted and cannot be queried. */
11658
+ 422: {
11659
+ headers: {
11660
+ [name: string]: unknown;
11661
+ };
11662
+ content: {
11663
+ "application/json": components["schemas"]["Error"];
11664
+ };
11665
+ };
11666
+ /** @description Rate limited — slow down and retry after the hinted delay. */
11667
+ 429: {
11668
+ headers: {
11669
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
11670
+ RateLimit: components["headers"]["RateLimit"];
11671
+ "Retry-After": components["headers"]["Retry-After"];
11672
+ [name: string]: unknown;
11673
+ };
11674
+ content: {
11675
+ "application/json": components["schemas"]["Error"];
11676
+ };
11677
+ };
11678
+ /** @description Internal error. */
11679
+ 500: {
11680
+ headers: {
11681
+ [name: string]: unknown;
11682
+ };
11683
+ content: {
11684
+ "application/json": components["schemas"]["Error"];
11685
+ };
11686
+ };
11687
+ /** @description A temporary error occurred. Please try again. */
11688
+ 502: {
11689
+ headers: {
11690
+ [name: string]: unknown;
11691
+ };
11692
+ content: {
11693
+ "application/json": components["schemas"]["Error"];
11694
+ };
11695
+ };
11696
+ /** @description Service unavailable. */
11697
+ 503: {
11698
+ headers: {
11699
+ [name: string]: unknown;
11700
+ };
11701
+ content: {
11702
+ "application/json": components["schemas"]["Error"];
11703
+ };
11704
+ };
11705
+ /** @description Gateway timeout. */
11706
+ 504: {
11707
+ headers: {
11708
+ [name: string]: unknown;
11709
+ };
11710
+ content: {
11711
+ "application/json": components["schemas"]["Error"];
11712
+ };
11713
+ };
11714
+ };
11715
+ };
11716
+ put?: never;
11717
+ post?: never;
11718
+ delete?: never;
11719
+ options?: never;
11720
+ head?: never;
11721
+ patch?: never;
11722
+ trace?: never;
11723
+ };
11106
11724
  "/v1/recruiter/jobs/{job_id}/applicants": {
11107
11725
  parameters: {
11108
11726
  query?: never;
@@ -14794,8 +15412,10 @@ export interface paths {
14794
15412
  /** @description Opaque next-call cursor. */
14795
15413
  version?: string;
14796
15414
  changes?: {
14797
- previous_status?: string | null;
14798
- current_status?: string;
15415
+ /** @enum {string|null} */
15416
+ previous_status?: "active" | "reconnect_needed" | "restricted" | "connecting" | "disconnected" | null;
15417
+ /** @enum {string} */
15418
+ current_status?: "active" | "reconnect_needed" | "restricted" | "connecting" | "disconnected";
14799
15419
  detected_at?: string;
14800
15420
  }[];
14801
15421
  };