@crvouga/mockingbird-service-intercom 1.9.0 → 2.0.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/openapi.yaml ADDED
@@ -0,0 +1,1078 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: Intercom REST API 2.11 (Mockingbird subset)
4
+ description: |
5
+ Stateful mock subset of the Intercom REST API (version 2.11): contacts (search, create,
6
+ update, get), conversations (create, update, reply as user or admin with attachments,
7
+ close/open/snooze/assign, get, search) and the admin identity endpoints. Covers the backend's
8
+ member messaging adapter and the Intercom sync adapter.
9
+ version: "2.11"
10
+ x-mockingbird-upstream:
11
+ note: >-
12
+ Trimmed from Intercom's published 2.11 API reference to the operations and fields our
13
+ consumers use (intercom-messaging.adapter.ts, intercom-api.adapter.ts) and the webhook
14
+ receivers (messaging.controller.ts, the EMR IntercomWebhookService).
15
+ servers:
16
+ - url: https://api.intercom.io
17
+ security:
18
+ - bearerAuth: []
19
+ paths:
20
+ /contacts/search:
21
+ post:
22
+ operationId: SearchContacts
23
+ x-mockingbird:
24
+ supported: true
25
+ parity:
26
+ enabled: true
27
+ safe: true
28
+ requestBody:
29
+ required: true
30
+ content:
31
+ application/json:
32
+ schema:
33
+ type: object
34
+ required: [query]
35
+ properties:
36
+ query:
37
+ $ref: "#/components/schemas/ContactQuery"
38
+ pagination:
39
+ $ref: "#/components/schemas/Pagination"
40
+ responses:
41
+ "200":
42
+ description: Matching contacts
43
+ content:
44
+ application/json:
45
+ schema:
46
+ $ref: "#/components/schemas/ContactList"
47
+ "400":
48
+ $ref: "#/components/responses/BadRequest"
49
+ "401":
50
+ $ref: "#/components/responses/Unauthorized"
51
+ /contacts:
52
+ post:
53
+ operationId: CreateContact
54
+ x-mockingbird:
55
+ supported: true
56
+ parity:
57
+ enabled: true
58
+ safe: false
59
+ requestBody:
60
+ required: true
61
+ content:
62
+ application/json:
63
+ schema:
64
+ $ref: "#/components/schemas/ContactCreate"
65
+ responses:
66
+ "200":
67
+ description: The created contact
68
+ content:
69
+ application/json:
70
+ schema:
71
+ $ref: "#/components/schemas/Contact"
72
+ "400":
73
+ $ref: "#/components/responses/BadRequest"
74
+ "401":
75
+ $ref: "#/components/responses/Unauthorized"
76
+ "409":
77
+ $ref: "#/components/responses/Conflict"
78
+ /contacts/{contact_id}:
79
+ parameters:
80
+ - name: contact_id
81
+ in: path
82
+ required: true
83
+ schema:
84
+ type: string
85
+ x-mockingbird-resource-ref:
86
+ type: contact
87
+ missing: 000000000000000000000000
88
+ get:
89
+ operationId: GetContact
90
+ x-mockingbird:
91
+ supported: true
92
+ parity:
93
+ enabled: true
94
+ safe: true
95
+ responses:
96
+ "200":
97
+ description: The contact
98
+ content:
99
+ application/json:
100
+ schema:
101
+ $ref: "#/components/schemas/Contact"
102
+ "401":
103
+ $ref: "#/components/responses/Unauthorized"
104
+ "404":
105
+ $ref: "#/components/responses/NotFound"
106
+ put:
107
+ operationId: UpdateContact
108
+ x-mockingbird:
109
+ supported: true
110
+ parity:
111
+ enabled: true
112
+ safe: false
113
+ requestBody:
114
+ required: true
115
+ content:
116
+ application/json:
117
+ schema:
118
+ $ref: "#/components/schemas/ContactUpdate"
119
+ responses:
120
+ "200":
121
+ description: The updated contact
122
+ content:
123
+ application/json:
124
+ schema:
125
+ $ref: "#/components/schemas/Contact"
126
+ "400":
127
+ $ref: "#/components/responses/BadRequest"
128
+ "401":
129
+ $ref: "#/components/responses/Unauthorized"
130
+ "404":
131
+ $ref: "#/components/responses/NotFound"
132
+ "409":
133
+ $ref: "#/components/responses/Conflict"
134
+ /conversations:
135
+ post:
136
+ operationId: CreateConversation
137
+ description: A contact-initiated conversation. An optional `Idempotency-Key` header replays.
138
+ x-mockingbird:
139
+ supported: true
140
+ parity:
141
+ enabled: true
142
+ safe: false
143
+ parameters:
144
+ - name: Idempotency-Key
145
+ in: header
146
+ schema:
147
+ type: string
148
+ pattern: "^[A-Za-z0-9_-]{1,40}$"
149
+ requestBody:
150
+ required: true
151
+ content:
152
+ application/json:
153
+ schema:
154
+ type: object
155
+ required: [from, body]
156
+ properties:
157
+ from:
158
+ type: object
159
+ required: [type, id]
160
+ properties:
161
+ type:
162
+ type: string
163
+ enum: [user, lead, contact]
164
+ id:
165
+ type: string
166
+ x-mockingbird-resource-ref:
167
+ type: contact
168
+ missing: 000000000000000000000000
169
+ body:
170
+ type: string
171
+ minLength: 1
172
+ maxLength: 400
173
+ created_at:
174
+ type: integer
175
+ minimum: 1600000000
176
+ maximum: 1900000000
177
+ responses:
178
+ "200":
179
+ description: The first message of the new conversation
180
+ content:
181
+ application/json:
182
+ schema:
183
+ $ref: "#/components/schemas/Message"
184
+ "400":
185
+ $ref: "#/components/responses/BadRequest"
186
+ "401":
187
+ $ref: "#/components/responses/Unauthorized"
188
+ "404":
189
+ $ref: "#/components/responses/NotFound"
190
+ "409":
191
+ $ref: "#/components/responses/Conflict"
192
+ /conversations/search:
193
+ post:
194
+ operationId: SearchConversations
195
+ x-mockingbird:
196
+ supported: true
197
+ parity:
198
+ enabled: true
199
+ safe: true
200
+ parameters:
201
+ - $ref: "#/components/parameters/DisplayAs"
202
+ requestBody:
203
+ required: true
204
+ content:
205
+ application/json:
206
+ schema:
207
+ type: object
208
+ required: [query]
209
+ properties:
210
+ query:
211
+ $ref: "#/components/schemas/ConversationQuery"
212
+ pagination:
213
+ $ref: "#/components/schemas/Pagination"
214
+ sort_field:
215
+ type: string
216
+ enum: [updated_at, created_at, id, waiting_since]
217
+ sort_order:
218
+ type: string
219
+ enum: [ascending, descending]
220
+ responses:
221
+ "200":
222
+ description: A page of matching conversations (without conversation parts)
223
+ content:
224
+ application/json:
225
+ schema:
226
+ $ref: "#/components/schemas/ConversationList"
227
+ "400":
228
+ $ref: "#/components/responses/BadRequest"
229
+ "401":
230
+ $ref: "#/components/responses/Unauthorized"
231
+ /conversations/{conversation_id}:
232
+ parameters:
233
+ - $ref: "#/components/parameters/ConversationId"
234
+ get:
235
+ operationId: GetConversation
236
+ x-mockingbird:
237
+ supported: true
238
+ parity:
239
+ enabled: true
240
+ safe: true
241
+ parameters:
242
+ - $ref: "#/components/parameters/DisplayAs"
243
+ responses:
244
+ "200":
245
+ description: The conversation with its parts
246
+ content:
247
+ application/json:
248
+ schema:
249
+ $ref: "#/components/schemas/Conversation"
250
+ "401":
251
+ $ref: "#/components/responses/Unauthorized"
252
+ "404":
253
+ $ref: "#/components/responses/NotFound"
254
+ put:
255
+ operationId: UpdateConversation
256
+ x-mockingbird:
257
+ supported: true
258
+ parity:
259
+ enabled: true
260
+ safe: false
261
+ parameters:
262
+ - $ref: "#/components/parameters/DisplayAs"
263
+ requestBody:
264
+ required: true
265
+ content:
266
+ application/json:
267
+ schema:
268
+ type: object
269
+ properties:
270
+ read:
271
+ type: boolean
272
+ title:
273
+ type: string
274
+ maxLength: 120
275
+ custom_attributes:
276
+ type: object
277
+ maxProperties: 4
278
+ additionalProperties:
279
+ type: [string, number, boolean, "null"]
280
+ responses:
281
+ "200":
282
+ description: The updated conversation
283
+ content:
284
+ application/json:
285
+ schema:
286
+ $ref: "#/components/schemas/Conversation"
287
+ "400":
288
+ $ref: "#/components/responses/BadRequest"
289
+ "401":
290
+ $ref: "#/components/responses/Unauthorized"
291
+ "404":
292
+ $ref: "#/components/responses/NotFound"
293
+ /conversations/{conversation_id}/reply:
294
+ parameters:
295
+ - $ref: "#/components/parameters/ConversationId"
296
+ post:
297
+ operationId: ReplyConversation
298
+ description: >-
299
+ Reply as the contact (`type: user` + `intercom_user_id`) or as an admin (`type: admin`
300
+ + `admin_id`), as JSON (attachments as base64 `attachment_files`) or multipart
301
+ (`attachment_files[]` file parts). Admin comments fire `conversation.admin.replied`.
302
+ x-mockingbird:
303
+ supported: true
304
+ parity:
305
+ enabled: true
306
+ safe: false
307
+ requestBody:
308
+ required: true
309
+ content:
310
+ application/json:
311
+ schema:
312
+ $ref: "#/components/schemas/ReplyBody"
313
+ multipart/form-data:
314
+ schema:
315
+ type: object
316
+ required: [message_type, type]
317
+ properties:
318
+ message_type:
319
+ type: string
320
+ type:
321
+ type: string
322
+ intercom_user_id:
323
+ type: string
324
+ admin_id:
325
+ type: string
326
+ body:
327
+ type: string
328
+ attachment_files[]:
329
+ type: array
330
+ items:
331
+ type: string
332
+ format: binary
333
+ responses:
334
+ "200":
335
+ description: The conversation, with the new part
336
+ content:
337
+ application/json:
338
+ schema:
339
+ $ref: "#/components/schemas/Conversation"
340
+ "400":
341
+ $ref: "#/components/responses/BadRequest"
342
+ "401":
343
+ $ref: "#/components/responses/Unauthorized"
344
+ "404":
345
+ $ref: "#/components/responses/NotFound"
346
+ /conversations/{conversation_id}/parts:
347
+ parameters:
348
+ - $ref: "#/components/parameters/ConversationId"
349
+ post:
350
+ operationId: ManageConversation
351
+ description: Close, open, snooze or assign; close and open fire `conversation.admin.closed` / `opened`.
352
+ x-mockingbird:
353
+ supported: true
354
+ parity:
355
+ enabled: true
356
+ safe: false
357
+ requestBody:
358
+ required: true
359
+ content:
360
+ application/json:
361
+ schema:
362
+ type: object
363
+ required: [message_type, type, admin_id]
364
+ properties:
365
+ message_type:
366
+ type: string
367
+ enum: [close, open, snoozed, assignment]
368
+ type:
369
+ type: string
370
+ enum: [admin]
371
+ admin_id:
372
+ type: string
373
+ x-mockingbird-resource-ref:
374
+ type: admin
375
+ missing: "9999999"
376
+ body:
377
+ type: string
378
+ maxLength: 400
379
+ snoozed_until:
380
+ type: integer
381
+ minimum: 1600000000
382
+ maximum: 1900000000
383
+ assignee_id:
384
+ type: string
385
+ x-mockingbird-resource-ref:
386
+ type: admin
387
+ missing: "9999999"
388
+ responses:
389
+ "200":
390
+ description: The conversation, with the new part
391
+ content:
392
+ application/json:
393
+ schema:
394
+ $ref: "#/components/schemas/Conversation"
395
+ "400":
396
+ $ref: "#/components/responses/BadRequest"
397
+ "401":
398
+ $ref: "#/components/responses/Unauthorized"
399
+ "404":
400
+ $ref: "#/components/responses/NotFound"
401
+ /admins:
402
+ get:
403
+ operationId: ListAdmins
404
+ x-mockingbird:
405
+ supported: true
406
+ parity:
407
+ enabled: true
408
+ safe: true
409
+ responses:
410
+ "200":
411
+ description: The workspace's admins
412
+ content:
413
+ application/json:
414
+ schema:
415
+ type: object
416
+ required: [type, admins]
417
+ properties:
418
+ type:
419
+ type: string
420
+ enum: [admin.list]
421
+ admins:
422
+ type: array
423
+ items:
424
+ $ref: "#/components/schemas/Admin"
425
+ "401":
426
+ $ref: "#/components/responses/Unauthorized"
427
+ /me:
428
+ get:
429
+ operationId: GetMe
430
+ x-mockingbird:
431
+ supported: true
432
+ parity:
433
+ enabled: true
434
+ safe: true
435
+ responses:
436
+ "200":
437
+ description: The admin that owns the access token
438
+ content:
439
+ application/json:
440
+ schema:
441
+ type: object
442
+ required: [type, id, email, app]
443
+ properties:
444
+ type:
445
+ type: string
446
+ enum: [admin]
447
+ id:
448
+ type: string
449
+ name:
450
+ type: string
451
+ email:
452
+ type: string
453
+ email_verified:
454
+ type: boolean
455
+ has_inbox_seat:
456
+ type: boolean
457
+ avatar:
458
+ type: object
459
+ app:
460
+ type: object
461
+ required: [type, id_code]
462
+ properties:
463
+ type:
464
+ type: string
465
+ id_code:
466
+ type: string
467
+ name:
468
+ type: string
469
+ created_at:
470
+ type: integer
471
+ secure:
472
+ type: boolean
473
+ identity_verification:
474
+ type: boolean
475
+ timezone:
476
+ type: string
477
+ region:
478
+ type: string
479
+ "401":
480
+ $ref: "#/components/responses/Unauthorized"
481
+ components:
482
+ securitySchemes:
483
+ bearerAuth:
484
+ type: http
485
+ scheme: bearer
486
+ parameters:
487
+ ConversationId:
488
+ name: conversation_id
489
+ in: path
490
+ required: true
491
+ schema:
492
+ type: string
493
+ x-mockingbird-resource-ref:
494
+ type: conversation
495
+ missing: "999999999999999"
496
+ DisplayAs:
497
+ name: display_as
498
+ in: query
499
+ schema:
500
+ type: string
501
+ enum: [plaintext]
502
+ responses:
503
+ BadRequest:
504
+ description: Invalid parameters
505
+ content:
506
+ application/json:
507
+ schema:
508
+ $ref: "#/components/schemas/ErrorList"
509
+ Unauthorized:
510
+ description: Missing or invalid access token
511
+ content:
512
+ application/json:
513
+ schema:
514
+ $ref: "#/components/schemas/ErrorList"
515
+ NotFound:
516
+ description: Unknown resource
517
+ content:
518
+ application/json:
519
+ schema:
520
+ $ref: "#/components/schemas/ErrorList"
521
+ Conflict:
522
+ description: A contact with that external_id or email already exists (or an idempotency conflict)
523
+ content:
524
+ application/json:
525
+ schema:
526
+ $ref: "#/components/schemas/ErrorList"
527
+ schemas:
528
+ ErrorList:
529
+ type: object
530
+ required: [type, errors]
531
+ properties:
532
+ type:
533
+ type: string
534
+ enum: [error.list]
535
+ request_id:
536
+ type: string
537
+ x-mockingbird-volatile:
538
+ kind: token
539
+ errors:
540
+ type: array
541
+ minItems: 1
542
+ items:
543
+ type: object
544
+ required: [code, message]
545
+ properties:
546
+ code:
547
+ type: string
548
+ message:
549
+ type: string
550
+ Pagination:
551
+ type: object
552
+ properties:
553
+ per_page:
554
+ type: integer
555
+ minimum: 1
556
+ maximum: 150
557
+ starting_after:
558
+ type: string
559
+ maxLength: 80
560
+ ContactFilter:
561
+ type: object
562
+ required: [field, operator, value]
563
+ properties:
564
+ field:
565
+ type: string
566
+ enum: [external_id, email, id, name, role, phone]
567
+ operator:
568
+ type: string
569
+ enum: ["=", "!=", "~", "!~", "^", "$", IN, NIN]
570
+ value:
571
+ oneOf:
572
+ - type: string
573
+ maxLength: 80
574
+ - type: array
575
+ maxItems: 3
576
+ items:
577
+ type: string
578
+ maxLength: 80
579
+ ContactQuery:
580
+ oneOf:
581
+ - $ref: "#/components/schemas/ContactFilter"
582
+ - type: object
583
+ required: [operator, value]
584
+ properties:
585
+ operator:
586
+ type: string
587
+ enum: [AND, OR]
588
+ value:
589
+ type: array
590
+ minItems: 1
591
+ maxItems: 3
592
+ items:
593
+ $ref: "#/components/schemas/ContactFilter"
594
+ ConversationFilter:
595
+ type: object
596
+ required: [field, operator, value]
597
+ properties:
598
+ field:
599
+ type: string
600
+ enum:
601
+ - id
602
+ - contact_ids
603
+ - admin_assignee_id
604
+ - team_assignee_id
605
+ - state
606
+ - open
607
+ - read
608
+ - created_at
609
+ - updated_at
610
+ - source.author.email
611
+ - source.delivered_as
612
+ operator:
613
+ type: string
614
+ enum: ["=", "!=", "<", ">", "~", IN, NIN]
615
+ value:
616
+ oneOf:
617
+ - type: string
618
+ maxLength: 80
619
+ - type: integer
620
+ - type: boolean
621
+ - type: array
622
+ maxItems: 3
623
+ items:
624
+ type: string
625
+ maxLength: 80
626
+ ConversationQuery:
627
+ oneOf:
628
+ - $ref: "#/components/schemas/ConversationFilter"
629
+ - type: object
630
+ required: [operator, value]
631
+ properties:
632
+ operator:
633
+ type: string
634
+ enum: [AND, OR]
635
+ value:
636
+ type: array
637
+ minItems: 1
638
+ maxItems: 3
639
+ items:
640
+ $ref: "#/components/schemas/ConversationFilter"
641
+ CustomAttributes:
642
+ type: object
643
+ maxProperties: 30
644
+ additionalProperties:
645
+ type: [string, number, boolean, "null"]
646
+ ContactCreate:
647
+ type: object
648
+ properties:
649
+ role:
650
+ type: string
651
+ enum: [user, lead]
652
+ external_id:
653
+ description: >-
654
+ Any string. The first branch steers the walk generator toward a few values, so
655
+ random walks reach the duplicate (409) path.
656
+ anyOf:
657
+ - type: string
658
+ pattern: "^[1-4]$"
659
+ - type: string
660
+ minLength: 1
661
+ maxLength: 64
662
+ email:
663
+ type: string
664
+ format: email
665
+ maxLength: 120
666
+ name:
667
+ type: ["string", "null"]
668
+ maxLength: 80
669
+ phone:
670
+ type: ["string", "null"]
671
+ maxLength: 40
672
+ signed_up_at:
673
+ type: ["integer", "null"]
674
+ minimum: 1000000000
675
+ maximum: 1900000000
676
+ last_seen_at:
677
+ type: ["integer", "null"]
678
+ minimum: 1000000000
679
+ maximum: 1900000000
680
+ custom_attributes:
681
+ $ref: "#/components/schemas/CustomAttributes"
682
+ ContactUpdate:
683
+ allOf:
684
+ - $ref: "#/components/schemas/ContactCreate"
685
+ ReplyBody:
686
+ type: object
687
+ required: [message_type, type]
688
+ properties:
689
+ message_type:
690
+ type: string
691
+ enum: [comment, note, quick_reply]
692
+ type:
693
+ type: string
694
+ enum: [user, admin]
695
+ body:
696
+ type: string
697
+ maxLength: 400
698
+ intercom_user_id:
699
+ type: string
700
+ x-mockingbird-resource-ref:
701
+ type: contact
702
+ missing: 000000000000000000000000
703
+ user_id:
704
+ type: string
705
+ maxLength: 64
706
+ email:
707
+ type: string
708
+ maxLength: 120
709
+ admin_id:
710
+ type: string
711
+ x-mockingbird-resource-ref:
712
+ type: admin
713
+ missing: "9999999"
714
+ created_at:
715
+ type: integer
716
+ minimum: 1600000000
717
+ maximum: 1900000000
718
+ attachment_urls:
719
+ type: array
720
+ maxItems: 3
721
+ items:
722
+ type: string
723
+ maxLength: 200
724
+ attachment_files:
725
+ type: array
726
+ maxItems: 3
727
+ items:
728
+ type: object
729
+ required: [content_type, data, name]
730
+ properties:
731
+ content_type:
732
+ type: string
733
+ maxLength: 80
734
+ data:
735
+ type: string
736
+ maxLength: 400
737
+ name:
738
+ type: string
739
+ minLength: 1
740
+ maxLength: 80
741
+ Contact:
742
+ type: object
743
+ required: [type, id, role, created_at, updated_at, custom_attributes]
744
+ properties:
745
+ type:
746
+ type: string
747
+ enum: [contact]
748
+ id:
749
+ type: string
750
+ x-mockingbird-resource:
751
+ type: contact
752
+ identity: true
753
+ workspace_id:
754
+ type: string
755
+ external_id:
756
+ type: ["string", "null"]
757
+ role:
758
+ type: string
759
+ email:
760
+ type: ["string", "null"]
761
+ phone:
762
+ type: ["string", "null"]
763
+ name:
764
+ type: ["string", "null"]
765
+ avatar:
766
+ type: ["string", "null"]
767
+ owner_id:
768
+ type: ["integer", "null"]
769
+ has_hard_bounced:
770
+ type: boolean
771
+ marked_email_as_spam:
772
+ type: boolean
773
+ unsubscribed_from_emails:
774
+ type: boolean
775
+ created_at:
776
+ type: integer
777
+ x-mockingbird-volatile:
778
+ kind: timestamp
779
+ updated_at:
780
+ type: integer
781
+ x-mockingbird-volatile:
782
+ kind: timestamp
783
+ signed_up_at:
784
+ type: ["integer", "null"]
785
+ last_seen_at:
786
+ type: ["integer", "null"]
787
+ custom_attributes:
788
+ type: object
789
+ tags:
790
+ type: object
791
+ notes:
792
+ type: object
793
+ companies:
794
+ type: object
795
+ location:
796
+ type: object
797
+ social_profiles:
798
+ type: object
799
+ Pages:
800
+ type: object
801
+ required: [type, page, per_page, total_pages]
802
+ properties:
803
+ type:
804
+ type: string
805
+ enum: [pages]
806
+ page:
807
+ type: integer
808
+ per_page:
809
+ type: integer
810
+ total_pages:
811
+ type: integer
812
+ next:
813
+ type: object
814
+ required: [page, starting_after]
815
+ properties:
816
+ page:
817
+ type: integer
818
+ starting_after:
819
+ type: string
820
+ ContactList:
821
+ type: object
822
+ required: [type, data, total_count, pages]
823
+ properties:
824
+ type:
825
+ type: string
826
+ enum: [list]
827
+ data:
828
+ type: array
829
+ items:
830
+ $ref: "#/components/schemas/Contact"
831
+ total_count:
832
+ type: integer
833
+ pages:
834
+ $ref: "#/components/schemas/Pages"
835
+ Author:
836
+ type: object
837
+ required: [type, id]
838
+ properties:
839
+ type:
840
+ type: string
841
+ id:
842
+ type: string
843
+ name:
844
+ type: ["string", "null"]
845
+ email:
846
+ type: ["string", "null"]
847
+ Attachment:
848
+ type: object
849
+ required: [type, name, url, content_type]
850
+ properties:
851
+ type:
852
+ type: string
853
+ name:
854
+ type: string
855
+ url:
856
+ type: string
857
+ content_type:
858
+ type: string
859
+ filesize:
860
+ type: integer
861
+ width:
862
+ type: ["integer", "null"]
863
+ height:
864
+ type: ["integer", "null"]
865
+ ConversationPart:
866
+ type: object
867
+ required: [type, id, part_type, created_at, author]
868
+ properties:
869
+ type:
870
+ type: string
871
+ enum: [conversation_part]
872
+ id:
873
+ type: string
874
+ part_type:
875
+ type: string
876
+ body:
877
+ type: ["string", "null"]
878
+ created_at:
879
+ type: integer
880
+ x-mockingbird-volatile:
881
+ kind: timestamp
882
+ updated_at:
883
+ type: integer
884
+ x-mockingbird-volatile:
885
+ kind: timestamp
886
+ notified_at:
887
+ type: integer
888
+ x-mockingbird-volatile:
889
+ kind: timestamp
890
+ assigned_to:
891
+ type: ["object", "null"]
892
+ author:
893
+ $ref: "#/components/schemas/Author"
894
+ attachments:
895
+ type: array
896
+ items:
897
+ $ref: "#/components/schemas/Attachment"
898
+ external_id:
899
+ type: ["string", "null"]
900
+ redacted:
901
+ type: boolean
902
+ Conversation:
903
+ type: object
904
+ required: [type, id, created_at, updated_at, open, state, read, source, contacts]
905
+ properties:
906
+ type:
907
+ type: string
908
+ enum: [conversation]
909
+ id:
910
+ type: string
911
+ x-mockingbird-resource:
912
+ type: conversation
913
+ identity: true
914
+ title:
915
+ type: ["string", "null"]
916
+ created_at:
917
+ type: integer
918
+ x-mockingbird-volatile:
919
+ kind: timestamp
920
+ updated_at:
921
+ type: integer
922
+ x-mockingbird-volatile:
923
+ kind: timestamp
924
+ waiting_since:
925
+ type: ["integer", "null"]
926
+ x-mockingbird-volatile:
927
+ kind: timestamp
928
+ snoozed_until:
929
+ type: ["integer", "null"]
930
+ open:
931
+ type: boolean
932
+ state:
933
+ type: string
934
+ enum: [open, closed, snoozed]
935
+ read:
936
+ type: boolean
937
+ priority:
938
+ type: string
939
+ admin_assignee_id:
940
+ type: ["integer", "null"]
941
+ team_assignee_id:
942
+ type: ["string", "null"]
943
+ tags:
944
+ type: object
945
+ conversation_rating:
946
+ type: ["object", "null"]
947
+ source:
948
+ type: object
949
+ required: [type, id, delivered_as, body, author]
950
+ properties:
951
+ type:
952
+ type: string
953
+ id:
954
+ type: string
955
+ delivered_as:
956
+ type: string
957
+ subject:
958
+ type: string
959
+ body:
960
+ type: ["string", "null"]
961
+ author:
962
+ $ref: "#/components/schemas/Author"
963
+ attachments:
964
+ type: array
965
+ items:
966
+ $ref: "#/components/schemas/Attachment"
967
+ url:
968
+ type: ["string", "null"]
969
+ redacted:
970
+ type: boolean
971
+ contacts:
972
+ type: object
973
+ required: [type, contacts]
974
+ properties:
975
+ type:
976
+ type: string
977
+ contacts:
978
+ type: array
979
+ items:
980
+ type: object
981
+ required: [type, id]
982
+ properties:
983
+ type:
984
+ type: string
985
+ id:
986
+ type: string
987
+ external_id:
988
+ type: ["string", "null"]
989
+ teammates:
990
+ type: object
991
+ custom_attributes:
992
+ type: object
993
+ first_contact_reply:
994
+ type: ["object", "null"]
995
+ sla_applied:
996
+ type: ["object", "null"]
997
+ statistics:
998
+ type: ["object", "null"]
999
+ ai_agent_participated:
1000
+ type: boolean
1001
+ conversation_parts:
1002
+ type: object
1003
+ required: [type, conversation_parts, total_count]
1004
+ properties:
1005
+ type:
1006
+ type: string
1007
+ conversation_parts:
1008
+ type: array
1009
+ items:
1010
+ $ref: "#/components/schemas/ConversationPart"
1011
+ total_count:
1012
+ type: integer
1013
+ ConversationList:
1014
+ type: object
1015
+ required: [type, pages, total_count, conversations]
1016
+ properties:
1017
+ type:
1018
+ type: string
1019
+ enum: [conversation.list]
1020
+ pages:
1021
+ $ref: "#/components/schemas/Pages"
1022
+ total_count:
1023
+ type: integer
1024
+ conversations:
1025
+ type: array
1026
+ items:
1027
+ $ref: "#/components/schemas/Conversation"
1028
+ Message:
1029
+ type: object
1030
+ required: [type, id, created_at, body, message_type, conversation_id]
1031
+ properties:
1032
+ type:
1033
+ type: string
1034
+ enum: [user_message]
1035
+ id:
1036
+ type: string
1037
+ created_at:
1038
+ type: integer
1039
+ x-mockingbird-volatile:
1040
+ kind: timestamp
1041
+ body:
1042
+ type: string
1043
+ message_type:
1044
+ type: string
1045
+ enum: [inapp]
1046
+ conversation_id:
1047
+ type: string
1048
+ x-mockingbird-resource:
1049
+ type: conversation
1050
+ identity: true
1051
+ Admin:
1052
+ type: object
1053
+ required: [type, id, name, email]
1054
+ properties:
1055
+ type:
1056
+ type: string
1057
+ enum: [admin]
1058
+ id:
1059
+ type: string
1060
+ x-mockingbird-resource:
1061
+ type: admin
1062
+ identity: true
1063
+ name:
1064
+ type: string
1065
+ email:
1066
+ type: string
1067
+ job_title:
1068
+ type: ["string", "null"]
1069
+ away_mode_enabled:
1070
+ type: boolean
1071
+ away_mode_reassign:
1072
+ type: boolean
1073
+ has_inbox_seat:
1074
+ type: boolean
1075
+ team_ids:
1076
+ type: array
1077
+ items:
1078
+ type: integer