@medalsocial/sdk 1.4.0 → 1.5.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.
@@ -610,6 +610,91 @@ interface paths {
610
610
  patch?: never;
611
611
  trace?: never;
612
612
  };
613
+ "/api/v1/channels/connect-links": {
614
+ parameters: {
615
+ query?: never;
616
+ header?: never;
617
+ path?: never;
618
+ cookie?: never;
619
+ };
620
+ /**
621
+ * List connect links
622
+ * @description Link tokens are never returned.
623
+ */
624
+ get: operations["listChannelConnectLinks"];
625
+ put?: never;
626
+ /**
627
+ * Mint a hosted connect link
628
+ * @description Mints a single-use hosted connect link that lets an external person (no Medal account required) attach a channel account (e.g. `telegram_inbox`) to the workspace's helpdesk. The response's `data.url` contains the one-time link token EXACTLY ONCE — an idempotent replay (same `Idempotency-Key`) returns the link WITHOUT `url`. Requires the `channel.connect.manage` scope; OAuth callers additionally need the workspace `admin` role.
629
+ */
630
+ post: operations["createChannelConnectLink"];
631
+ delete?: never;
632
+ options?: never;
633
+ head?: never;
634
+ patch?: never;
635
+ trace?: never;
636
+ };
637
+ "/api/v1/channels/connect-links/{id}": {
638
+ parameters: {
639
+ query?: never;
640
+ header?: never;
641
+ path: {
642
+ id: components["parameters"]["Id"];
643
+ };
644
+ cookie?: never;
645
+ };
646
+ get?: never;
647
+ put?: never;
648
+ post?: never;
649
+ /**
650
+ * Revoke a connect link
651
+ * @description Revokes a pending connect link so it can no longer be consumed. OAuth callers need the workspace `admin` role.
652
+ */
653
+ delete: operations["revokeChannelConnectLink"];
654
+ options?: never;
655
+ head?: never;
656
+ patch?: never;
657
+ trace?: never;
658
+ };
659
+ "/api/v1/channels/connections": {
660
+ parameters: {
661
+ query?: never;
662
+ header?: never;
663
+ path?: never;
664
+ cookie?: never;
665
+ };
666
+ /** List channel connections */
667
+ get: operations["listChannelConnections"];
668
+ put?: never;
669
+ post?: never;
670
+ delete?: never;
671
+ options?: never;
672
+ head?: never;
673
+ patch?: never;
674
+ trace?: never;
675
+ };
676
+ "/api/v1/channels/connections/{id}": {
677
+ parameters: {
678
+ query?: never;
679
+ header?: never;
680
+ path: {
681
+ id: components["parameters"]["Id"];
682
+ };
683
+ cookie?: never;
684
+ };
685
+ get?: never;
686
+ put?: never;
687
+ post?: never;
688
+ /**
689
+ * Disconnect a channel connection
690
+ * @description Disconnects a connected channel account (best-effort platform logout, then local revoke). Emits a `helpdesk.channel_disconnected` webhook event with `reason: "api_disconnect"` if the account was previously connected. OAuth callers need the workspace `admin` role.
691
+ */
692
+ delete: operations["disconnectChannelConnection"];
693
+ options?: never;
694
+ head?: never;
695
+ patch?: never;
696
+ trace?: never;
697
+ };
613
698
  }
614
699
  type webhooks = Record<string, never>;
615
700
  interface components {
@@ -1242,6 +1327,68 @@ interface components {
1242
1327
  /** @constant */
1243
1328
  status: "queued";
1244
1329
  };
1330
+ /** @enum {string} */
1331
+ ConnectLinkStatus: "pending" | "consumed" | "expired" | "revoked";
1332
+ /** @enum {string} */
1333
+ ChannelConnectionState: "connecting" | "active" | "disconnected" | "disabled";
1334
+ CreateConnectLinkInput: {
1335
+ /** @description Channel type to connect (e.g. `telegram_inbox`). */
1336
+ channel_type: string;
1337
+ /** @description Display label shown on the hosted connect page. */
1338
+ label?: string;
1339
+ /**
1340
+ * Format: uri
1341
+ * @description URL the hosted page redirects to after a successful connect — must be https.
1342
+ */
1343
+ redirect_url?: string;
1344
+ };
1345
+ ConnectLinkCreateResult: {
1346
+ id: string;
1347
+ /**
1348
+ * Format: uri
1349
+ * @description Single-use hosted connect URL containing the one-time link token — present ONLY in the live create response. An idempotent replay of the create request omits it; the token can never be retrieved again.
1350
+ */
1351
+ url?: string;
1352
+ channel_type: string;
1353
+ label: string | null;
1354
+ status: components["schemas"]["ConnectLinkStatus"];
1355
+ /** @description Unix timestamp in milliseconds. */
1356
+ expires_at: number;
1357
+ };
1358
+ ConnectLink: {
1359
+ id: string;
1360
+ channel_type: string;
1361
+ label: string | null;
1362
+ status: components["schemas"]["ConnectLinkStatus"];
1363
+ /** @description Stable ref of the connection created by consuming this link, or `null`. */
1364
+ consumed_connection_ref: string | null;
1365
+ /** @description Unix timestamp in milliseconds. */
1366
+ expires_at: number;
1367
+ /** @description Unix timestamp in milliseconds. */
1368
+ created_at: number;
1369
+ };
1370
+ ConnectLinkRevokeResult: {
1371
+ id: string;
1372
+ /** @constant */
1373
+ status: "revoked";
1374
+ };
1375
+ ChannelConnection: {
1376
+ id: string;
1377
+ channel_type: string;
1378
+ label: string | null;
1379
+ state: components["schemas"]["ChannelConnectionState"];
1380
+ /** @description Privacy-preserving identity handle (e.g. a masked phone number). */
1381
+ masked_identity: string;
1382
+ /** @description Unix timestamp in milliseconds, or `null` if never active. */
1383
+ last_activity_at: number | null;
1384
+ /** @description Linked helpdesk channel connection ID, or `null`. */
1385
+ helpdesk_connection_id: string | null;
1386
+ };
1387
+ ChannelConnectionDisconnectResult: {
1388
+ id: string;
1389
+ /** @constant */
1390
+ state: "disconnected";
1391
+ };
1245
1392
  ApiResponse_PostCreateResult: components["schemas"]["Envelope_PostCreateResult"];
1246
1393
  ApiResponse_PostDetail: components["schemas"]["Envelope_PostDetail"];
1247
1394
  ApiResponse_Success: components["schemas"]["Envelope_Success"];
@@ -1277,6 +1424,11 @@ interface components {
1277
1424
  ApiResponse_WebhookDeleteResult: components["schemas"]["Envelope_WebhookDeleteResult"];
1278
1425
  ApiResponse_WebhookDeliveryArray: components["schemas"]["Envelope_WebhookDeliveryArray"];
1279
1426
  ApiResponse_WebhookTestResult: components["schemas"]["Envelope_WebhookTestResult"];
1427
+ ApiResponse_ConnectLinkCreateResult: components["schemas"]["Envelope_ConnectLinkCreateResult"];
1428
+ ApiResponse_ConnectLinkArray: components["schemas"]["Envelope_ConnectLinkArray"];
1429
+ ApiResponse_ConnectLinkRevokeResult: components["schemas"]["Envelope_ConnectLinkRevokeResult"];
1430
+ ApiResponse_ChannelConnectionArray: components["schemas"]["Envelope_ChannelConnectionArray"];
1431
+ ApiResponse_ChannelConnectionDisconnectResult: components["schemas"]["Envelope_ChannelConnectionDisconnectResult"];
1280
1432
  PaginatedResponse_Post: {
1281
1433
  data: components["schemas"]["Post"][];
1282
1434
  pagination: components["schemas"]["Pagination"];
@@ -1406,6 +1558,21 @@ interface components {
1406
1558
  Envelope_WebhookTestResult: {
1407
1559
  data: components["schemas"]["WebhookTestResult"];
1408
1560
  };
1561
+ Envelope_ConnectLinkCreateResult: {
1562
+ data: components["schemas"]["ConnectLinkCreateResult"];
1563
+ };
1564
+ Envelope_ConnectLinkArray: {
1565
+ data: components["schemas"]["ConnectLink"][];
1566
+ };
1567
+ Envelope_ConnectLinkRevokeResult: {
1568
+ data: components["schemas"]["ConnectLinkRevokeResult"];
1569
+ };
1570
+ Envelope_ChannelConnectionArray: {
1571
+ data: components["schemas"]["ChannelConnection"][];
1572
+ };
1573
+ Envelope_ChannelConnectionDisconnectResult: {
1574
+ data: components["schemas"]["ChannelConnectionDisconnectResult"];
1575
+ };
1409
1576
  };
1410
1577
  responses: {
1411
1578
  /** @description API error. */
@@ -2545,6 +2712,122 @@ interface operations {
2545
2712
  default: components["responses"]["ApiError"];
2546
2713
  };
2547
2714
  };
2715
+ listChannelConnectLinks: {
2716
+ parameters: {
2717
+ query?: {
2718
+ channel_type?: string;
2719
+ status?: components["schemas"]["ConnectLinkStatus"];
2720
+ };
2721
+ header?: never;
2722
+ path?: never;
2723
+ cookie?: never;
2724
+ };
2725
+ requestBody?: never;
2726
+ responses: {
2727
+ /** @description The workspace's connect links. */
2728
+ 200: {
2729
+ headers: {
2730
+ [name: string]: unknown;
2731
+ };
2732
+ content: {
2733
+ "application/json": components["schemas"]["ApiResponse_ConnectLinkArray"];
2734
+ };
2735
+ };
2736
+ default: components["responses"]["ApiError"];
2737
+ };
2738
+ };
2739
+ createChannelConnectLink: {
2740
+ parameters: {
2741
+ query?: never;
2742
+ header?: never;
2743
+ path?: never;
2744
+ cookie?: never;
2745
+ };
2746
+ requestBody: {
2747
+ content: {
2748
+ "application/json": components["schemas"]["CreateConnectLinkInput"];
2749
+ };
2750
+ };
2751
+ responses: {
2752
+ /** @description Minted connect link, including the one-time `url`. */
2753
+ 201: {
2754
+ headers: {
2755
+ [name: string]: unknown;
2756
+ };
2757
+ content: {
2758
+ "application/json": components["schemas"]["ApiResponse_ConnectLinkCreateResult"];
2759
+ };
2760
+ };
2761
+ default: components["responses"]["ApiError"];
2762
+ };
2763
+ };
2764
+ revokeChannelConnectLink: {
2765
+ parameters: {
2766
+ query?: never;
2767
+ header?: never;
2768
+ path: {
2769
+ id: components["parameters"]["Id"];
2770
+ };
2771
+ cookie?: never;
2772
+ };
2773
+ requestBody?: never;
2774
+ responses: {
2775
+ /** @description Revoke result. */
2776
+ 200: {
2777
+ headers: {
2778
+ [name: string]: unknown;
2779
+ };
2780
+ content: {
2781
+ "application/json": components["schemas"]["ApiResponse_ConnectLinkRevokeResult"];
2782
+ };
2783
+ };
2784
+ default: components["responses"]["ApiError"];
2785
+ };
2786
+ };
2787
+ listChannelConnections: {
2788
+ parameters: {
2789
+ query?: never;
2790
+ header?: never;
2791
+ path?: never;
2792
+ cookie?: never;
2793
+ };
2794
+ requestBody?: never;
2795
+ responses: {
2796
+ /** @description The workspace's channel connections (generic shape). */
2797
+ 200: {
2798
+ headers: {
2799
+ [name: string]: unknown;
2800
+ };
2801
+ content: {
2802
+ "application/json": components["schemas"]["ApiResponse_ChannelConnectionArray"];
2803
+ };
2804
+ };
2805
+ default: components["responses"]["ApiError"];
2806
+ };
2807
+ };
2808
+ disconnectChannelConnection: {
2809
+ parameters: {
2810
+ query?: never;
2811
+ header?: never;
2812
+ path: {
2813
+ id: components["parameters"]["Id"];
2814
+ };
2815
+ cookie?: never;
2816
+ };
2817
+ requestBody?: never;
2818
+ responses: {
2819
+ /** @description Disconnect result. */
2820
+ 200: {
2821
+ headers: {
2822
+ [name: string]: unknown;
2823
+ };
2824
+ content: {
2825
+ "application/json": components["schemas"]["ApiResponse_ChannelConnectionDisconnectResult"];
2826
+ };
2827
+ };
2828
+ default: components["responses"]["ApiError"];
2829
+ };
2830
+ };
2548
2831
  }
2549
2832
 
2550
2833
  export type { $defs, components, operations, paths, webhooks };