@firedrill-tools/slack 0.1.1

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.
Files changed (58) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +369 -0
  3. package/firedrill/agent.target.json +17 -0
  4. package/firedrill/baseline.scenario.json +5 -0
  5. package/firedrill/bounds.scenario.json +112 -0
  6. package/firedrill/conformance.suite.json +21 -0
  7. package/firedrill/history-unavailable.scenario.json +11 -0
  8. package/firedrill/open-long-handles.scenario.json +263 -0
  9. package/firedrill/open-member-bound.scenario.json +24 -0
  10. package/firedrill/post-rate-limited.scenario.json +11 -0
  11. package/firedrill/response-budget.scenario.json +24 -0
  12. package/firedrill/slack-bounds.drill.json +428 -0
  13. package/firedrill/slack-denied.drill.json +74 -0
  14. package/firedrill/slack-fresh-install.drill.json +132 -0
  15. package/firedrill/slack-history-unavailable.drill.json +83 -0
  16. package/firedrill/slack-invalid-auth.drill.json +408 -0
  17. package/firedrill/slack-mcp-aliases.drill.json +219 -0
  18. package/firedrill/slack-open-long-handles.drill.json +82 -0
  19. package/firedrill/slack-open-member-bound.drill.json +135 -0
  20. package/firedrill/slack-post-rate-limited.drill.json +96 -0
  21. package/firedrill/slack-response-budget.drill.json +118 -0
  22. package/firedrill/slack-thread-many-repliers.drill.json +100 -0
  23. package/firedrill/slack-ts-sequence-full.drill.json +165 -0
  24. package/firedrill/slack-visibility.drill.json +110 -0
  25. package/firedrill/slack-web-api-flow.drill.json +896 -0
  26. package/firedrill/thread-many-repliers.scenario.json +79 -0
  27. package/firedrill/tools/slack/app/assets/ATTRIBUTION.md +40 -0
  28. package/firedrill/tools/slack/app/assets/fonts/OFL.txt +93 -0
  29. package/firedrill/tools/slack/app/assets/fonts/lato-latin-400.woff2 +0 -0
  30. package/firedrill/tools/slack/app/assets/fonts/lato-latin-700.woff2 +0 -0
  31. package/firedrill/tools/slack/app/assets/fonts/lato-latin-900.woff2 +0 -0
  32. package/firedrill/tools/slack/app/assets/slack-wordmark.svg +1 -0
  33. package/firedrill/tools/slack/app/assets/slack.svg +1 -0
  34. package/firedrill/tools/slack/app/site/app.js +2202 -0
  35. package/firedrill/tools/slack/app/site/assets/fonts/lato-latin-400.woff2 +0 -0
  36. package/firedrill/tools/slack/app/site/assets/fonts/lato-latin-700.woff2 +0 -0
  37. package/firedrill/tools/slack/app/site/assets/fonts/lato-latin-900.woff2 +0 -0
  38. package/firedrill/tools/slack/app/site/assets/slack-wordmark.svg +1 -0
  39. package/firedrill/tools/slack/app/site/assets/slack.svg +1 -0
  40. package/firedrill/tools/slack/app/site/chrome.css +73 -0
  41. package/firedrill/tools/slack/app/site/chrome.js +96 -0
  42. package/firedrill/tools/slack/app/site/icons.js +96 -0
  43. package/firedrill/tools/slack/app/site/index.html +253 -0
  44. package/firedrill/tools/slack/app/site/styles.css +2719 -0
  45. package/firedrill/tools/slack/app/site/ui.js +491 -0
  46. package/firedrill/tools/slack/behavior.mjs +1171 -0
  47. package/firedrill/tools/slack/lib/access.mjs +138 -0
  48. package/firedrill/tools/slack/lib/budget.mjs +67 -0
  49. package/firedrill/tools/slack/lib/ids.mjs +146 -0
  50. package/firedrill/tools/slack/lib/search.mjs +172 -0
  51. package/firedrill/tools/slack/lib/wire.mjs +144 -0
  52. package/firedrill/tools/slack/slack.tool.json +6114 -0
  53. package/firedrill/ts-sequence-full.scenario.json +38 -0
  54. package/firedrill/world.json +2008 -0
  55. package/firedrill.json +5 -0
  56. package/package.json +62 -0
  57. package/starter.json +1562 -0
  58. package/test/conformance.mjs +1166 -0
@@ -0,0 +1,2008 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "slack-conformance-world",
4
+ "title": "Slack Tool conformance world",
5
+ "virtualTimeUs": 1789376400000000,
6
+ "actors": [
7
+ {
8
+ "id": "member",
9
+ "description": "Dana Reyes, workspace admin, member of most conversations; every operation granted.",
10
+ "attributes": {
11
+ "userId": "U01DANA0001",
12
+ "teamId": "T01EXAMPLE0"
13
+ },
14
+ "grants": [
15
+ {
16
+ "packageId": "slack",
17
+ "operationId": "auth.test"
18
+ },
19
+ {
20
+ "packageId": "slack",
21
+ "operationId": "users.list"
22
+ },
23
+ {
24
+ "packageId": "slack",
25
+ "operationId": "users.info"
26
+ },
27
+ {
28
+ "packageId": "slack",
29
+ "operationId": "users.profile.get"
30
+ },
31
+ {
32
+ "packageId": "slack",
33
+ "operationId": "conversations.list"
34
+ },
35
+ {
36
+ "packageId": "slack",
37
+ "operationId": "conversations.info"
38
+ },
39
+ {
40
+ "packageId": "slack",
41
+ "operationId": "conversations.members"
42
+ },
43
+ {
44
+ "packageId": "slack",
45
+ "operationId": "conversations.create"
46
+ },
47
+ {
48
+ "packageId": "slack",
49
+ "operationId": "conversations.join"
50
+ },
51
+ {
52
+ "packageId": "slack",
53
+ "operationId": "conversations.invite"
54
+ },
55
+ {
56
+ "packageId": "slack",
57
+ "operationId": "conversations.open"
58
+ },
59
+ {
60
+ "packageId": "slack",
61
+ "operationId": "conversations.archive"
62
+ },
63
+ {
64
+ "packageId": "slack",
65
+ "operationId": "conversations.set-topic"
66
+ },
67
+ {
68
+ "packageId": "slack",
69
+ "operationId": "conversations.history"
70
+ },
71
+ {
72
+ "packageId": "slack",
73
+ "operationId": "conversations.replies"
74
+ },
75
+ {
76
+ "packageId": "slack",
77
+ "operationId": "chat.post-message"
78
+ },
79
+ {
80
+ "packageId": "slack",
81
+ "operationId": "chat.reply"
82
+ },
83
+ {
84
+ "packageId": "slack",
85
+ "operationId": "chat.update"
86
+ },
87
+ {
88
+ "packageId": "slack",
89
+ "operationId": "chat.delete"
90
+ },
91
+ {
92
+ "packageId": "slack",
93
+ "operationId": "reactions.add"
94
+ },
95
+ {
96
+ "packageId": "slack",
97
+ "operationId": "reactions.remove"
98
+ },
99
+ {
100
+ "packageId": "slack",
101
+ "operationId": "pins.add"
102
+ },
103
+ {
104
+ "packageId": "slack",
105
+ "operationId": "pins.remove"
106
+ },
107
+ {
108
+ "packageId": "slack",
109
+ "operationId": "pins.list"
110
+ },
111
+ {
112
+ "packageId": "slack",
113
+ "operationId": "search.messages"
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "id": "contractor",
119
+ "description": "Priya Natarajan, member of #general and #random only; every operation granted (isolation is proven by data visibility).",
120
+ "attributes": {
121
+ "userId": "U01PRIYA003"
122
+ },
123
+ "grants": [
124
+ {
125
+ "packageId": "slack",
126
+ "operationId": "auth.test"
127
+ },
128
+ {
129
+ "packageId": "slack",
130
+ "operationId": "users.list"
131
+ },
132
+ {
133
+ "packageId": "slack",
134
+ "operationId": "users.info"
135
+ },
136
+ {
137
+ "packageId": "slack",
138
+ "operationId": "users.profile.get"
139
+ },
140
+ {
141
+ "packageId": "slack",
142
+ "operationId": "conversations.list"
143
+ },
144
+ {
145
+ "packageId": "slack",
146
+ "operationId": "conversations.info"
147
+ },
148
+ {
149
+ "packageId": "slack",
150
+ "operationId": "conversations.members"
151
+ },
152
+ {
153
+ "packageId": "slack",
154
+ "operationId": "conversations.create"
155
+ },
156
+ {
157
+ "packageId": "slack",
158
+ "operationId": "conversations.join"
159
+ },
160
+ {
161
+ "packageId": "slack",
162
+ "operationId": "conversations.invite"
163
+ },
164
+ {
165
+ "packageId": "slack",
166
+ "operationId": "conversations.open"
167
+ },
168
+ {
169
+ "packageId": "slack",
170
+ "operationId": "conversations.archive"
171
+ },
172
+ {
173
+ "packageId": "slack",
174
+ "operationId": "conversations.set-topic"
175
+ },
176
+ {
177
+ "packageId": "slack",
178
+ "operationId": "conversations.history"
179
+ },
180
+ {
181
+ "packageId": "slack",
182
+ "operationId": "conversations.replies"
183
+ },
184
+ {
185
+ "packageId": "slack",
186
+ "operationId": "chat.post-message"
187
+ },
188
+ {
189
+ "packageId": "slack",
190
+ "operationId": "chat.reply"
191
+ },
192
+ {
193
+ "packageId": "slack",
194
+ "operationId": "chat.update"
195
+ },
196
+ {
197
+ "packageId": "slack",
198
+ "operationId": "chat.delete"
199
+ },
200
+ {
201
+ "packageId": "slack",
202
+ "operationId": "reactions.add"
203
+ },
204
+ {
205
+ "packageId": "slack",
206
+ "operationId": "reactions.remove"
207
+ },
208
+ {
209
+ "packageId": "slack",
210
+ "operationId": "pins.add"
211
+ },
212
+ {
213
+ "packageId": "slack",
214
+ "operationId": "pins.remove"
215
+ },
216
+ {
217
+ "packageId": "slack",
218
+ "operationId": "pins.list"
219
+ },
220
+ {
221
+ "packageId": "slack",
222
+ "operationId": "search.messages"
223
+ }
224
+ ]
225
+ },
226
+ {
227
+ "id": "auditor",
228
+ "description": "Sam Okafor with no grants at all; proves framework denial.",
229
+ "attributes": {
230
+ "userId": "U01SAM00002"
231
+ },
232
+ "grants": []
233
+ },
234
+ {
235
+ "id": "ghost",
236
+ "description": "A token whose userId matches no workspace member; every operation is granted and every call fails invalid_auth.",
237
+ "attributes": {
238
+ "userId": "U0GHOST0000"
239
+ },
240
+ "grants": [
241
+ {
242
+ "packageId": "slack",
243
+ "operationId": "auth.test"
244
+ },
245
+ {
246
+ "packageId": "slack",
247
+ "operationId": "users.list"
248
+ },
249
+ {
250
+ "packageId": "slack",
251
+ "operationId": "users.info"
252
+ },
253
+ {
254
+ "packageId": "slack",
255
+ "operationId": "users.profile.get"
256
+ },
257
+ {
258
+ "packageId": "slack",
259
+ "operationId": "conversations.list"
260
+ },
261
+ {
262
+ "packageId": "slack",
263
+ "operationId": "conversations.info"
264
+ },
265
+ {
266
+ "packageId": "slack",
267
+ "operationId": "conversations.members"
268
+ },
269
+ {
270
+ "packageId": "slack",
271
+ "operationId": "conversations.create"
272
+ },
273
+ {
274
+ "packageId": "slack",
275
+ "operationId": "conversations.join"
276
+ },
277
+ {
278
+ "packageId": "slack",
279
+ "operationId": "conversations.invite"
280
+ },
281
+ {
282
+ "packageId": "slack",
283
+ "operationId": "conversations.open"
284
+ },
285
+ {
286
+ "packageId": "slack",
287
+ "operationId": "conversations.archive"
288
+ },
289
+ {
290
+ "packageId": "slack",
291
+ "operationId": "conversations.set-topic"
292
+ },
293
+ {
294
+ "packageId": "slack",
295
+ "operationId": "conversations.history"
296
+ },
297
+ {
298
+ "packageId": "slack",
299
+ "operationId": "conversations.replies"
300
+ },
301
+ {
302
+ "packageId": "slack",
303
+ "operationId": "chat.post-message"
304
+ },
305
+ {
306
+ "packageId": "slack",
307
+ "operationId": "chat.reply"
308
+ },
309
+ {
310
+ "packageId": "slack",
311
+ "operationId": "chat.update"
312
+ },
313
+ {
314
+ "packageId": "slack",
315
+ "operationId": "chat.delete"
316
+ },
317
+ {
318
+ "packageId": "slack",
319
+ "operationId": "reactions.add"
320
+ },
321
+ {
322
+ "packageId": "slack",
323
+ "operationId": "reactions.remove"
324
+ },
325
+ {
326
+ "packageId": "slack",
327
+ "operationId": "pins.add"
328
+ },
329
+ {
330
+ "packageId": "slack",
331
+ "operationId": "pins.remove"
332
+ },
333
+ {
334
+ "packageId": "slack",
335
+ "operationId": "pins.list"
336
+ },
337
+ {
338
+ "packageId": "slack",
339
+ "operationId": "search.messages"
340
+ }
341
+ ]
342
+ },
343
+ {
344
+ "id": "newcomer",
345
+ "description": "Fresh-install shaped actor: no identity attributes, every operation granted. Must act as the first active human member (Dana, U01DANA0001).",
346
+ "grants": [
347
+ {
348
+ "packageId": "slack",
349
+ "operationId": "auth.test"
350
+ },
351
+ {
352
+ "packageId": "slack",
353
+ "operationId": "users.list"
354
+ },
355
+ {
356
+ "packageId": "slack",
357
+ "operationId": "users.info"
358
+ },
359
+ {
360
+ "packageId": "slack",
361
+ "operationId": "users.profile.get"
362
+ },
363
+ {
364
+ "packageId": "slack",
365
+ "operationId": "conversations.list"
366
+ },
367
+ {
368
+ "packageId": "slack",
369
+ "operationId": "conversations.info"
370
+ },
371
+ {
372
+ "packageId": "slack",
373
+ "operationId": "conversations.members"
374
+ },
375
+ {
376
+ "packageId": "slack",
377
+ "operationId": "conversations.create"
378
+ },
379
+ {
380
+ "packageId": "slack",
381
+ "operationId": "conversations.join"
382
+ },
383
+ {
384
+ "packageId": "slack",
385
+ "operationId": "conversations.invite"
386
+ },
387
+ {
388
+ "packageId": "slack",
389
+ "operationId": "conversations.open"
390
+ },
391
+ {
392
+ "packageId": "slack",
393
+ "operationId": "conversations.archive"
394
+ },
395
+ {
396
+ "packageId": "slack",
397
+ "operationId": "conversations.set-topic"
398
+ },
399
+ {
400
+ "packageId": "slack",
401
+ "operationId": "conversations.history"
402
+ },
403
+ {
404
+ "packageId": "slack",
405
+ "operationId": "conversations.replies"
406
+ },
407
+ {
408
+ "packageId": "slack",
409
+ "operationId": "chat.post-message"
410
+ },
411
+ {
412
+ "packageId": "slack",
413
+ "operationId": "chat.reply"
414
+ },
415
+ {
416
+ "packageId": "slack",
417
+ "operationId": "chat.update"
418
+ },
419
+ {
420
+ "packageId": "slack",
421
+ "operationId": "chat.delete"
422
+ },
423
+ {
424
+ "packageId": "slack",
425
+ "operationId": "reactions.add"
426
+ },
427
+ {
428
+ "packageId": "slack",
429
+ "operationId": "reactions.remove"
430
+ },
431
+ {
432
+ "packageId": "slack",
433
+ "operationId": "pins.add"
434
+ },
435
+ {
436
+ "packageId": "slack",
437
+ "operationId": "pins.remove"
438
+ },
439
+ {
440
+ "packageId": "slack",
441
+ "operationId": "pins.list"
442
+ },
443
+ {
444
+ "packageId": "slack",
445
+ "operationId": "search.messages"
446
+ }
447
+ ]
448
+ }
449
+ ],
450
+ "state": [
451
+ {
452
+ "action": "upsert",
453
+ "packageId": "slack",
454
+ "namespace": "workspace",
455
+ "rowId": "team",
456
+ "value": {
457
+ "id": "T01EXAMPLE0",
458
+ "name": "Example Team",
459
+ "domain": "example-team",
460
+ "url": "https://example-team.slack.com/",
461
+ "id_sequence": 50,
462
+ "message_sequence": 300
463
+ }
464
+ },
465
+ {
466
+ "action": "upsert",
467
+ "packageId": "slack",
468
+ "namespace": "users",
469
+ "rowId": "U01DANA0001",
470
+ "value": {
471
+ "id": "U01DANA0001",
472
+ "team_id": "T01EXAMPLE0",
473
+ "name": "dana.reyes",
474
+ "real_name": "Dana Reyes",
475
+ "deleted": false,
476
+ "is_bot": false,
477
+ "is_admin": true,
478
+ "is_owner": true,
479
+ "tz": "America/New_York",
480
+ "tz_label": "Eastern Daylight Time",
481
+ "tz_offset": -14400,
482
+ "updated": 1787126400,
483
+ "profile": {
484
+ "real_name": "Dana Reyes",
485
+ "display_name": "dana.reyes",
486
+ "first_name": "Dana",
487
+ "last_name": "Reyes",
488
+ "title": "Engineering Manager",
489
+ "status_text": "",
490
+ "status_emoji": "",
491
+ "image_24": "",
492
+ "image_72": "",
493
+ "email": "dana.reyes@example.test"
494
+ }
495
+ }
496
+ },
497
+ {
498
+ "action": "upsert",
499
+ "packageId": "slack",
500
+ "namespace": "users",
501
+ "rowId": "U01SAM00002",
502
+ "value": {
503
+ "id": "U01SAM00002",
504
+ "team_id": "T01EXAMPLE0",
505
+ "name": "sam.okafor",
506
+ "real_name": "Sam Okafor",
507
+ "deleted": false,
508
+ "is_bot": false,
509
+ "is_admin": false,
510
+ "is_owner": false,
511
+ "tz": "Europe/London",
512
+ "tz_label": "British Summer Time",
513
+ "tz_offset": 3600,
514
+ "updated": 1787126400,
515
+ "profile": {
516
+ "real_name": "Sam Okafor",
517
+ "display_name": "sam.okafor",
518
+ "first_name": "Sam",
519
+ "last_name": "Okafor",
520
+ "title": "Backend Engineer",
521
+ "status_text": "",
522
+ "status_emoji": "",
523
+ "image_24": "",
524
+ "image_72": "",
525
+ "email": "sam.okafor@example.test"
526
+ }
527
+ }
528
+ },
529
+ {
530
+ "action": "upsert",
531
+ "packageId": "slack",
532
+ "namespace": "users",
533
+ "rowId": "U01PRIYA003",
534
+ "value": {
535
+ "id": "U01PRIYA003",
536
+ "team_id": "T01EXAMPLE0",
537
+ "name": "priya.n",
538
+ "real_name": "Priya Natarajan",
539
+ "deleted": false,
540
+ "is_bot": false,
541
+ "is_admin": false,
542
+ "is_owner": false,
543
+ "tz": "Europe/Berlin",
544
+ "tz_label": "Central European Summer Time",
545
+ "tz_offset": 7200,
546
+ "updated": 1787126400,
547
+ "profile": {
548
+ "real_name": "Priya Natarajan",
549
+ "display_name": "priya.n",
550
+ "first_name": "Priya",
551
+ "last_name": "Natarajan",
552
+ "title": "Contractor",
553
+ "status_text": "",
554
+ "status_emoji": "",
555
+ "image_24": "",
556
+ "image_72": "",
557
+ "email": "priya.n@example.test"
558
+ }
559
+ }
560
+ },
561
+ {
562
+ "action": "upsert",
563
+ "packageId": "slack",
564
+ "namespace": "users",
565
+ "rowId": "U01LEE00004",
566
+ "value": {
567
+ "id": "U01LEE00004",
568
+ "team_id": "T01EXAMPLE0",
569
+ "name": "lee.marsh",
570
+ "real_name": "Lee Marsh",
571
+ "deleted": true,
572
+ "is_bot": false,
573
+ "is_admin": false,
574
+ "is_owner": false,
575
+ "tz": "America/Los_Angeles",
576
+ "tz_label": "Pacific Daylight Time",
577
+ "tz_offset": -25200,
578
+ "updated": 1787126400,
579
+ "profile": {
580
+ "real_name": "Lee Marsh",
581
+ "display_name": "lee.marsh",
582
+ "first_name": "Lee",
583
+ "last_name": "Marsh",
584
+ "title": "Former Designer",
585
+ "status_text": "",
586
+ "status_emoji": "",
587
+ "image_24": "",
588
+ "image_72": "",
589
+ "email": "lee.marsh@example.test"
590
+ }
591
+ }
592
+ },
593
+ {
594
+ "action": "upsert",
595
+ "packageId": "slack",
596
+ "namespace": "users",
597
+ "rowId": "U01OPSBOT05",
598
+ "value": {
599
+ "id": "U01OPSBOT05",
600
+ "team_id": "T01EXAMPLE0",
601
+ "name": "opsbot",
602
+ "real_name": "Ops Bot",
603
+ "deleted": false,
604
+ "is_bot": true,
605
+ "is_admin": false,
606
+ "is_owner": false,
607
+ "tz": "Etc/UTC",
608
+ "tz_label": "Coordinated Universal Time",
609
+ "tz_offset": 0,
610
+ "updated": 1787126400,
611
+ "bot_id": "B01OPSBOT01",
612
+ "profile": {
613
+ "real_name": "Ops Bot",
614
+ "display_name": "opsbot",
615
+ "first_name": "Ops",
616
+ "last_name": "Bot",
617
+ "title": "Deployment and alerting bot",
618
+ "status_text": "",
619
+ "status_emoji": "",
620
+ "image_24": "",
621
+ "image_72": ""
622
+ }
623
+ }
624
+ },
625
+ {
626
+ "action": "upsert",
627
+ "packageId": "slack",
628
+ "namespace": "users",
629
+ "rowId": "U01MIRA0006",
630
+ "value": {
631
+ "id": "U01MIRA0006",
632
+ "team_id": "T01EXAMPLE0",
633
+ "name": "mira.chen",
634
+ "real_name": "Mira Chen",
635
+ "deleted": false,
636
+ "is_bot": false,
637
+ "is_admin": false,
638
+ "is_owner": false,
639
+ "tz": "Asia/Singapore",
640
+ "tz_label": "Singapore Standard Time",
641
+ "tz_offset": 28800,
642
+ "updated": 1787126400,
643
+ "profile": {
644
+ "real_name": "Mira Chen",
645
+ "display_name": "mira.chen",
646
+ "first_name": "Mira",
647
+ "last_name": "Chen",
648
+ "title": "Platform Engineer",
649
+ "status_text": "Out until Sept 16",
650
+ "status_emoji": ":palm_tree:",
651
+ "image_24": "",
652
+ "image_72": "",
653
+ "email": "mira.chen@example.test"
654
+ }
655
+ }
656
+ },
657
+ {
658
+ "action": "upsert",
659
+ "packageId": "slack",
660
+ "namespace": "conversations",
661
+ "rowId": "C01GENERAL1",
662
+ "value": {
663
+ "name": "general",
664
+ "is_channel": true,
665
+ "is_group": false,
666
+ "is_im": false,
667
+ "is_mpim": false,
668
+ "is_private": false,
669
+ "is_archived": false,
670
+ "is_general": true,
671
+ "created": 1787216400,
672
+ "creator": "U01DANA0001",
673
+ "topic": {
674
+ "value": "Company-wide announcements",
675
+ "creator": "U01DANA0001",
676
+ "last_set": 1787216460
677
+ },
678
+ "purpose": {
679
+ "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
680
+ "creator": "U01DANA0001",
681
+ "last_set": 1787216400
682
+ },
683
+ "updated": 1787216400000,
684
+ "id": "C01GENERAL1",
685
+ "name_normalized": "general"
686
+ }
687
+ },
688
+ {
689
+ "action": "upsert",
690
+ "packageId": "slack",
691
+ "namespace": "memberships",
692
+ "rowId": "C01GENERAL1:U01DANA0001",
693
+ "value": {
694
+ "channel": "C01GENERAL1",
695
+ "user": "U01DANA0001",
696
+ "joined": 1787216400
697
+ }
698
+ },
699
+ {
700
+ "action": "upsert",
701
+ "packageId": "slack",
702
+ "namespace": "memberships",
703
+ "rowId": "C01GENERAL1:U01SAM00002",
704
+ "value": {
705
+ "channel": "C01GENERAL1",
706
+ "user": "U01SAM00002",
707
+ "joined": 1787216400
708
+ }
709
+ },
710
+ {
711
+ "action": "upsert",
712
+ "packageId": "slack",
713
+ "namespace": "memberships",
714
+ "rowId": "C01GENERAL1:U01PRIYA003",
715
+ "value": {
716
+ "channel": "C01GENERAL1",
717
+ "user": "U01PRIYA003",
718
+ "joined": 1787216400
719
+ }
720
+ },
721
+ {
722
+ "action": "upsert",
723
+ "packageId": "slack",
724
+ "namespace": "memberships",
725
+ "rowId": "C01GENERAL1:U01MIRA0006",
726
+ "value": {
727
+ "channel": "C01GENERAL1",
728
+ "user": "U01MIRA0006",
729
+ "joined": 1787216400
730
+ }
731
+ },
732
+ {
733
+ "action": "upsert",
734
+ "packageId": "slack",
735
+ "namespace": "memberships",
736
+ "rowId": "C01GENERAL1:U01OPSBOT05",
737
+ "value": {
738
+ "channel": "C01GENERAL1",
739
+ "user": "U01OPSBOT05",
740
+ "joined": 1787216400
741
+ }
742
+ },
743
+ {
744
+ "action": "upsert",
745
+ "packageId": "slack",
746
+ "namespace": "conversations",
747
+ "rowId": "C01ENGINEER",
748
+ "value": {
749
+ "name": "engineering",
750
+ "is_channel": true,
751
+ "is_group": false,
752
+ "is_im": false,
753
+ "is_mpim": false,
754
+ "is_private": false,
755
+ "is_archived": false,
756
+ "is_general": false,
757
+ "created": 1787217000,
758
+ "creator": "U01DANA0001",
759
+ "topic": {
760
+ "value": "Next deploy window: Tue 2026-09-16",
761
+ "creator": "U01DANA0001",
762
+ "last_set": 1789116660
763
+ },
764
+ "purpose": {
765
+ "value": "Engineering discussion, deploy coordination and build notifications.",
766
+ "creator": "U01DANA0001",
767
+ "last_set": 1787217000
768
+ },
769
+ "updated": 1787217000000,
770
+ "id": "C01ENGINEER",
771
+ "name_normalized": "engineering"
772
+ }
773
+ },
774
+ {
775
+ "action": "upsert",
776
+ "packageId": "slack",
777
+ "namespace": "memberships",
778
+ "rowId": "C01ENGINEER:U01DANA0001",
779
+ "value": {
780
+ "channel": "C01ENGINEER",
781
+ "user": "U01DANA0001",
782
+ "joined": 1787217000
783
+ }
784
+ },
785
+ {
786
+ "action": "upsert",
787
+ "packageId": "slack",
788
+ "namespace": "memberships",
789
+ "rowId": "C01ENGINEER:U01SAM00002",
790
+ "value": {
791
+ "channel": "C01ENGINEER",
792
+ "user": "U01SAM00002",
793
+ "joined": 1787217000
794
+ }
795
+ },
796
+ {
797
+ "action": "upsert",
798
+ "packageId": "slack",
799
+ "namespace": "memberships",
800
+ "rowId": "C01ENGINEER:U01MIRA0006",
801
+ "value": {
802
+ "channel": "C01ENGINEER",
803
+ "user": "U01MIRA0006",
804
+ "joined": 1787217000
805
+ }
806
+ },
807
+ {
808
+ "action": "upsert",
809
+ "packageId": "slack",
810
+ "namespace": "memberships",
811
+ "rowId": "C01ENGINEER:U01OPSBOT05",
812
+ "value": {
813
+ "channel": "C01ENGINEER",
814
+ "user": "U01OPSBOT05",
815
+ "joined": 1787217000
816
+ }
817
+ },
818
+ {
819
+ "action": "upsert",
820
+ "packageId": "slack",
821
+ "namespace": "conversations",
822
+ "rowId": "C01INCIDENT",
823
+ "value": {
824
+ "name": "incidents",
825
+ "is_channel": true,
826
+ "is_group": false,
827
+ "is_im": false,
828
+ "is_mpim": false,
829
+ "is_private": true,
830
+ "is_archived": false,
831
+ "is_general": false,
832
+ "created": 1787217600,
833
+ "creator": "U01SAM00002",
834
+ "topic": {
835
+ "value": "",
836
+ "creator": "",
837
+ "last_set": 0
838
+ },
839
+ "purpose": {
840
+ "value": "Private incident response coordination.",
841
+ "creator": "U01SAM00002",
842
+ "last_set": 1787217600
843
+ },
844
+ "updated": 1787217600000,
845
+ "id": "C01INCIDENT",
846
+ "name_normalized": "incidents"
847
+ }
848
+ },
849
+ {
850
+ "action": "upsert",
851
+ "packageId": "slack",
852
+ "namespace": "memberships",
853
+ "rowId": "C01INCIDENT:U01DANA0001",
854
+ "value": {
855
+ "channel": "C01INCIDENT",
856
+ "user": "U01DANA0001",
857
+ "joined": 1787217600
858
+ }
859
+ },
860
+ {
861
+ "action": "upsert",
862
+ "packageId": "slack",
863
+ "namespace": "memberships",
864
+ "rowId": "C01INCIDENT:U01SAM00002",
865
+ "value": {
866
+ "channel": "C01INCIDENT",
867
+ "user": "U01SAM00002",
868
+ "joined": 1787217600
869
+ }
870
+ },
871
+ {
872
+ "action": "upsert",
873
+ "packageId": "slack",
874
+ "namespace": "memberships",
875
+ "rowId": "C01INCIDENT:U01OPSBOT05",
876
+ "value": {
877
+ "channel": "C01INCIDENT",
878
+ "user": "U01OPSBOT05",
879
+ "joined": 1787217600
880
+ }
881
+ },
882
+ {
883
+ "action": "upsert",
884
+ "packageId": "slack",
885
+ "namespace": "conversations",
886
+ "rowId": "C01RANDOM01",
887
+ "value": {
888
+ "name": "random",
889
+ "is_channel": true,
890
+ "is_group": false,
891
+ "is_im": false,
892
+ "is_mpim": false,
893
+ "is_private": false,
894
+ "is_archived": false,
895
+ "is_general": false,
896
+ "created": 1787216520,
897
+ "creator": "U01DANA0001",
898
+ "topic": {
899
+ "value": "",
900
+ "creator": "",
901
+ "last_set": 0
902
+ },
903
+ "purpose": {
904
+ "value": "Non-work banter and water cooler conversation.",
905
+ "creator": "U01DANA0001",
906
+ "last_set": 1787216520
907
+ },
908
+ "updated": 1787216520000,
909
+ "id": "C01RANDOM01",
910
+ "name_normalized": "random"
911
+ }
912
+ },
913
+ {
914
+ "action": "upsert",
915
+ "packageId": "slack",
916
+ "namespace": "memberships",
917
+ "rowId": "C01RANDOM01:U01DANA0001",
918
+ "value": {
919
+ "channel": "C01RANDOM01",
920
+ "user": "U01DANA0001",
921
+ "joined": 1787216520
922
+ }
923
+ },
924
+ {
925
+ "action": "upsert",
926
+ "packageId": "slack",
927
+ "namespace": "memberships",
928
+ "rowId": "C01RANDOM01:U01SAM00002",
929
+ "value": {
930
+ "channel": "C01RANDOM01",
931
+ "user": "U01SAM00002",
932
+ "joined": 1787216520
933
+ }
934
+ },
935
+ {
936
+ "action": "upsert",
937
+ "packageId": "slack",
938
+ "namespace": "memberships",
939
+ "rowId": "C01RANDOM01:U01PRIYA003",
940
+ "value": {
941
+ "channel": "C01RANDOM01",
942
+ "user": "U01PRIYA003",
943
+ "joined": 1787216520
944
+ }
945
+ },
946
+ {
947
+ "action": "upsert",
948
+ "packageId": "slack",
949
+ "namespace": "memberships",
950
+ "rowId": "C01RANDOM01:U01MIRA0006",
951
+ "value": {
952
+ "channel": "C01RANDOM01",
953
+ "user": "U01MIRA0006",
954
+ "joined": 1787216520
955
+ }
956
+ },
957
+ {
958
+ "action": "upsert",
959
+ "packageId": "slack",
960
+ "namespace": "memberships",
961
+ "rowId": "C01RANDOM01:U01OPSBOT05",
962
+ "value": {
963
+ "channel": "C01RANDOM01",
964
+ "user": "U01OPSBOT05",
965
+ "joined": 1787216520
966
+ }
967
+ },
968
+ {
969
+ "action": "upsert",
970
+ "packageId": "slack",
971
+ "namespace": "conversations",
972
+ "rowId": "C01LAUNCHQ3",
973
+ "value": {
974
+ "name": "launch-q3",
975
+ "is_channel": true,
976
+ "is_group": false,
977
+ "is_im": false,
978
+ "is_mpim": false,
979
+ "is_private": false,
980
+ "is_archived": true,
981
+ "is_general": false,
982
+ "created": 1787220000,
983
+ "creator": "U01MIRA0006",
984
+ "topic": {
985
+ "value": "",
986
+ "creator": "",
987
+ "last_set": 0
988
+ },
989
+ "purpose": {
990
+ "value": "",
991
+ "creator": "",
992
+ "last_set": 0
993
+ },
994
+ "updated": 1787308260000,
995
+ "id": "C01LAUNCHQ3",
996
+ "name_normalized": "launch-q3"
997
+ }
998
+ },
999
+ {
1000
+ "action": "upsert",
1001
+ "packageId": "slack",
1002
+ "namespace": "memberships",
1003
+ "rowId": "C01LAUNCHQ3:U01DANA0001",
1004
+ "value": {
1005
+ "channel": "C01LAUNCHQ3",
1006
+ "user": "U01DANA0001",
1007
+ "joined": 1787220000
1008
+ }
1009
+ },
1010
+ {
1011
+ "action": "upsert",
1012
+ "packageId": "slack",
1013
+ "namespace": "memberships",
1014
+ "rowId": "C01LAUNCHQ3:U01MIRA0006",
1015
+ "value": {
1016
+ "channel": "C01LAUNCHQ3",
1017
+ "user": "U01MIRA0006",
1018
+ "joined": 1787220000
1019
+ }
1020
+ },
1021
+ {
1022
+ "action": "upsert",
1023
+ "packageId": "slack",
1024
+ "namespace": "conversations",
1025
+ "rowId": "C01DESIGN01",
1026
+ "value": {
1027
+ "name": "design",
1028
+ "is_channel": true,
1029
+ "is_group": false,
1030
+ "is_im": false,
1031
+ "is_mpim": false,
1032
+ "is_private": false,
1033
+ "is_archived": false,
1034
+ "is_general": false,
1035
+ "created": 1787385600,
1036
+ "creator": "U01MIRA0006",
1037
+ "topic": {
1038
+ "value": "",
1039
+ "creator": "",
1040
+ "last_set": 0
1041
+ },
1042
+ "purpose": {
1043
+ "value": "Design reviews and mockups.",
1044
+ "creator": "U01MIRA0006",
1045
+ "last_set": 1787385600
1046
+ },
1047
+ "updated": 1787385600000,
1048
+ "id": "C01DESIGN01",
1049
+ "name_normalized": "design"
1050
+ }
1051
+ },
1052
+ {
1053
+ "action": "upsert",
1054
+ "packageId": "slack",
1055
+ "namespace": "memberships",
1056
+ "rowId": "C01DESIGN01:U01SAM00002",
1057
+ "value": {
1058
+ "channel": "C01DESIGN01",
1059
+ "user": "U01SAM00002",
1060
+ "joined": 1787385600
1061
+ }
1062
+ },
1063
+ {
1064
+ "action": "upsert",
1065
+ "packageId": "slack",
1066
+ "namespace": "memberships",
1067
+ "rowId": "C01DESIGN01:U01MIRA0006",
1068
+ "value": {
1069
+ "channel": "C01DESIGN01",
1070
+ "user": "U01MIRA0006",
1071
+ "joined": 1787385600
1072
+ }
1073
+ },
1074
+ {
1075
+ "action": "upsert",
1076
+ "packageId": "slack",
1077
+ "namespace": "conversations",
1078
+ "rowId": "C01LEADERS1",
1079
+ "value": {
1080
+ "name": "leadership",
1081
+ "is_channel": true,
1082
+ "is_group": false,
1083
+ "is_im": false,
1084
+ "is_mpim": false,
1085
+ "is_private": true,
1086
+ "is_archived": false,
1087
+ "is_general": false,
1088
+ "created": 1787387400,
1089
+ "creator": "U01SAM00002",
1090
+ "topic": {
1091
+ "value": "",
1092
+ "creator": "",
1093
+ "last_set": 0
1094
+ },
1095
+ "purpose": {
1096
+ "value": "",
1097
+ "creator": "",
1098
+ "last_set": 0
1099
+ },
1100
+ "updated": 1787387400000,
1101
+ "id": "C01LEADERS1",
1102
+ "name_normalized": "leadership"
1103
+ }
1104
+ },
1105
+ {
1106
+ "action": "upsert",
1107
+ "packageId": "slack",
1108
+ "namespace": "memberships",
1109
+ "rowId": "C01LEADERS1:U01SAM00002",
1110
+ "value": {
1111
+ "channel": "C01LEADERS1",
1112
+ "user": "U01SAM00002",
1113
+ "joined": 1787387400
1114
+ }
1115
+ },
1116
+ {
1117
+ "action": "upsert",
1118
+ "packageId": "slack",
1119
+ "namespace": "memberships",
1120
+ "rowId": "C01LEADERS1:U01MIRA0006",
1121
+ "value": {
1122
+ "channel": "C01LEADERS1",
1123
+ "user": "U01MIRA0006",
1124
+ "joined": 1787387400
1125
+ }
1126
+ },
1127
+ {
1128
+ "action": "upsert",
1129
+ "packageId": "slack",
1130
+ "namespace": "conversations",
1131
+ "rowId": "D01DANASAM1",
1132
+ "value": {
1133
+ "name": "",
1134
+ "is_channel": false,
1135
+ "is_group": false,
1136
+ "is_im": true,
1137
+ "is_mpim": false,
1138
+ "is_private": true,
1139
+ "is_archived": false,
1140
+ "is_general": false,
1141
+ "created": 1787223600,
1142
+ "creator": "",
1143
+ "topic": {
1144
+ "value": "",
1145
+ "creator": "",
1146
+ "last_set": 0
1147
+ },
1148
+ "purpose": {
1149
+ "value": "",
1150
+ "creator": "",
1151
+ "last_set": 0
1152
+ },
1153
+ "updated": 1787223600000,
1154
+ "user": "U01SAM00002",
1155
+ "id": "D01DANASAM1",
1156
+ "name_normalized": ""
1157
+ }
1158
+ },
1159
+ {
1160
+ "action": "upsert",
1161
+ "packageId": "slack",
1162
+ "namespace": "memberships",
1163
+ "rowId": "D01DANASAM1:U01DANA0001",
1164
+ "value": {
1165
+ "channel": "D01DANASAM1",
1166
+ "user": "U01DANA0001",
1167
+ "joined": 1787223600
1168
+ }
1169
+ },
1170
+ {
1171
+ "action": "upsert",
1172
+ "packageId": "slack",
1173
+ "namespace": "memberships",
1174
+ "rowId": "D01DANASAM1:U01SAM00002",
1175
+ "value": {
1176
+ "channel": "D01DANASAM1",
1177
+ "user": "U01SAM00002",
1178
+ "joined": 1787223600
1179
+ }
1180
+ },
1181
+ {
1182
+ "action": "upsert",
1183
+ "packageId": "slack",
1184
+ "namespace": "conversations",
1185
+ "rowId": "C01MPDM0001",
1186
+ "value": {
1187
+ "name": "mpdm-dana.reyes--mira.chen--sam.okafor-1",
1188
+ "is_channel": false,
1189
+ "is_group": false,
1190
+ "is_im": false,
1191
+ "is_mpim": true,
1192
+ "is_private": true,
1193
+ "is_archived": false,
1194
+ "is_general": false,
1195
+ "created": 1789127940,
1196
+ "creator": "U01DANA0001",
1197
+ "topic": {
1198
+ "value": "",
1199
+ "creator": "",
1200
+ "last_set": 0
1201
+ },
1202
+ "purpose": {
1203
+ "value": "",
1204
+ "creator": "",
1205
+ "last_set": 0
1206
+ },
1207
+ "updated": 1789127940000,
1208
+ "id": "C01MPDM0001",
1209
+ "name_normalized": "mpdm-dana.reyes--mira.chen--sam.okafor-1"
1210
+ }
1211
+ },
1212
+ {
1213
+ "action": "upsert",
1214
+ "packageId": "slack",
1215
+ "namespace": "memberships",
1216
+ "rowId": "C01MPDM0001:U01DANA0001",
1217
+ "value": {
1218
+ "channel": "C01MPDM0001",
1219
+ "user": "U01DANA0001",
1220
+ "joined": 1789127940
1221
+ }
1222
+ },
1223
+ {
1224
+ "action": "upsert",
1225
+ "packageId": "slack",
1226
+ "namespace": "memberships",
1227
+ "rowId": "C01MPDM0001:U01SAM00002",
1228
+ "value": {
1229
+ "channel": "C01MPDM0001",
1230
+ "user": "U01SAM00002",
1231
+ "joined": 1789127940
1232
+ }
1233
+ },
1234
+ {
1235
+ "action": "upsert",
1236
+ "packageId": "slack",
1237
+ "namespace": "memberships",
1238
+ "rowId": "C01MPDM0001:U01MIRA0006",
1239
+ "value": {
1240
+ "channel": "C01MPDM0001",
1241
+ "user": "U01MIRA0006",
1242
+ "joined": 1789127940
1243
+ }
1244
+ },
1245
+ {
1246
+ "action": "upsert",
1247
+ "packageId": "slack",
1248
+ "namespace": "conversations",
1249
+ "rowId": "C01ONBOARD1",
1250
+ "value": {
1251
+ "name": "onboarding",
1252
+ "is_channel": true,
1253
+ "is_group": false,
1254
+ "is_im": false,
1255
+ "is_mpim": false,
1256
+ "is_private": false,
1257
+ "is_archived": false,
1258
+ "is_general": false,
1259
+ "created": 1789200000,
1260
+ "creator": "U01DANA0001",
1261
+ "topic": {
1262
+ "value": "",
1263
+ "creator": "",
1264
+ "last_set": 0
1265
+ },
1266
+ "purpose": {
1267
+ "value": "Help for new joiners.",
1268
+ "creator": "U01DANA0001",
1269
+ "last_set": 1789200000
1270
+ },
1271
+ "updated": 1789200000000,
1272
+ "id": "C01ONBOARD1",
1273
+ "name_normalized": "onboarding"
1274
+ }
1275
+ },
1276
+ {
1277
+ "action": "upsert",
1278
+ "packageId": "slack",
1279
+ "namespace": "memberships",
1280
+ "rowId": "C01ONBOARD1:U01DANA0001",
1281
+ "value": {
1282
+ "channel": "C01ONBOARD1",
1283
+ "user": "U01DANA0001",
1284
+ "joined": 1789200000
1285
+ }
1286
+ },
1287
+ {
1288
+ "action": "upsert",
1289
+ "packageId": "slack",
1290
+ "namespace": "memberships",
1291
+ "rowId": "C01ONBOARD1:U01MIRA0006",
1292
+ "value": {
1293
+ "channel": "C01ONBOARD1",
1294
+ "user": "U01MIRA0006",
1295
+ "joined": 1789200000
1296
+ }
1297
+ },
1298
+ {
1299
+ "action": "upsert",
1300
+ "packageId": "slack",
1301
+ "namespace": "messages",
1302
+ "rowId": "C01GENERAL1:1787216400.000101",
1303
+ "value": {
1304
+ "channel": "C01GENERAL1",
1305
+ "ts": "1787216400.000101",
1306
+ "type": "message",
1307
+ "user": "U01DANA0001",
1308
+ "text": "Welcome to Example Team! This is #general — company-wide announcements only. Please keep discussion in the topic channels.",
1309
+ "reactions": [],
1310
+ "permalink": "https://example-team.slack.com/archives/C01GENERAL1/p1787216400000101",
1311
+ "team": "T01EXAMPLE0",
1312
+ "pinned_to": [
1313
+ "C01GENERAL1"
1314
+ ]
1315
+ }
1316
+ },
1317
+ {
1318
+ "action": "upsert",
1319
+ "packageId": "slack",
1320
+ "namespace": "messages",
1321
+ "rowId": "C01GENERAL1:1788249600.000102",
1322
+ "value": {
1323
+ "channel": "C01GENERAL1",
1324
+ "ts": "1788249600.000102",
1325
+ "type": "message",
1326
+ "user": "U01OPSBOT05",
1327
+ "text": "Reminder: the monthly all-hands is on Thursday at 15:00 UTC.",
1328
+ "reactions": [],
1329
+ "permalink": "https://example-team.slack.com/archives/C01GENERAL1/p1788249600000102",
1330
+ "team": "T01EXAMPLE0",
1331
+ "subtype": "bot_message",
1332
+ "bot_id": "B01OPSBOT01"
1333
+ }
1334
+ },
1335
+ {
1336
+ "action": "upsert",
1337
+ "packageId": "slack",
1338
+ "namespace": "messages",
1339
+ "rowId": "C01GENERAL1:1789036200.000103",
1340
+ "value": {
1341
+ "channel": "C01GENERAL1",
1342
+ "ts": "1789036200.000103",
1343
+ "type": "message",
1344
+ "user": "U01MIRA0006",
1345
+ "text": "Heads-up: I'm out Sept 14–16, Sam covers on-call.",
1346
+ "reactions": [
1347
+ {
1348
+ "name": "wave",
1349
+ "users": [
1350
+ "U01SAM00002"
1351
+ ],
1352
+ "count": 1
1353
+ }
1354
+ ],
1355
+ "permalink": "https://example-team.slack.com/archives/C01GENERAL1/p1789036200000103",
1356
+ "team": "T01EXAMPLE0"
1357
+ }
1358
+ },
1359
+ {
1360
+ "action": "upsert",
1361
+ "packageId": "slack",
1362
+ "namespace": "messages",
1363
+ "rowId": "C01ENGINEER:1787561880.000119",
1364
+ "value": {
1365
+ "channel": "C01ENGINEER",
1366
+ "ts": "1787561880.000119",
1367
+ "type": "message",
1368
+ "user": "U01OPSBOT05",
1369
+ "text": "<@U01OPSBOT05> has joined the channel",
1370
+ "reactions": [],
1371
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787561880000119",
1372
+ "team": "T01EXAMPLE0",
1373
+ "subtype": "channel_join",
1374
+ "bot_id": "B01OPSBOT01"
1375
+ }
1376
+ },
1377
+ {
1378
+ "action": "upsert",
1379
+ "packageId": "slack",
1380
+ "namespace": "messages",
1381
+ "rowId": "C01ENGINEER:1787562900.000120",
1382
+ "value": {
1383
+ "channel": "C01ENGINEER",
1384
+ "ts": "1787562900.000120",
1385
+ "type": "message",
1386
+ "user": "U01SAM00002",
1387
+ "text": "Kicking off the payments-service migration this week. Design doc is in the shared drive.",
1388
+ "reactions": [],
1389
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787562900000120",
1390
+ "team": "T01EXAMPLE0",
1391
+ "thread_ts": "1787562900.000120",
1392
+ "reply_count": 4,
1393
+ "reply_users": [
1394
+ "U01DANA0001",
1395
+ "U01MIRA0006",
1396
+ "U01OPSBOT05"
1397
+ ],
1398
+ "reply_users_count": 3,
1399
+ "latest_reply": "1787669100.000124"
1400
+ }
1401
+ },
1402
+ {
1403
+ "action": "upsert",
1404
+ "packageId": "slack",
1405
+ "namespace": "messages",
1406
+ "rowId": "C01ENGINEER:1787564400.000121",
1407
+ "value": {
1408
+ "channel": "C01ENGINEER",
1409
+ "ts": "1787564400.000121",
1410
+ "type": "message",
1411
+ "user": "U01DANA0001",
1412
+ "text": "Great — let's make sure the postgres schema changes are backwards compatible.",
1413
+ "reactions": [],
1414
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787564400000121",
1415
+ "team": "T01EXAMPLE0",
1416
+ "thread_ts": "1787562900.000120"
1417
+ }
1418
+ },
1419
+ {
1420
+ "action": "upsert",
1421
+ "packageId": "slack",
1422
+ "namespace": "messages",
1423
+ "rowId": "C01ENGINEER:1787565900.000122",
1424
+ "value": {
1425
+ "channel": "C01ENGINEER",
1426
+ "ts": "1787565900.000122",
1427
+ "type": "message",
1428
+ "user": "U01MIRA0006",
1429
+ "text": "I can review the migration scripts tomorrow.",
1430
+ "reactions": [],
1431
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787565900000122",
1432
+ "team": "T01EXAMPLE0",
1433
+ "thread_ts": "1787562900.000120"
1434
+ }
1435
+ },
1436
+ {
1437
+ "action": "upsert",
1438
+ "packageId": "slack",
1439
+ "namespace": "messages",
1440
+ "rowId": "C01ENGINEER:1787667600.000123",
1441
+ "value": {
1442
+ "channel": "C01ENGINEER",
1443
+ "ts": "1787667600.000123",
1444
+ "type": "message",
1445
+ "user": "U01MIRA0006",
1446
+ "text": "Update for everyone: the migration is scheduled for Thursday's deploy window.",
1447
+ "reactions": [],
1448
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787667600000123",
1449
+ "team": "T01EXAMPLE0",
1450
+ "thread_ts": "1787562900.000120",
1451
+ "subtype": "thread_broadcast"
1452
+ }
1453
+ },
1454
+ {
1455
+ "action": "upsert",
1456
+ "packageId": "slack",
1457
+ "namespace": "messages",
1458
+ "rowId": "C01ENGINEER:1787669100.000124",
1459
+ "value": {
1460
+ "channel": "C01ENGINEER",
1461
+ "ts": "1787669100.000124",
1462
+ "type": "message",
1463
+ "user": "U01OPSBOT05",
1464
+ "text": "Change ticket CHG-2041 created for the Thursday window.",
1465
+ "reactions": [],
1466
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787669100000124",
1467
+ "team": "T01EXAMPLE0",
1468
+ "thread_ts": "1787562900.000120",
1469
+ "subtype": "bot_message",
1470
+ "bot_id": "B01OPSBOT01"
1471
+ }
1472
+ },
1473
+ {
1474
+ "action": "upsert",
1475
+ "packageId": "slack",
1476
+ "namespace": "messages",
1477
+ "rowId": "C01ENGINEER:1787828400.000125",
1478
+ "value": {
1479
+ "channel": "C01ENGINEER",
1480
+ "ts": "1787828400.000125",
1481
+ "type": "message",
1482
+ "user": "U01DANA0001",
1483
+ "text": "Deploy checklist for Thursday: freeze at 14:00 UTC, smoke tests, then announce in #general.",
1484
+ "reactions": [
1485
+ {
1486
+ "name": "+1",
1487
+ "users": [
1488
+ "U01SAM00002",
1489
+ "U01MIRA0006"
1490
+ ],
1491
+ "count": 2
1492
+ }
1493
+ ],
1494
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787828400000125",
1495
+ "team": "T01EXAMPLE0"
1496
+ }
1497
+ },
1498
+ {
1499
+ "action": "upsert",
1500
+ "packageId": "slack",
1501
+ "namespace": "messages",
1502
+ "rowId": "C01ENGINEER:1787934600.000126",
1503
+ "value": {
1504
+ "channel": "C01ENGINEER",
1505
+ "ts": "1787934600.000126",
1506
+ "type": "message",
1507
+ "user": "U01SAM00002",
1508
+ "text": "Deploy went out cleanly. Error rate flat, p95 latency down 8%.",
1509
+ "reactions": [],
1510
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1787934600000126",
1511
+ "team": "T01EXAMPLE0"
1512
+ }
1513
+ },
1514
+ {
1515
+ "action": "upsert",
1516
+ "packageId": "slack",
1517
+ "namespace": "messages",
1518
+ "rowId": "C01ENGINEER:1788430200.000128",
1519
+ "value": {
1520
+ "channel": "C01ENGINEER",
1521
+ "ts": "1788430200.000128",
1522
+ "type": "message",
1523
+ "user": "U01MIRA0006",
1524
+ "text": "Postgres 16 upgrade notes are up. Main change: the connection pooler config moves to the new file.",
1525
+ "reactions": [],
1526
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1788430200000128",
1527
+ "team": "T01EXAMPLE0"
1528
+ }
1529
+ },
1530
+ {
1531
+ "action": "upsert",
1532
+ "packageId": "slack",
1533
+ "namespace": "messages",
1534
+ "rowId": "C01ENGINEER:1788526800.000129",
1535
+ "value": {
1536
+ "channel": "C01ENGINEER",
1537
+ "ts": "1788526800.000129",
1538
+ "type": "message",
1539
+ "user": "U01DANA0001",
1540
+ "text": "Reminder to write a rollback plan before every production change. Template is pinned in #incidents.",
1541
+ "reactions": [],
1542
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1788526800000129",
1543
+ "team": "T01EXAMPLE0",
1544
+ "edited": {
1545
+ "user": "U01DANA0001",
1546
+ "ts": "1788526920.000000"
1547
+ }
1548
+ }
1549
+ },
1550
+ {
1551
+ "action": "upsert",
1552
+ "packageId": "slack",
1553
+ "namespace": "messages",
1554
+ "rowId": "C01ENGINEER:1788773400.000130",
1555
+ "value": {
1556
+ "channel": "C01ENGINEER",
1557
+ "ts": "1788773400.000130",
1558
+ "type": "message",
1559
+ "user": "U01OPSBOT05",
1560
+ "text": "Nightly build #4821 passed (312 tests, 0 failures).",
1561
+ "reactions": [],
1562
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1788773400000130",
1563
+ "team": "T01EXAMPLE0",
1564
+ "blocks": [
1565
+ {
1566
+ "type": "section",
1567
+ "text": {
1568
+ "type": "mrkdwn",
1569
+ "text": "*Nightly build #4821* passed\n312 tests, 0 failures"
1570
+ }
1571
+ }
1572
+ ],
1573
+ "subtype": "bot_message",
1574
+ "bot_id": "B01OPSBOT01"
1575
+ }
1576
+ },
1577
+ {
1578
+ "action": "upsert",
1579
+ "packageId": "slack",
1580
+ "namespace": "messages",
1581
+ "rowId": "C01ENGINEER:1788882300.000131",
1582
+ "value": {
1583
+ "channel": "C01ENGINEER",
1584
+ "ts": "1788882300.000131",
1585
+ "type": "message",
1586
+ "user": "U01SAM00002",
1587
+ "text": "Anyone else seeing flaky results from the integration suite on the ci-runner-3 box?",
1588
+ "reactions": [
1589
+ {
1590
+ "name": "eyes",
1591
+ "users": [
1592
+ "U01DANA0001"
1593
+ ],
1594
+ "count": 1
1595
+ }
1596
+ ],
1597
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1788882300000131",
1598
+ "team": "T01EXAMPLE0"
1599
+ }
1600
+ },
1601
+ {
1602
+ "action": "upsert",
1603
+ "packageId": "slack",
1604
+ "namespace": "messages",
1605
+ "rowId": "C01ENGINEER:1788952800.000132",
1606
+ "value": {
1607
+ "channel": "C01ENGINEER",
1608
+ "ts": "1788952800.000132",
1609
+ "type": "message",
1610
+ "user": "U01MIRA0006",
1611
+ "text": "Fixed the flaky suite — the test container was reusing a port. PR #418 is ready for review.",
1612
+ "reactions": [],
1613
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1788952800000132",
1614
+ "team": "T01EXAMPLE0"
1615
+ }
1616
+ },
1617
+ {
1618
+ "action": "upsert",
1619
+ "packageId": "slack",
1620
+ "namespace": "messages",
1621
+ "rowId": "C01ENGINEER:1789116600.000133",
1622
+ "value": {
1623
+ "channel": "C01ENGINEER",
1624
+ "ts": "1789116600.000133",
1625
+ "type": "message",
1626
+ "user": "U01DANA0001",
1627
+ "text": "Next deploy window is Tuesday 2026-09-16. Add your changes to the release sheet by Monday noon.",
1628
+ "reactions": [],
1629
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1789116600000133",
1630
+ "team": "T01EXAMPLE0"
1631
+ }
1632
+ },
1633
+ {
1634
+ "action": "upsert",
1635
+ "packageId": "slack",
1636
+ "namespace": "messages",
1637
+ "rowId": "C01ENGINEER:1789375200.000134",
1638
+ "value": {
1639
+ "channel": "C01ENGINEER",
1640
+ "ts": "1789375200.000134",
1641
+ "type": "message",
1642
+ "user": "U01SAM00002",
1643
+ "text": "Morning! Standup moved to 09:30 UTC today because of the incident review.",
1644
+ "reactions": [],
1645
+ "permalink": "https://example-team.slack.com/archives/C01ENGINEER/p1789375200000134",
1646
+ "team": "T01EXAMPLE0"
1647
+ }
1648
+ },
1649
+ {
1650
+ "action": "upsert",
1651
+ "packageId": "slack",
1652
+ "namespace": "messages",
1653
+ "rowId": "C01INCIDENT:1788055800.000141",
1654
+ "value": {
1655
+ "channel": "C01INCIDENT",
1656
+ "ts": "1788055800.000141",
1657
+ "type": "message",
1658
+ "user": "U01OPSBOT05",
1659
+ "text": "ALERT: checkout-api error rate above 5% for 10 minutes (INC-77).",
1660
+ "reactions": [],
1661
+ "permalink": "https://example-team.slack.com/archives/C01INCIDENT/p1788055800000141",
1662
+ "team": "T01EXAMPLE0",
1663
+ "subtype": "bot_message",
1664
+ "bot_id": "B01OPSBOT01",
1665
+ "thread_ts": "1788055800.000141",
1666
+ "reply_count": 2,
1667
+ "reply_users": [
1668
+ "U01SAM00002"
1669
+ ],
1670
+ "reply_users_count": 1,
1671
+ "latest_reply": "1788057060.000143"
1672
+ }
1673
+ },
1674
+ {
1675
+ "action": "upsert",
1676
+ "packageId": "slack",
1677
+ "namespace": "messages",
1678
+ "rowId": "C01INCIDENT:1788056040.000142",
1679
+ "value": {
1680
+ "channel": "C01INCIDENT",
1681
+ "ts": "1788056040.000142",
1682
+ "type": "message",
1683
+ "user": "U01SAM00002",
1684
+ "text": "On it. Rolling back the 02:00 config change.",
1685
+ "reactions": [],
1686
+ "permalink": "https://example-team.slack.com/archives/C01INCIDENT/p1788056040000142",
1687
+ "team": "T01EXAMPLE0",
1688
+ "thread_ts": "1788055800.000141"
1689
+ }
1690
+ },
1691
+ {
1692
+ "action": "upsert",
1693
+ "packageId": "slack",
1694
+ "namespace": "messages",
1695
+ "rowId": "C01INCIDENT:1788057060.000143",
1696
+ "value": {
1697
+ "channel": "C01INCIDENT",
1698
+ "ts": "1788057060.000143",
1699
+ "type": "message",
1700
+ "user": "U01SAM00002",
1701
+ "text": "Recovered at 02:29. Root cause: a bad feature-flag default. Post-mortem tomorrow.",
1702
+ "reactions": [],
1703
+ "permalink": "https://example-team.slack.com/archives/C01INCIDENT/p1788057060000143",
1704
+ "team": "T01EXAMPLE0",
1705
+ "thread_ts": "1788055800.000141"
1706
+ }
1707
+ },
1708
+ {
1709
+ "action": "upsert",
1710
+ "packageId": "slack",
1711
+ "namespace": "messages",
1712
+ "rowId": "C01INCIDENT:1788166800.000144",
1713
+ "value": {
1714
+ "channel": "C01INCIDENT",
1715
+ "ts": "1788166800.000144",
1716
+ "type": "message",
1717
+ "user": "U01SAM00002",
1718
+ "text": "Incident runbook and rollback template: https://wiki.example.test/runbooks/checkout — please read before your next on-call shift.",
1719
+ "reactions": [],
1720
+ "permalink": "https://example-team.slack.com/archives/C01INCIDENT/p1788166800000144",
1721
+ "team": "T01EXAMPLE0",
1722
+ "pinned_to": [
1723
+ "C01INCIDENT"
1724
+ ]
1725
+ }
1726
+ },
1727
+ {
1728
+ "action": "upsert",
1729
+ "packageId": "slack",
1730
+ "namespace": "messages",
1731
+ "rowId": "C01INCIDENT:1789374000.000145",
1732
+ "value": {
1733
+ "channel": "C01INCIDENT",
1734
+ "ts": "1789374000.000145",
1735
+ "type": "message",
1736
+ "user": "U01DANA0001",
1737
+ "text": "Incident review for INC-77 starts at 09:00 UTC in the ops room.",
1738
+ "reactions": [],
1739
+ "permalink": "https://example-team.slack.com/archives/C01INCIDENT/p1789374000000145",
1740
+ "team": "T01EXAMPLE0"
1741
+ }
1742
+ },
1743
+ {
1744
+ "action": "upsert",
1745
+ "packageId": "slack",
1746
+ "namespace": "messages",
1747
+ "rowId": "C01RANDOM01:1787400000.000151",
1748
+ "value": {
1749
+ "channel": "C01RANDOM01",
1750
+ "ts": "1787400000.000151",
1751
+ "type": "message",
1752
+ "user": "U01PRIYA003",
1753
+ "text": "Anyone have a good lunch spot recommendation near the office?",
1754
+ "reactions": [],
1755
+ "permalink": "https://example-team.slack.com/archives/C01RANDOM01/p1787400000000151",
1756
+ "team": "T01EXAMPLE0"
1757
+ }
1758
+ },
1759
+ {
1760
+ "action": "upsert",
1761
+ "packageId": "slack",
1762
+ "namespace": "messages",
1763
+ "rowId": "C01RANDOM01:1787400300.000152",
1764
+ "value": {
1765
+ "channel": "C01RANDOM01",
1766
+ "ts": "1787400300.000152",
1767
+ "type": "message",
1768
+ "user": "U01MIRA0006",
1769
+ "text": ":tada:",
1770
+ "reactions": [],
1771
+ "permalink": "https://example-team.slack.com/archives/C01RANDOM01/p1787400300000152",
1772
+ "team": "T01EXAMPLE0"
1773
+ }
1774
+ },
1775
+ {
1776
+ "action": "upsert",
1777
+ "packageId": "slack",
1778
+ "namespace": "messages",
1779
+ "rowId": "C01RANDOM01:1788629400.000153",
1780
+ "value": {
1781
+ "channel": "C01RANDOM01",
1782
+ "ts": "1788629400.000153",
1783
+ "type": "message",
1784
+ "user": "U01SAM00002",
1785
+ "text": "<@U01DANA0001> the team photo from the offsite is in the shared album!",
1786
+ "reactions": [],
1787
+ "permalink": "https://example-team.slack.com/archives/C01RANDOM01/p1788629400000153",
1788
+ "team": "T01EXAMPLE0"
1789
+ }
1790
+ },
1791
+ {
1792
+ "action": "upsert",
1793
+ "packageId": "slack",
1794
+ "namespace": "messages",
1795
+ "rowId": "C01RANDOM01:1789204500.000154",
1796
+ "value": {
1797
+ "channel": "C01RANDOM01",
1798
+ "ts": "1789204500.000154",
1799
+ "type": "message",
1800
+ "user": "U01DANA0001",
1801
+ "text": "Friday reminder: submit your expense reports by end of day.",
1802
+ "reactions": [],
1803
+ "permalink": "https://example-team.slack.com/archives/C01RANDOM01/p1789204500000154",
1804
+ "team": "T01EXAMPLE0"
1805
+ }
1806
+ },
1807
+ {
1808
+ "action": "upsert",
1809
+ "packageId": "slack",
1810
+ "namespace": "messages",
1811
+ "rowId": "C01LAUNCHQ3:1787306400.000161",
1812
+ "value": {
1813
+ "channel": "C01LAUNCHQ3",
1814
+ "ts": "1787306400.000161",
1815
+ "type": "message",
1816
+ "user": "U01MIRA0006",
1817
+ "text": "Q3 launch retrospective notes are in the doc. Thanks everyone!",
1818
+ "reactions": [],
1819
+ "permalink": "https://example-team.slack.com/archives/C01LAUNCHQ3/p1787306400000161",
1820
+ "team": "T01EXAMPLE0"
1821
+ }
1822
+ },
1823
+ {
1824
+ "action": "upsert",
1825
+ "packageId": "slack",
1826
+ "namespace": "messages",
1827
+ "rowId": "C01LAUNCHQ3:1787308200.000162",
1828
+ "value": {
1829
+ "channel": "C01LAUNCHQ3",
1830
+ "ts": "1787308200.000162",
1831
+ "type": "message",
1832
+ "user": "U01DANA0001",
1833
+ "text": "Archiving this channel now that the launch is done.",
1834
+ "reactions": [],
1835
+ "permalink": "https://example-team.slack.com/archives/C01LAUNCHQ3/p1787308200000162",
1836
+ "team": "T01EXAMPLE0"
1837
+ }
1838
+ },
1839
+ {
1840
+ "action": "upsert",
1841
+ "packageId": "slack",
1842
+ "namespace": "messages",
1843
+ "rowId": "C01DESIGN01:1788357600.000171",
1844
+ "value": {
1845
+ "channel": "C01DESIGN01",
1846
+ "ts": "1788357600.000171",
1847
+ "type": "message",
1848
+ "user": "U01MIRA0006",
1849
+ "text": "New onboarding flow mockups are ready for feedback.",
1850
+ "reactions": [],
1851
+ "permalink": "https://example-team.slack.com/archives/C01DESIGN01/p1788357600000171",
1852
+ "team": "T01EXAMPLE0"
1853
+ }
1854
+ },
1855
+ {
1856
+ "action": "upsert",
1857
+ "packageId": "slack",
1858
+ "namespace": "messages",
1859
+ "rowId": "C01DESIGN01:1788427200.000172",
1860
+ "value": {
1861
+ "channel": "C01DESIGN01",
1862
+ "ts": "1788427200.000172",
1863
+ "type": "message",
1864
+ "user": "U01SAM00002",
1865
+ "text": "Looks great — the empty state copy could be shorter.",
1866
+ "reactions": [],
1867
+ "permalink": "https://example-team.slack.com/archives/C01DESIGN01/p1788427200000172",
1868
+ "team": "T01EXAMPLE0"
1869
+ }
1870
+ },
1871
+ {
1872
+ "action": "upsert",
1873
+ "packageId": "slack",
1874
+ "namespace": "messages",
1875
+ "rowId": "C01LEADERS1:1788854400.000181",
1876
+ "value": {
1877
+ "channel": "C01LEADERS1",
1878
+ "ts": "1788854400.000181",
1879
+ "type": "message",
1880
+ "user": "U01SAM00002",
1881
+ "text": "Hiring plan for Q4 draft is ready.",
1882
+ "reactions": [],
1883
+ "permalink": "https://example-team.slack.com/archives/C01LEADERS1/p1788854400000181",
1884
+ "team": "T01EXAMPLE0"
1885
+ }
1886
+ },
1887
+ {
1888
+ "action": "upsert",
1889
+ "packageId": "slack",
1890
+ "namespace": "messages",
1891
+ "rowId": "C01LEADERS1:1788856200.000182",
1892
+ "value": {
1893
+ "channel": "C01LEADERS1",
1894
+ "ts": "1788856200.000182",
1895
+ "type": "message",
1896
+ "user": "U01MIRA0006",
1897
+ "text": "Reviewed. Let's discuss on Wednesday.",
1898
+ "reactions": [],
1899
+ "permalink": "https://example-team.slack.com/archives/C01LEADERS1/p1788856200000182",
1900
+ "team": "T01EXAMPLE0"
1901
+ }
1902
+ },
1903
+ {
1904
+ "action": "upsert",
1905
+ "packageId": "slack",
1906
+ "namespace": "messages",
1907
+ "rowId": "D01DANASAM1:1789056000.000191",
1908
+ "value": {
1909
+ "channel": "D01DANASAM1",
1910
+ "ts": "1789056000.000191",
1911
+ "type": "message",
1912
+ "user": "U01SAM00002",
1913
+ "text": "Do you have five minutes to talk about the on-call rota?",
1914
+ "reactions": [],
1915
+ "permalink": "https://example-team.slack.com/archives/D01DANASAM1/p1789056000000191",
1916
+ "team": "T01EXAMPLE0"
1917
+ }
1918
+ },
1919
+ {
1920
+ "action": "upsert",
1921
+ "packageId": "slack",
1922
+ "namespace": "messages",
1923
+ "rowId": "D01DANASAM1:1789056120.000192",
1924
+ "value": {
1925
+ "channel": "D01DANASAM1",
1926
+ "ts": "1789056120.000192",
1927
+ "type": "message",
1928
+ "user": "U01DANA0001",
1929
+ "text": "Sure, calling you now.",
1930
+ "reactions": [],
1931
+ "permalink": "https://example-team.slack.com/archives/D01DANASAM1/p1789056120000192",
1932
+ "team": "T01EXAMPLE0"
1933
+ }
1934
+ },
1935
+ {
1936
+ "action": "upsert",
1937
+ "packageId": "slack",
1938
+ "namespace": "messages",
1939
+ "rowId": "D01DANASAM1:1789058400.000193",
1940
+ "value": {
1941
+ "channel": "D01DANASAM1",
1942
+ "ts": "1789058400.000193",
1943
+ "type": "message",
1944
+ "user": "U01SAM00002",
1945
+ "text": "Thanks — updated the rota sheet.",
1946
+ "reactions": [],
1947
+ "permalink": "https://example-team.slack.com/archives/D01DANASAM1/p1789058400000193",
1948
+ "team": "T01EXAMPLE0"
1949
+ }
1950
+ },
1951
+ {
1952
+ "action": "upsert",
1953
+ "packageId": "slack",
1954
+ "namespace": "messages",
1955
+ "rowId": "C01MPDM0001:1789128000.000196",
1956
+ "value": {
1957
+ "channel": "C01MPDM0001",
1958
+ "ts": "1789128000.000196",
1959
+ "type": "message",
1960
+ "user": "U01MIRA0006",
1961
+ "text": "Lunch on Friday to celebrate the migration?",
1962
+ "reactions": [],
1963
+ "permalink": "https://example-team.slack.com/archives/C01MPDM0001/p1789128000000196",
1964
+ "team": "T01EXAMPLE0"
1965
+ }
1966
+ },
1967
+ {
1968
+ "action": "upsert",
1969
+ "packageId": "slack",
1970
+ "namespace": "messages",
1971
+ "rowId": "C01MPDM0001:1789128180.000197",
1972
+ "value": {
1973
+ "channel": "C01MPDM0001",
1974
+ "ts": "1789128180.000197",
1975
+ "type": "message",
1976
+ "user": "U01DANA0001",
1977
+ "text": "Count me in.",
1978
+ "reactions": [],
1979
+ "permalink": "https://example-team.slack.com/archives/C01MPDM0001/p1789128180000197",
1980
+ "team": "T01EXAMPLE0"
1981
+ }
1982
+ },
1983
+ {
1984
+ "action": "upsert",
1985
+ "packageId": "slack",
1986
+ "namespace": "pins",
1987
+ "rowId": "C01GENERAL1:1787216400.000101",
1988
+ "value": {
1989
+ "channel": "C01GENERAL1",
1990
+ "message_ts": "1787216400.000101",
1991
+ "created": 1787216700,
1992
+ "created_by": "U01DANA0001"
1993
+ }
1994
+ },
1995
+ {
1996
+ "action": "upsert",
1997
+ "packageId": "slack",
1998
+ "namespace": "pins",
1999
+ "rowId": "C01INCIDENT:1788166800.000144",
2000
+ "value": {
2001
+ "channel": "C01INCIDENT",
2002
+ "message_ts": "1788166800.000144",
2003
+ "created": 1788166920,
2004
+ "created_by": "U01SAM00002"
2005
+ }
2006
+ }
2007
+ ]
2008
+ }