@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.
- package/CHANGELOG.md +26 -0
- package/dist/index.d.ts +767 -67
- package/dist/index.js +96 -0
- package/package.json +1 -1
- package/src/generated/types.ts +692 -72
package/src/generated/types.ts
CHANGED
|
@@ -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/
|
|
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
|
-
*
|
|
2139
|
-
* @description
|
|
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
|
-
|
|
2571
|
+
delete: {
|
|
2142
2572
|
parameters: {
|
|
2143
|
-
query
|
|
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
|
|
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
|
|
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?: "
|
|
2181
|
-
/** @description The
|
|
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?: "
|
|
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/
|
|
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
|
-
*
|
|
2291
|
-
* @description
|
|
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
|
-
|
|
2703
|
+
get: {
|
|
2294
2704
|
parameters: {
|
|
2295
2705
|
query: {
|
|
2296
|
-
/** @description The
|
|
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
|
|
2302
|
-
|
|
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
|
|
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
|
|
2322
|
-
/** @description The
|
|
2323
|
-
|
|
2324
|
-
/**
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
14798
|
-
|
|
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
|
};
|