@medalsocial/sdk 1.2.1 → 1.4.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/README.md +131 -1
- package/dist/openapi/medal-social.openapi.json +1446 -201
- package/dist/pilot/index.d.mts +64 -324
- package/dist/pilot/index.d.ts +64 -324
- package/dist/pilot/index.js +5 -5
- package/dist/pilot/index.js.map +1 -1
- package/dist/pilot/index.mjs +5 -5
- package/dist/pilot/index.mjs.map +1 -1
- package/dist/src/index.d.mts +468 -7
- package/dist/src/index.d.ts +468 -7
- package/dist/src/index.js +232 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +226 -9
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +696 -1
- package/dist/src/openapi.generated.d.ts +696 -1
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +748 -3
- package/package.json +21 -21
|
@@ -25,6 +25,10 @@ tags:
|
|
|
25
25
|
description: Manage exports, consent records, and cookie consent.
|
|
26
26
|
- name: Workspaces
|
|
27
27
|
description: Inspect workspaces accessible to the current credential.
|
|
28
|
+
- name: Helpdesk
|
|
29
|
+
description: Read helpdesk conversations, reply, and manage assignment/status.
|
|
30
|
+
- name: Webhooks
|
|
31
|
+
description: Manage webhook endpoints and inspect their deliveries.
|
|
28
32
|
paths:
|
|
29
33
|
/api/v1/posts:
|
|
30
34
|
get:
|
|
@@ -645,6 +649,283 @@ paths:
|
|
|
645
649
|
$ref: "#/components/schemas/ApiResponse_WorkspaceArray"
|
|
646
650
|
default:
|
|
647
651
|
$ref: "#/components/responses/ApiError"
|
|
652
|
+
/api/v1/helpdesk/conversations:
|
|
653
|
+
get:
|
|
654
|
+
tags: [Helpdesk]
|
|
655
|
+
operationId: listHelpdeskConversations
|
|
656
|
+
summary: List helpdesk conversations
|
|
657
|
+
parameters:
|
|
658
|
+
- name: limit
|
|
659
|
+
in: query
|
|
660
|
+
schema:
|
|
661
|
+
type: integer
|
|
662
|
+
minimum: 1
|
|
663
|
+
maximum: 100
|
|
664
|
+
- $ref: "#/components/parameters/Cursor"
|
|
665
|
+
- name: status
|
|
666
|
+
in: query
|
|
667
|
+
schema:
|
|
668
|
+
$ref: "#/components/schemas/HelpdeskConversationStatus"
|
|
669
|
+
- name: assignee_user_id
|
|
670
|
+
in: query
|
|
671
|
+
schema:
|
|
672
|
+
type: string
|
|
673
|
+
description: Only conversations assigned to this user.
|
|
674
|
+
- name: requester
|
|
675
|
+
in: query
|
|
676
|
+
schema:
|
|
677
|
+
type: string
|
|
678
|
+
description: Match against visitor name/email.
|
|
679
|
+
- name: query
|
|
680
|
+
in: query
|
|
681
|
+
schema:
|
|
682
|
+
type: string
|
|
683
|
+
description: Free-text search query.
|
|
684
|
+
- name: channels
|
|
685
|
+
in: query
|
|
686
|
+
schema:
|
|
687
|
+
type: string
|
|
688
|
+
description: Comma-separated channel types (e.g. `widget,whatsapp`).
|
|
689
|
+
responses:
|
|
690
|
+
"200":
|
|
691
|
+
description: Conversations page.
|
|
692
|
+
content:
|
|
693
|
+
application/json:
|
|
694
|
+
schema:
|
|
695
|
+
$ref: "#/components/schemas/PaginatedResponse_HelpdeskConversation"
|
|
696
|
+
default:
|
|
697
|
+
$ref: "#/components/responses/ApiError"
|
|
698
|
+
/api/v1/helpdesk/conversations/{id}:
|
|
699
|
+
parameters:
|
|
700
|
+
- $ref: "#/components/parameters/Id"
|
|
701
|
+
get:
|
|
702
|
+
tags: [Helpdesk]
|
|
703
|
+
operationId: getHelpdeskConversation
|
|
704
|
+
summary: Get a helpdesk conversation
|
|
705
|
+
responses:
|
|
706
|
+
"200":
|
|
707
|
+
description: Conversation.
|
|
708
|
+
content:
|
|
709
|
+
application/json:
|
|
710
|
+
schema:
|
|
711
|
+
$ref: "#/components/schemas/ApiResponse_HelpdeskConversation"
|
|
712
|
+
default:
|
|
713
|
+
$ref: "#/components/responses/ApiError"
|
|
714
|
+
patch:
|
|
715
|
+
tags: [Helpdesk]
|
|
716
|
+
operationId: updateHelpdeskConversation
|
|
717
|
+
summary: Update a conversation's status or assignee
|
|
718
|
+
description: >-
|
|
719
|
+
Set `status` and/or `assignee_user_id` (`null` unassigns). At least one
|
|
720
|
+
field is required. Capability-scoped tokens must send `Idempotency-Key`
|
|
721
|
+
and `X-Capability-Confirmation` headers on this route; API keys with
|
|
722
|
+
legacy scopes may omit them.
|
|
723
|
+
requestBody:
|
|
724
|
+
required: true
|
|
725
|
+
content:
|
|
726
|
+
application/json:
|
|
727
|
+
schema:
|
|
728
|
+
$ref: "#/components/schemas/UpdateHelpdeskConversationInput"
|
|
729
|
+
responses:
|
|
730
|
+
"200":
|
|
731
|
+
description: Update result.
|
|
732
|
+
content:
|
|
733
|
+
application/json:
|
|
734
|
+
schema:
|
|
735
|
+
$ref: "#/components/schemas/ApiResponse_HelpdeskConversationUpdateResult"
|
|
736
|
+
default:
|
|
737
|
+
$ref: "#/components/responses/ApiError"
|
|
738
|
+
/api/v1/helpdesk/conversations/{id}/messages:
|
|
739
|
+
parameters:
|
|
740
|
+
- $ref: "#/components/parameters/Id"
|
|
741
|
+
get:
|
|
742
|
+
tags: [Helpdesk]
|
|
743
|
+
operationId: listHelpdeskConversationMessages
|
|
744
|
+
summary: List conversation messages
|
|
745
|
+
parameters:
|
|
746
|
+
- name: limit
|
|
747
|
+
in: query
|
|
748
|
+
schema:
|
|
749
|
+
type: integer
|
|
750
|
+
minimum: 1
|
|
751
|
+
maximum: 50
|
|
752
|
+
- $ref: "#/components/parameters/Cursor"
|
|
753
|
+
responses:
|
|
754
|
+
"200":
|
|
755
|
+
description: Messages page.
|
|
756
|
+
content:
|
|
757
|
+
application/json:
|
|
758
|
+
schema:
|
|
759
|
+
$ref: "#/components/schemas/PaginatedResponse_HelpdeskMessage"
|
|
760
|
+
"404":
|
|
761
|
+
description: Conversation not found.
|
|
762
|
+
content:
|
|
763
|
+
application/json:
|
|
764
|
+
schema:
|
|
765
|
+
$ref: "#/components/schemas/ApiError"
|
|
766
|
+
default:
|
|
767
|
+
$ref: "#/components/responses/ApiError"
|
|
768
|
+
/api/v1/helpdesk/replies:
|
|
769
|
+
post:
|
|
770
|
+
tags: [Helpdesk]
|
|
771
|
+
operationId: createHelpdeskReply
|
|
772
|
+
summary: Send an operator reply or internal note
|
|
773
|
+
description: >-
|
|
774
|
+
Send an `Idempotency-Key` header so retried requests do not create
|
|
775
|
+
duplicate messages — it is required for capability-scoped tokens
|
|
776
|
+
(together with `X-Capability-Confirmation`).
|
|
777
|
+
requestBody:
|
|
778
|
+
required: true
|
|
779
|
+
content:
|
|
780
|
+
application/json:
|
|
781
|
+
schema:
|
|
782
|
+
$ref: "#/components/schemas/CreateHelpdeskReplyInput"
|
|
783
|
+
responses:
|
|
784
|
+
"201":
|
|
785
|
+
description: Created reply reference.
|
|
786
|
+
content:
|
|
787
|
+
application/json:
|
|
788
|
+
schema:
|
|
789
|
+
$ref: "#/components/schemas/ApiResponse_HelpdeskReplyCreateResult"
|
|
790
|
+
default:
|
|
791
|
+
$ref: "#/components/responses/ApiError"
|
|
792
|
+
/api/v1/webhooks:
|
|
793
|
+
get:
|
|
794
|
+
tags: [Webhooks]
|
|
795
|
+
operationId: listWebhooks
|
|
796
|
+
summary: List webhook endpoints
|
|
797
|
+
responses:
|
|
798
|
+
"200":
|
|
799
|
+
description: Webhook endpoints.
|
|
800
|
+
content:
|
|
801
|
+
application/json:
|
|
802
|
+
schema:
|
|
803
|
+
$ref: "#/components/schemas/ApiResponse_WebhookEndpointArray"
|
|
804
|
+
default:
|
|
805
|
+
$ref: "#/components/responses/ApiError"
|
|
806
|
+
post:
|
|
807
|
+
tags: [Webhooks]
|
|
808
|
+
operationId: createWebhook
|
|
809
|
+
summary: Create a webhook endpoint
|
|
810
|
+
description: >-
|
|
811
|
+
The response's `data.secret` contains the signing secret EXACTLY ONCE —
|
|
812
|
+
it can never be retrieved again, so store it securely immediately. An
|
|
813
|
+
idempotent replay (same `Idempotency-Key`) returns the existing
|
|
814
|
+
endpoint WITHOUT `secret`. Deliveries are HTTP POSTs signed with
|
|
815
|
+
`X-Medal-Signature: sha256=<base64(HMAC-SHA256("{timestamp}.{rawBody}",
|
|
816
|
+
secret))>` plus `X-Medal-Timestamp`, `X-Medal-Event`, and
|
|
817
|
+
`X-Medal-Delivery-Id` / `Idempotency-Key` headers.
|
|
818
|
+
requestBody:
|
|
819
|
+
required: true
|
|
820
|
+
content:
|
|
821
|
+
application/json:
|
|
822
|
+
schema:
|
|
823
|
+
$ref: "#/components/schemas/CreateWebhookInput"
|
|
824
|
+
responses:
|
|
825
|
+
"201":
|
|
826
|
+
description: Created endpoint, including the one-time `secret`.
|
|
827
|
+
content:
|
|
828
|
+
application/json:
|
|
829
|
+
schema:
|
|
830
|
+
$ref: "#/components/schemas/ApiResponse_WebhookEndpoint"
|
|
831
|
+
default:
|
|
832
|
+
$ref: "#/components/responses/ApiError"
|
|
833
|
+
/api/v1/webhooks/{id}:
|
|
834
|
+
parameters:
|
|
835
|
+
- $ref: "#/components/parameters/Id"
|
|
836
|
+
get:
|
|
837
|
+
tags: [Webhooks]
|
|
838
|
+
operationId: getWebhook
|
|
839
|
+
summary: Get a webhook endpoint
|
|
840
|
+
responses:
|
|
841
|
+
"200":
|
|
842
|
+
description: Webhook endpoint.
|
|
843
|
+
content:
|
|
844
|
+
application/json:
|
|
845
|
+
schema:
|
|
846
|
+
$ref: "#/components/schemas/ApiResponse_WebhookEndpoint"
|
|
847
|
+
default:
|
|
848
|
+
$ref: "#/components/responses/ApiError"
|
|
849
|
+
patch:
|
|
850
|
+
tags: [Webhooks]
|
|
851
|
+
operationId: updateWebhook
|
|
852
|
+
summary: Update a webhook endpoint
|
|
853
|
+
description: >-
|
|
854
|
+
Only provided fields change. Pass `null` for `channels` or
|
|
855
|
+
`channel_connection_ids` to clear that filter.
|
|
856
|
+
requestBody:
|
|
857
|
+
required: true
|
|
858
|
+
content:
|
|
859
|
+
application/json:
|
|
860
|
+
schema:
|
|
861
|
+
$ref: "#/components/schemas/UpdateWebhookInput"
|
|
862
|
+
responses:
|
|
863
|
+
"200":
|
|
864
|
+
description: Updated endpoint.
|
|
865
|
+
content:
|
|
866
|
+
application/json:
|
|
867
|
+
schema:
|
|
868
|
+
$ref: "#/components/schemas/ApiResponse_WebhookEndpoint"
|
|
869
|
+
default:
|
|
870
|
+
$ref: "#/components/responses/ApiError"
|
|
871
|
+
delete:
|
|
872
|
+
tags: [Webhooks]
|
|
873
|
+
operationId: deleteWebhook
|
|
874
|
+
summary: Delete a webhook endpoint
|
|
875
|
+
description: >-
|
|
876
|
+
Permanently deletes the endpoint and stops all outbound deliveries.
|
|
877
|
+
Capability-scoped tokens must send `Idempotency-Key` and
|
|
878
|
+
`X-Capability-Confirmation` headers on this route; API keys with legacy
|
|
879
|
+
scopes may omit them.
|
|
880
|
+
responses:
|
|
881
|
+
"200":
|
|
882
|
+
description: Delete result.
|
|
883
|
+
content:
|
|
884
|
+
application/json:
|
|
885
|
+
schema:
|
|
886
|
+
$ref: "#/components/schemas/ApiResponse_WebhookDeleteResult"
|
|
887
|
+
default:
|
|
888
|
+
$ref: "#/components/responses/ApiError"
|
|
889
|
+
/api/v1/webhooks/{id}/deliveries:
|
|
890
|
+
parameters:
|
|
891
|
+
- $ref: "#/components/parameters/Id"
|
|
892
|
+
get:
|
|
893
|
+
tags: [Webhooks]
|
|
894
|
+
operationId: listWebhookDeliveries
|
|
895
|
+
summary: List recent deliveries
|
|
896
|
+
parameters:
|
|
897
|
+
- name: limit
|
|
898
|
+
in: query
|
|
899
|
+
schema:
|
|
900
|
+
type: integer
|
|
901
|
+
minimum: 1
|
|
902
|
+
maximum: 100
|
|
903
|
+
responses:
|
|
904
|
+
"200":
|
|
905
|
+
description: Recent deliveries, most recent first.
|
|
906
|
+
content:
|
|
907
|
+
application/json:
|
|
908
|
+
schema:
|
|
909
|
+
$ref: "#/components/schemas/ApiResponse_WebhookDeliveryArray"
|
|
910
|
+
default:
|
|
911
|
+
$ref: "#/components/responses/ApiError"
|
|
912
|
+
/api/v1/webhooks/{id}/test:
|
|
913
|
+
parameters:
|
|
914
|
+
- $ref: "#/components/parameters/Id"
|
|
915
|
+
post:
|
|
916
|
+
tags: [Webhooks]
|
|
917
|
+
operationId: testWebhook
|
|
918
|
+
summary: Queue a test delivery
|
|
919
|
+
description: Queues a signed `test.ping` delivery to the endpoint.
|
|
920
|
+
responses:
|
|
921
|
+
"202":
|
|
922
|
+
description: Test delivery queued.
|
|
923
|
+
content:
|
|
924
|
+
application/json:
|
|
925
|
+
schema:
|
|
926
|
+
$ref: "#/components/schemas/ApiResponse_WebhookTestResult"
|
|
927
|
+
default:
|
|
928
|
+
$ref: "#/components/responses/ApiError"
|
|
648
929
|
components:
|
|
649
930
|
securitySchemes:
|
|
650
931
|
bearerAuth:
|
|
@@ -902,12 +1183,26 @@ components:
|
|
|
902
1183
|
type: string
|
|
903
1184
|
contact_id:
|
|
904
1185
|
type: string
|
|
1186
|
+
idempotency_key:
|
|
1187
|
+
type: string
|
|
1188
|
+
copy_to:
|
|
1189
|
+
type: string
|
|
1190
|
+
format: email
|
|
1191
|
+
copy_reply_to:
|
|
1192
|
+
type: string
|
|
1193
|
+
format: email
|
|
905
1194
|
EmailSendResult:
|
|
906
1195
|
type: object
|
|
907
|
-
required: [id, status]
|
|
1196
|
+
required: [id, copy_id, contact_id, status]
|
|
908
1197
|
properties:
|
|
909
1198
|
id:
|
|
910
|
-
type: string
|
|
1199
|
+
type: [string, "null"]
|
|
1200
|
+
description: Email send id — poll GET /api/v1/emails/{id} with it.
|
|
1201
|
+
copy_id:
|
|
1202
|
+
type: [string, "null"]
|
|
1203
|
+
description: Send id of the copy_to copy, or null when no copy was requested.
|
|
1204
|
+
contact_id:
|
|
1205
|
+
type: [string, "null"]
|
|
911
1206
|
status:
|
|
912
1207
|
type: string
|
|
913
1208
|
EmailSend:
|
|
@@ -987,7 +1282,7 @@ components:
|
|
|
987
1282
|
type: string
|
|
988
1283
|
BatchSendSummary:
|
|
989
1284
|
type: object
|
|
990
|
-
required: [batch_id, total, queued, failed]
|
|
1285
|
+
required: [batch_id, total, queued, failed, results]
|
|
991
1286
|
properties:
|
|
992
1287
|
batch_id:
|
|
993
1288
|
type: string
|
|
@@ -997,6 +1292,27 @@ components:
|
|
|
997
1292
|
type: integer
|
|
998
1293
|
failed:
|
|
999
1294
|
type: integer
|
|
1295
|
+
results:
|
|
1296
|
+
type: array
|
|
1297
|
+
description: Per-recipient outcome, in request order.
|
|
1298
|
+
items:
|
|
1299
|
+
$ref: "#/components/schemas/BatchSendRecipientResult"
|
|
1300
|
+
BatchSendRecipientResult:
|
|
1301
|
+
type: object
|
|
1302
|
+
required: [email, id, status, error]
|
|
1303
|
+
properties:
|
|
1304
|
+
email:
|
|
1305
|
+
type: string
|
|
1306
|
+
format: email
|
|
1307
|
+
id:
|
|
1308
|
+
type: [string, "null"]
|
|
1309
|
+
description: Email send id — poll GET /api/v1/emails/{id} with it. Null when not queued.
|
|
1310
|
+
status:
|
|
1311
|
+
type: string
|
|
1312
|
+
enum: [queued, failed]
|
|
1313
|
+
error:
|
|
1314
|
+
type: [string, "null"]
|
|
1315
|
+
description: Failure reason for recipients that were not queued.
|
|
1000
1316
|
EmailTemplate:
|
|
1001
1317
|
type: object
|
|
1002
1318
|
required:
|
|
@@ -1642,6 +1958,347 @@ components:
|
|
|
1642
1958
|
slug:
|
|
1643
1959
|
type: string
|
|
1644
1960
|
additionalProperties: true
|
|
1961
|
+
HelpdeskConversationStatus:
|
|
1962
|
+
type: string
|
|
1963
|
+
enum: [open, snoozed, closed]
|
|
1964
|
+
HelpdeskMessageAuthorType:
|
|
1965
|
+
type: string
|
|
1966
|
+
enum: [visitor, operator, ai, system]
|
|
1967
|
+
HelpdeskMessageType:
|
|
1968
|
+
type: string
|
|
1969
|
+
enum: [chat, email, note]
|
|
1970
|
+
description: >-
|
|
1971
|
+
`note` is operator-internal and never delivered to the customer.
|
|
1972
|
+
HelpdeskConversation:
|
|
1973
|
+
type: object
|
|
1974
|
+
required:
|
|
1975
|
+
- id
|
|
1976
|
+
- channel
|
|
1977
|
+
- channel_connection_id
|
|
1978
|
+
- status
|
|
1979
|
+
- subject
|
|
1980
|
+
- assignee_user_id
|
|
1981
|
+
- contact_id
|
|
1982
|
+
- visitor_name
|
|
1983
|
+
- visitor_email
|
|
1984
|
+
- external_conversation_id
|
|
1985
|
+
- channel_account_id
|
|
1986
|
+
- message_count
|
|
1987
|
+
- unread_for_operator
|
|
1988
|
+
- last_message_at
|
|
1989
|
+
- last_message_preview
|
|
1990
|
+
- last_message_author_type
|
|
1991
|
+
- created_at
|
|
1992
|
+
- updated_at
|
|
1993
|
+
properties:
|
|
1994
|
+
id:
|
|
1995
|
+
type: string
|
|
1996
|
+
channel:
|
|
1997
|
+
type: string
|
|
1998
|
+
description: >-
|
|
1999
|
+
Channel type, e.g. `widget`, `instagram`, `messenger`, `whatsapp`,
|
|
2000
|
+
`email`.
|
|
2001
|
+
channel_connection_id:
|
|
2002
|
+
type: [string, "null"]
|
|
2003
|
+
status:
|
|
2004
|
+
$ref: "#/components/schemas/HelpdeskConversationStatus"
|
|
2005
|
+
subject:
|
|
2006
|
+
type: [string, "null"]
|
|
2007
|
+
assignee_user_id:
|
|
2008
|
+
type: [string, "null"]
|
|
2009
|
+
contact_id:
|
|
2010
|
+
type: [string, "null"]
|
|
2011
|
+
visitor_name:
|
|
2012
|
+
type: [string, "null"]
|
|
2013
|
+
visitor_email:
|
|
2014
|
+
type: [string, "null"]
|
|
2015
|
+
external_conversation_id:
|
|
2016
|
+
type: [string, "null"]
|
|
2017
|
+
channel_account_id:
|
|
2018
|
+
type: [string, "null"]
|
|
2019
|
+
message_count:
|
|
2020
|
+
type: integer
|
|
2021
|
+
unread_for_operator:
|
|
2022
|
+
type: integer
|
|
2023
|
+
last_message_at:
|
|
2024
|
+
type: integer
|
|
2025
|
+
description: Unix timestamp in milliseconds.
|
|
2026
|
+
last_message_preview:
|
|
2027
|
+
type: [string, "null"]
|
|
2028
|
+
last_message_author_type:
|
|
2029
|
+
anyOf:
|
|
2030
|
+
- $ref: "#/components/schemas/HelpdeskMessageAuthorType"
|
|
2031
|
+
- type: "null"
|
|
2032
|
+
created_at:
|
|
2033
|
+
type: integer
|
|
2034
|
+
description: Unix timestamp in milliseconds.
|
|
2035
|
+
updated_at:
|
|
2036
|
+
type: integer
|
|
2037
|
+
description: Unix timestamp in milliseconds.
|
|
2038
|
+
HelpdeskMessage:
|
|
2039
|
+
type: object
|
|
2040
|
+
required:
|
|
2041
|
+
- id
|
|
2042
|
+
- conversation_id
|
|
2043
|
+
- author_type
|
|
2044
|
+
- message_type
|
|
2045
|
+
- author_user_id
|
|
2046
|
+
- author_name
|
|
2047
|
+
- body
|
|
2048
|
+
- created_at
|
|
2049
|
+
properties:
|
|
2050
|
+
id:
|
|
2051
|
+
type: string
|
|
2052
|
+
conversation_id:
|
|
2053
|
+
type: string
|
|
2054
|
+
author_type:
|
|
2055
|
+
$ref: "#/components/schemas/HelpdeskMessageAuthorType"
|
|
2056
|
+
message_type:
|
|
2057
|
+
$ref: "#/components/schemas/HelpdeskMessageType"
|
|
2058
|
+
author_user_id:
|
|
2059
|
+
type: [string, "null"]
|
|
2060
|
+
author_name:
|
|
2061
|
+
type: [string, "null"]
|
|
2062
|
+
body:
|
|
2063
|
+
type: string
|
|
2064
|
+
created_at:
|
|
2065
|
+
type: integer
|
|
2066
|
+
description: Unix timestamp in milliseconds.
|
|
2067
|
+
UpdateHelpdeskConversationInput:
|
|
2068
|
+
type: object
|
|
2069
|
+
minProperties: 1
|
|
2070
|
+
description: At least one field is required.
|
|
2071
|
+
properties:
|
|
2072
|
+
status:
|
|
2073
|
+
$ref: "#/components/schemas/HelpdeskConversationStatus"
|
|
2074
|
+
assignee_user_id:
|
|
2075
|
+
type: [string, "null"]
|
|
2076
|
+
description: User ID to assign, or `null` to unassign.
|
|
2077
|
+
HelpdeskConversationUpdateResult:
|
|
2078
|
+
type: object
|
|
2079
|
+
required: [id, status, assignee_user_id]
|
|
2080
|
+
properties:
|
|
2081
|
+
id:
|
|
2082
|
+
type: string
|
|
2083
|
+
status:
|
|
2084
|
+
$ref: "#/components/schemas/HelpdeskConversationStatus"
|
|
2085
|
+
assignee_user_id:
|
|
2086
|
+
type: [string, "null"]
|
|
2087
|
+
CreateHelpdeskReplyInput:
|
|
2088
|
+
type: object
|
|
2089
|
+
required: [conversation_id, body]
|
|
2090
|
+
properties:
|
|
2091
|
+
conversation_id:
|
|
2092
|
+
type: string
|
|
2093
|
+
body:
|
|
2094
|
+
type: string
|
|
2095
|
+
maxLength: 20000
|
|
2096
|
+
message_type:
|
|
2097
|
+
type: string
|
|
2098
|
+
enum: [chat, note]
|
|
2099
|
+
description: >-
|
|
2100
|
+
`note` = operator-internal note (not delivered to the customer).
|
|
2101
|
+
Default `chat`.
|
|
2102
|
+
author_name:
|
|
2103
|
+
type: string
|
|
2104
|
+
description: >-
|
|
2105
|
+
Agent display name for bridged replies (shown in widget + inbox).
|
|
2106
|
+
HelpdeskReplyCreateResult:
|
|
2107
|
+
type: object
|
|
2108
|
+
required: [id, conversation_id, status]
|
|
2109
|
+
properties:
|
|
2110
|
+
id:
|
|
2111
|
+
type: string
|
|
2112
|
+
conversation_id:
|
|
2113
|
+
type: string
|
|
2114
|
+
status:
|
|
2115
|
+
type: string
|
|
2116
|
+
const: created
|
|
2117
|
+
WebhookEndpoint:
|
|
2118
|
+
type: object
|
|
2119
|
+
required:
|
|
2120
|
+
- id
|
|
2121
|
+
- name
|
|
2122
|
+
- url
|
|
2123
|
+
- enabled
|
|
2124
|
+
- event_types
|
|
2125
|
+
- channels
|
|
2126
|
+
- channel_connection_ids
|
|
2127
|
+
- secret_last4
|
|
2128
|
+
- consecutive_failures
|
|
2129
|
+
- last_delivery_at
|
|
2130
|
+
- last_success_at
|
|
2131
|
+
- last_error_at
|
|
2132
|
+
- last_error
|
|
2133
|
+
- created_at
|
|
2134
|
+
- updated_at
|
|
2135
|
+
properties:
|
|
2136
|
+
id:
|
|
2137
|
+
type: string
|
|
2138
|
+
name:
|
|
2139
|
+
type: string
|
|
2140
|
+
url:
|
|
2141
|
+
type: string
|
|
2142
|
+
format: uri
|
|
2143
|
+
description: Destination URL (must be https).
|
|
2144
|
+
enabled:
|
|
2145
|
+
type: boolean
|
|
2146
|
+
event_types:
|
|
2147
|
+
type: array
|
|
2148
|
+
items:
|
|
2149
|
+
type: string
|
|
2150
|
+
description: Subscribed event types. Empty array = all events.
|
|
2151
|
+
channels:
|
|
2152
|
+
type: [array, "null"]
|
|
2153
|
+
items:
|
|
2154
|
+
type: string
|
|
2155
|
+
description: >-
|
|
2156
|
+
Channel-type filter (e.g. `['widget', 'whatsapp']`), or `null` for
|
|
2157
|
+
all channels.
|
|
2158
|
+
channel_connection_ids:
|
|
2159
|
+
type: [array, "null"]
|
|
2160
|
+
items:
|
|
2161
|
+
type: string
|
|
2162
|
+
description: Channel-connection filter, or `null` for all connections.
|
|
2163
|
+
secret_last4:
|
|
2164
|
+
type: string
|
|
2165
|
+
description: Last 4 characters of the signing secret, for identification.
|
|
2166
|
+
consecutive_failures:
|
|
2167
|
+
type: integer
|
|
2168
|
+
last_delivery_at:
|
|
2169
|
+
type: [integer, "null"]
|
|
2170
|
+
description: Unix timestamp in milliseconds, or `null` if never.
|
|
2171
|
+
last_success_at:
|
|
2172
|
+
type: [integer, "null"]
|
|
2173
|
+
description: Unix timestamp in milliseconds, or `null` if never.
|
|
2174
|
+
last_error_at:
|
|
2175
|
+
type: [integer, "null"]
|
|
2176
|
+
description: Unix timestamp in milliseconds, or `null` if never.
|
|
2177
|
+
last_error:
|
|
2178
|
+
type: [string, "null"]
|
|
2179
|
+
created_at:
|
|
2180
|
+
type: integer
|
|
2181
|
+
description: Unix timestamp in milliseconds.
|
|
2182
|
+
updated_at:
|
|
2183
|
+
type: integer
|
|
2184
|
+
description: Unix timestamp in milliseconds.
|
|
2185
|
+
secret:
|
|
2186
|
+
type: string
|
|
2187
|
+
description: >-
|
|
2188
|
+
Full signing secret (`whsec_…`) — present ONLY in the create
|
|
2189
|
+
response, exactly once. It can never be retrieved again; store it
|
|
2190
|
+
securely immediately. An idempotent replay of the create request
|
|
2191
|
+
omits it.
|
|
2192
|
+
CreateWebhookInput:
|
|
2193
|
+
type: object
|
|
2194
|
+
required: [name, url, event_types]
|
|
2195
|
+
properties:
|
|
2196
|
+
name:
|
|
2197
|
+
type: string
|
|
2198
|
+
maxLength: 100
|
|
2199
|
+
url:
|
|
2200
|
+
type: string
|
|
2201
|
+
format: uri
|
|
2202
|
+
description: Destination URL — must be https.
|
|
2203
|
+
event_types:
|
|
2204
|
+
type: array
|
|
2205
|
+
items:
|
|
2206
|
+
type: string
|
|
2207
|
+
description: >-
|
|
2208
|
+
Event types to subscribe to (e.g. `helpdesk.message_received`).
|
|
2209
|
+
Empty = all.
|
|
2210
|
+
channels:
|
|
2211
|
+
type: array
|
|
2212
|
+
items:
|
|
2213
|
+
type: string
|
|
2214
|
+
description: Restrict to these channel types (e.g. `['widget', 'whatsapp']`).
|
|
2215
|
+
channel_connection_ids:
|
|
2216
|
+
type: array
|
|
2217
|
+
items:
|
|
2218
|
+
type: string
|
|
2219
|
+
description: Restrict to these channel connection IDs.
|
|
2220
|
+
UpdateWebhookInput:
|
|
2221
|
+
type: object
|
|
2222
|
+
description: Only provided fields change.
|
|
2223
|
+
properties:
|
|
2224
|
+
name:
|
|
2225
|
+
type: string
|
|
2226
|
+
maxLength: 100
|
|
2227
|
+
url:
|
|
2228
|
+
type: string
|
|
2229
|
+
format: uri
|
|
2230
|
+
event_types:
|
|
2231
|
+
type: array
|
|
2232
|
+
items:
|
|
2233
|
+
type: string
|
|
2234
|
+
channels:
|
|
2235
|
+
type: [array, "null"]
|
|
2236
|
+
items:
|
|
2237
|
+
type: string
|
|
2238
|
+
description: New channel-type filter, or `null` to clear the filter.
|
|
2239
|
+
channel_connection_ids:
|
|
2240
|
+
type: [array, "null"]
|
|
2241
|
+
items:
|
|
2242
|
+
type: string
|
|
2243
|
+
description: New channel-connection filter, or `null` to clear the filter.
|
|
2244
|
+
enabled:
|
|
2245
|
+
type: boolean
|
|
2246
|
+
WebhookDeleteResult:
|
|
2247
|
+
type: object
|
|
2248
|
+
required: [id, status]
|
|
2249
|
+
properties:
|
|
2250
|
+
id:
|
|
2251
|
+
type: string
|
|
2252
|
+
status:
|
|
2253
|
+
type: string
|
|
2254
|
+
const: deleted
|
|
2255
|
+
WebhookDelivery:
|
|
2256
|
+
type: object
|
|
2257
|
+
required:
|
|
2258
|
+
- id
|
|
2259
|
+
- event_type
|
|
2260
|
+
- status
|
|
2261
|
+
- attempt_count
|
|
2262
|
+
- next_attempt_at
|
|
2263
|
+
- response_status
|
|
2264
|
+
- duration_ms
|
|
2265
|
+
- last_error
|
|
2266
|
+
- delivered_at
|
|
2267
|
+
- created_at
|
|
2268
|
+
properties:
|
|
2269
|
+
id:
|
|
2270
|
+
type: string
|
|
2271
|
+
event_type:
|
|
2272
|
+
type: string
|
|
2273
|
+
status:
|
|
2274
|
+
type: string
|
|
2275
|
+
enum: [pending, delivered, dead_letter]
|
|
2276
|
+
attempt_count:
|
|
2277
|
+
type: integer
|
|
2278
|
+
next_attempt_at:
|
|
2279
|
+
type: [integer, "null"]
|
|
2280
|
+
description: Unix timestamp in milliseconds of the next retry, or `null`.
|
|
2281
|
+
response_status:
|
|
2282
|
+
type: [integer, "null"]
|
|
2283
|
+
duration_ms:
|
|
2284
|
+
type: [integer, "null"]
|
|
2285
|
+
last_error:
|
|
2286
|
+
type: [string, "null"]
|
|
2287
|
+
delivered_at:
|
|
2288
|
+
type: [integer, "null"]
|
|
2289
|
+
description: Unix timestamp in milliseconds, or `null` if not delivered.
|
|
2290
|
+
created_at:
|
|
2291
|
+
type: integer
|
|
2292
|
+
description: Unix timestamp in milliseconds.
|
|
2293
|
+
WebhookTestResult:
|
|
2294
|
+
type: object
|
|
2295
|
+
required: [delivery_id, status]
|
|
2296
|
+
properties:
|
|
2297
|
+
delivery_id:
|
|
2298
|
+
type: string
|
|
2299
|
+
status:
|
|
2300
|
+
type: string
|
|
2301
|
+
const: queued
|
|
1645
2302
|
ApiResponse_PostCreateResult:
|
|
1646
2303
|
$ref: "#/components/schemas/Envelope_PostCreateResult"
|
|
1647
2304
|
ApiResponse_PostDetail:
|
|
@@ -1696,6 +2353,22 @@ components:
|
|
|
1696
2353
|
$ref: "#/components/schemas/Envelope_ConsentRecordArray"
|
|
1697
2354
|
ApiResponse_WorkspaceArray:
|
|
1698
2355
|
$ref: "#/components/schemas/Envelope_WorkspaceArray"
|
|
2356
|
+
ApiResponse_HelpdeskConversation:
|
|
2357
|
+
$ref: "#/components/schemas/Envelope_HelpdeskConversation"
|
|
2358
|
+
ApiResponse_HelpdeskConversationUpdateResult:
|
|
2359
|
+
$ref: "#/components/schemas/Envelope_HelpdeskConversationUpdateResult"
|
|
2360
|
+
ApiResponse_HelpdeskReplyCreateResult:
|
|
2361
|
+
$ref: "#/components/schemas/Envelope_HelpdeskReplyCreateResult"
|
|
2362
|
+
ApiResponse_WebhookEndpoint:
|
|
2363
|
+
$ref: "#/components/schemas/Envelope_WebhookEndpoint"
|
|
2364
|
+
ApiResponse_WebhookEndpointArray:
|
|
2365
|
+
$ref: "#/components/schemas/Envelope_WebhookEndpointArray"
|
|
2366
|
+
ApiResponse_WebhookDeleteResult:
|
|
2367
|
+
$ref: "#/components/schemas/Envelope_WebhookDeleteResult"
|
|
2368
|
+
ApiResponse_WebhookDeliveryArray:
|
|
2369
|
+
$ref: "#/components/schemas/Envelope_WebhookDeliveryArray"
|
|
2370
|
+
ApiResponse_WebhookTestResult:
|
|
2371
|
+
$ref: "#/components/schemas/Envelope_WebhookTestResult"
|
|
1699
2372
|
PaginatedResponse_Post:
|
|
1700
2373
|
type: object
|
|
1701
2374
|
required: [data, pagination]
|
|
@@ -1736,6 +2409,26 @@ components:
|
|
|
1736
2409
|
$ref: "#/components/schemas/Deal"
|
|
1737
2410
|
pagination:
|
|
1738
2411
|
$ref: "#/components/schemas/Pagination"
|
|
2412
|
+
PaginatedResponse_HelpdeskConversation:
|
|
2413
|
+
type: object
|
|
2414
|
+
required: [data, pagination]
|
|
2415
|
+
properties:
|
|
2416
|
+
data:
|
|
2417
|
+
type: array
|
|
2418
|
+
items:
|
|
2419
|
+
$ref: "#/components/schemas/HelpdeskConversation"
|
|
2420
|
+
pagination:
|
|
2421
|
+
$ref: "#/components/schemas/Pagination"
|
|
2422
|
+
PaginatedResponse_HelpdeskMessage:
|
|
2423
|
+
type: object
|
|
2424
|
+
required: [data, pagination]
|
|
2425
|
+
properties:
|
|
2426
|
+
data:
|
|
2427
|
+
type: array
|
|
2428
|
+
items:
|
|
2429
|
+
$ref: "#/components/schemas/HelpdeskMessage"
|
|
2430
|
+
pagination:
|
|
2431
|
+
$ref: "#/components/schemas/Pagination"
|
|
1739
2432
|
Envelope_PostCreateResult:
|
|
1740
2433
|
type: object
|
|
1741
2434
|
required: [data]
|
|
@@ -1908,3 +2601,55 @@ components:
|
|
|
1908
2601
|
type: array
|
|
1909
2602
|
items:
|
|
1910
2603
|
$ref: "#/components/schemas/Workspace"
|
|
2604
|
+
Envelope_HelpdeskConversation:
|
|
2605
|
+
type: object
|
|
2606
|
+
required: [data]
|
|
2607
|
+
properties:
|
|
2608
|
+
data:
|
|
2609
|
+
$ref: "#/components/schemas/HelpdeskConversation"
|
|
2610
|
+
Envelope_HelpdeskConversationUpdateResult:
|
|
2611
|
+
type: object
|
|
2612
|
+
required: [data]
|
|
2613
|
+
properties:
|
|
2614
|
+
data:
|
|
2615
|
+
$ref: "#/components/schemas/HelpdeskConversationUpdateResult"
|
|
2616
|
+
Envelope_HelpdeskReplyCreateResult:
|
|
2617
|
+
type: object
|
|
2618
|
+
required: [data]
|
|
2619
|
+
properties:
|
|
2620
|
+
data:
|
|
2621
|
+
$ref: "#/components/schemas/HelpdeskReplyCreateResult"
|
|
2622
|
+
Envelope_WebhookEndpoint:
|
|
2623
|
+
type: object
|
|
2624
|
+
required: [data]
|
|
2625
|
+
properties:
|
|
2626
|
+
data:
|
|
2627
|
+
$ref: "#/components/schemas/WebhookEndpoint"
|
|
2628
|
+
Envelope_WebhookEndpointArray:
|
|
2629
|
+
type: object
|
|
2630
|
+
required: [data]
|
|
2631
|
+
properties:
|
|
2632
|
+
data:
|
|
2633
|
+
type: array
|
|
2634
|
+
items:
|
|
2635
|
+
$ref: "#/components/schemas/WebhookEndpoint"
|
|
2636
|
+
Envelope_WebhookDeleteResult:
|
|
2637
|
+
type: object
|
|
2638
|
+
required: [data]
|
|
2639
|
+
properties:
|
|
2640
|
+
data:
|
|
2641
|
+
$ref: "#/components/schemas/WebhookDeleteResult"
|
|
2642
|
+
Envelope_WebhookDeliveryArray:
|
|
2643
|
+
type: object
|
|
2644
|
+
required: [data]
|
|
2645
|
+
properties:
|
|
2646
|
+
data:
|
|
2647
|
+
type: array
|
|
2648
|
+
items:
|
|
2649
|
+
$ref: "#/components/schemas/WebhookDelivery"
|
|
2650
|
+
Envelope_WebhookTestResult:
|
|
2651
|
+
type: object
|
|
2652
|
+
required: [data]
|
|
2653
|
+
properties:
|
|
2654
|
+
data:
|
|
2655
|
+
$ref: "#/components/schemas/WebhookTestResult"
|