@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.
@@ -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"