debugbundle 2.0.0 → 2.1.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +133 -0
  3. data/lib/debugbundle/acknowledgement.rb +6 -2
  4. data/lib/debugbundle/before_send.rb +58 -30
  5. data/lib/debugbundle/bounded_http_response.rb +24 -0
  6. data/lib/debugbundle/canonical_event_schema.rb +137 -0
  7. data/lib/debugbundle/client.rb +55 -75
  8. data/lib/debugbundle/client_event_support.rb +11 -12
  9. data/lib/debugbundle/client_evidence_support.rb +169 -0
  10. data/lib/debugbundle/client_exception_support.rb +54 -0
  11. data/lib/debugbundle/client_process_support.rb +5 -12
  12. data/lib/debugbundle/client_queue_support.rb +59 -4
  13. data/lib/debugbundle/config.rb +15 -2
  14. data/lib/debugbundle/diagnostic_budget.rb +155 -0
  15. data/lib/debugbundle/event-envelope.schema.json +4904 -0
  16. data/lib/debugbundle/event_batch.rb +48 -0
  17. data/lib/debugbundle/evidence_delivery.rb +50 -0
  18. data/lib/debugbundle/evidence_graph.rb +73 -0
  19. data/lib/debugbundle/evidence_json.rb +55 -0
  20. data/lib/debugbundle/evidence_resources.rb +60 -0
  21. data/lib/debugbundle/evidence_value.rb +107 -0
  22. data/lib/debugbundle/evidence_wire.rb +193 -0
  23. data/lib/debugbundle/exception_evidence.rb +179 -0
  24. data/lib/debugbundle/framework_operation.rb +13 -0
  25. data/lib/debugbundle/operation_context.rb +90 -0
  26. data/lib/debugbundle/rack/middleware.rb +24 -21
  27. data/lib/debugbundle/rack/relay_middleware.rb +4 -1
  28. data/lib/debugbundle/rails/railtie.rb +4 -1
  29. data/lib/debugbundle/rails/relay_endpoint.rb +2 -1
  30. data/lib/debugbundle/relay/forwarder.rb +83 -0
  31. data/lib/debugbundle/relay/handler.rb +83 -19
  32. data/lib/debugbundle/remote_config.rb +5 -0
  33. data/lib/debugbundle/sidekiq/server_middleware.rb +22 -18
  34. data/lib/debugbundle/telemetry_privacy.rb +9 -1
  35. data/lib/debugbundle/transport.rb +49 -19
  36. data/lib/debugbundle/version.rb +1 -1
  37. data/lib/debugbundle.rb +11 -1
  38. metadata +19 -2
@@ -0,0 +1,4904 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "anyOf": [
4
+ {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "string",
9
+ "minLength": 1
10
+ },
11
+ "event_id": {
12
+ "type": "string",
13
+ "format": "uuid"
14
+ },
15
+ "event_type": {
16
+ "type": "string",
17
+ "const": "diagnostic_context"
18
+ },
19
+ "project_token": {
20
+ "type": "string",
21
+ "minLength": 1
22
+ },
23
+ "project_id": {
24
+ "anyOf": [
25
+ {
26
+ "type": "string",
27
+ "format": "uuid"
28
+ },
29
+ {
30
+ "type": "null"
31
+ }
32
+ ]
33
+ },
34
+ "sdk_name": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "sdk_version": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ },
42
+ "service": {
43
+ "type": "object",
44
+ "properties": {
45
+ "name": {
46
+ "type": "string",
47
+ "minLength": 1
48
+ },
49
+ "runtime": {
50
+ "anyOf": [
51
+ {
52
+ "type": "string",
53
+ "minLength": 1
54
+ },
55
+ {
56
+ "type": "null"
57
+ }
58
+ ]
59
+ },
60
+ "framework": {
61
+ "anyOf": [
62
+ {
63
+ "type": "string",
64
+ "minLength": 1
65
+ },
66
+ {
67
+ "type": "null"
68
+ }
69
+ ]
70
+ },
71
+ "environment": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ }
75
+ },
76
+ "required": [
77
+ "name",
78
+ "environment"
79
+ ],
80
+ "additionalProperties": false
81
+ },
82
+ "occurred_at": {
83
+ "type": "string",
84
+ "format": "date-time"
85
+ },
86
+ "correlation": {
87
+ "type": "object",
88
+ "properties": {
89
+ "request_id": {
90
+ "type": [
91
+ "string",
92
+ "null"
93
+ ]
94
+ },
95
+ "trace_id": {
96
+ "type": [
97
+ "string",
98
+ "null"
99
+ ]
100
+ },
101
+ "session_id": {
102
+ "type": [
103
+ "string",
104
+ "null"
105
+ ]
106
+ },
107
+ "user_id_hash": {
108
+ "type": [
109
+ "string",
110
+ "null"
111
+ ]
112
+ }
113
+ },
114
+ "additionalProperties": false
115
+ },
116
+ "context": {
117
+ "type": "object",
118
+ "additionalProperties": {}
119
+ },
120
+ "payload": {
121
+ "anyOf": [
122
+ {
123
+ "type": "object",
124
+ "properties": {
125
+ "version": {
126
+ "type": "number",
127
+ "const": 1
128
+ },
129
+ "kind": {
130
+ "type": "string",
131
+ "const": "recovery"
132
+ },
133
+ "failure_ref": {
134
+ "type": "string",
135
+ "format": "uuid"
136
+ },
137
+ "scope": {
138
+ "anyOf": [
139
+ {
140
+ "type": "object",
141
+ "properties": {
142
+ "kind": {
143
+ "type": "string",
144
+ "const": "page"
145
+ },
146
+ "page_id": {
147
+ "type": "string",
148
+ "format": "uuid"
149
+ }
150
+ },
151
+ "required": [
152
+ "kind",
153
+ "page_id"
154
+ ],
155
+ "additionalProperties": false
156
+ },
157
+ {
158
+ "type": "object",
159
+ "properties": {
160
+ "kind": {
161
+ "type": "string",
162
+ "const": "operation"
163
+ },
164
+ "operation_id": {
165
+ "type": "string",
166
+ "format": "uuid"
167
+ }
168
+ },
169
+ "required": [
170
+ "kind",
171
+ "operation_id"
172
+ ],
173
+ "additionalProperties": false
174
+ }
175
+ ]
176
+ },
177
+ "attempt_id": {
178
+ "type": "string",
179
+ "format": "uuid"
180
+ },
181
+ "state": {
182
+ "type": "string",
183
+ "enum": [
184
+ "attempt_started",
185
+ "attempt_completed",
186
+ "attempt_failed",
187
+ "recovery_observed",
188
+ "failure_persisted"
189
+ ]
190
+ },
191
+ "operation": {
192
+ "type": "string",
193
+ "maxLength": 64
194
+ },
195
+ "status_code": {
196
+ "type": "integer",
197
+ "minimum": 100,
198
+ "maximum": 599
199
+ },
200
+ "duration_ms": {
201
+ "type": "number",
202
+ "minimum": 0
203
+ }
204
+ },
205
+ "required": [
206
+ "version",
207
+ "kind",
208
+ "failure_ref",
209
+ "scope",
210
+ "attempt_id",
211
+ "state"
212
+ ],
213
+ "additionalProperties": false
214
+ },
215
+ {
216
+ "type": "object",
217
+ "properties": {
218
+ "version": {
219
+ "type": "number",
220
+ "const": 1
221
+ },
222
+ "kind": {
223
+ "type": "string",
224
+ "const": "resource_observation"
225
+ },
226
+ "failure_ref": {
227
+ "type": "string",
228
+ "format": "uuid"
229
+ },
230
+ "scope": {
231
+ "anyOf": [
232
+ {
233
+ "type": "object",
234
+ "properties": {
235
+ "kind": {
236
+ "type": "string",
237
+ "const": "page"
238
+ },
239
+ "page_id": {
240
+ "type": "string",
241
+ "format": "uuid"
242
+ }
243
+ },
244
+ "required": [
245
+ "kind",
246
+ "page_id"
247
+ ],
248
+ "additionalProperties": false
249
+ },
250
+ {
251
+ "type": "object",
252
+ "properties": {
253
+ "kind": {
254
+ "type": "string",
255
+ "const": "operation"
256
+ },
257
+ "operation_id": {
258
+ "type": "string",
259
+ "format": "uuid"
260
+ }
261
+ },
262
+ "required": [
263
+ "kind",
264
+ "operation_id"
265
+ ],
266
+ "additionalProperties": false
267
+ }
268
+ ]
269
+ },
270
+ "source_event_id": {
271
+ "type": "string",
272
+ "format": "uuid"
273
+ },
274
+ "observations": {
275
+ "type": "object",
276
+ "properties": {
277
+ "version": {
278
+ "type": "number",
279
+ "const": 1
280
+ },
281
+ "items": {
282
+ "minItems": 1,
283
+ "maxItems": 5,
284
+ "type": "array",
285
+ "items": {
286
+ "anyOf": [
287
+ {
288
+ "type": "object",
289
+ "properties": {
290
+ "kind": {
291
+ "type": "string",
292
+ "const": "timing"
293
+ },
294
+ "observed_at": {
295
+ "type": "string",
296
+ "format": "date-time"
297
+ },
298
+ "source_url": {
299
+ "anyOf": [
300
+ {
301
+ "type": "string",
302
+ "maxLength": 2048
303
+ },
304
+ {
305
+ "type": "null"
306
+ }
307
+ ]
308
+ },
309
+ "availability": {
310
+ "type": "string",
311
+ "enum": [
312
+ "observed",
313
+ "unsupported",
314
+ "no_match",
315
+ "withheld",
316
+ "ambiguous",
317
+ "unknown"
318
+ ]
319
+ },
320
+ "response_status": {
321
+ "anyOf": [
322
+ {
323
+ "type": "integer",
324
+ "minimum": 100,
325
+ "maximum": 599
326
+ },
327
+ {
328
+ "type": "null"
329
+ }
330
+ ]
331
+ },
332
+ "duration_ms": {
333
+ "anyOf": [
334
+ {
335
+ "type": "number",
336
+ "minimum": 0
337
+ },
338
+ {
339
+ "type": "null"
340
+ }
341
+ ]
342
+ },
343
+ "transfer_size_bytes": {
344
+ "anyOf": [
345
+ {
346
+ "type": "integer",
347
+ "minimum": 0,
348
+ "maximum": 9007199254740991
349
+ },
350
+ {
351
+ "type": "null"
352
+ }
353
+ ]
354
+ }
355
+ },
356
+ "required": [
357
+ "kind",
358
+ "observed_at",
359
+ "source_url",
360
+ "availability",
361
+ "response_status",
362
+ "duration_ms",
363
+ "transfer_size_bytes"
364
+ ],
365
+ "additionalProperties": false
366
+ },
367
+ {
368
+ "type": "object",
369
+ "properties": {
370
+ "kind": {
371
+ "type": "string",
372
+ "const": "csp"
373
+ },
374
+ "observed_at": {
375
+ "type": "string",
376
+ "format": "date-time"
377
+ },
378
+ "source_url": {
379
+ "anyOf": [
380
+ {
381
+ "type": "string",
382
+ "maxLength": 2048
383
+ },
384
+ {
385
+ "type": "null"
386
+ }
387
+ ]
388
+ },
389
+ "effective_directive": {
390
+ "type": "string",
391
+ "pattern": "^[a-z-]{1,64}$"
392
+ },
393
+ "disposition": {
394
+ "type": "string",
395
+ "enum": [
396
+ "enforce",
397
+ "report"
398
+ ]
399
+ },
400
+ "document_status_code": {
401
+ "anyOf": [
402
+ {
403
+ "type": "integer",
404
+ "minimum": 100,
405
+ "maximum": 599
406
+ },
407
+ {
408
+ "type": "null"
409
+ }
410
+ ]
411
+ }
412
+ },
413
+ "required": [
414
+ "kind",
415
+ "observed_at",
416
+ "source_url",
417
+ "effective_directive",
418
+ "disposition",
419
+ "document_status_code"
420
+ ],
421
+ "additionalProperties": false
422
+ }
423
+ ]
424
+ }
425
+ }
426
+ },
427
+ "required": [
428
+ "version",
429
+ "items"
430
+ ],
431
+ "additionalProperties": false
432
+ }
433
+ },
434
+ "required": [
435
+ "version",
436
+ "kind",
437
+ "failure_ref",
438
+ "scope",
439
+ "source_event_id",
440
+ "observations"
441
+ ],
442
+ "additionalProperties": false
443
+ }
444
+ ]
445
+ }
446
+ },
447
+ "required": [
448
+ "schema_version",
449
+ "event_id",
450
+ "event_type",
451
+ "sdk_name",
452
+ "sdk_version",
453
+ "service",
454
+ "occurred_at",
455
+ "payload"
456
+ ],
457
+ "additionalProperties": false
458
+ },
459
+ {
460
+ "type": "object",
461
+ "properties": {
462
+ "schema_version": {
463
+ "type": "string",
464
+ "minLength": 1
465
+ },
466
+ "event_id": {
467
+ "type": "string",
468
+ "format": "uuid"
469
+ },
470
+ "event_type": {
471
+ "type": "string",
472
+ "const": "backend_exception"
473
+ },
474
+ "project_token": {
475
+ "type": "string",
476
+ "minLength": 1
477
+ },
478
+ "project_id": {
479
+ "anyOf": [
480
+ {
481
+ "type": "string",
482
+ "format": "uuid"
483
+ },
484
+ {
485
+ "type": "null"
486
+ }
487
+ ]
488
+ },
489
+ "sdk_name": {
490
+ "type": "string",
491
+ "minLength": 1
492
+ },
493
+ "sdk_version": {
494
+ "type": "string",
495
+ "minLength": 1
496
+ },
497
+ "service": {
498
+ "type": "object",
499
+ "properties": {
500
+ "name": {
501
+ "type": "string",
502
+ "minLength": 1
503
+ },
504
+ "runtime": {
505
+ "anyOf": [
506
+ {
507
+ "type": "string",
508
+ "minLength": 1
509
+ },
510
+ {
511
+ "type": "null"
512
+ }
513
+ ]
514
+ },
515
+ "framework": {
516
+ "anyOf": [
517
+ {
518
+ "type": "string",
519
+ "minLength": 1
520
+ },
521
+ {
522
+ "type": "null"
523
+ }
524
+ ]
525
+ },
526
+ "environment": {
527
+ "type": "string",
528
+ "minLength": 1
529
+ }
530
+ },
531
+ "required": [
532
+ "name",
533
+ "environment"
534
+ ],
535
+ "additionalProperties": false
536
+ },
537
+ "occurred_at": {
538
+ "type": "string",
539
+ "format": "date-time"
540
+ },
541
+ "correlation": {
542
+ "type": "object",
543
+ "properties": {
544
+ "request_id": {
545
+ "type": [
546
+ "string",
547
+ "null"
548
+ ]
549
+ },
550
+ "trace_id": {
551
+ "type": [
552
+ "string",
553
+ "null"
554
+ ]
555
+ },
556
+ "session_id": {
557
+ "type": [
558
+ "string",
559
+ "null"
560
+ ]
561
+ },
562
+ "user_id_hash": {
563
+ "type": [
564
+ "string",
565
+ "null"
566
+ ]
567
+ }
568
+ },
569
+ "additionalProperties": false
570
+ },
571
+ "context": {
572
+ "type": "object",
573
+ "additionalProperties": {}
574
+ },
575
+ "payload": {
576
+ "type": "object",
577
+ "properties": {
578
+ "name": {
579
+ "type": "string",
580
+ "minLength": 1
581
+ },
582
+ "message": {
583
+ "type": "string",
584
+ "minLength": 1
585
+ },
586
+ "stack": {
587
+ "type": "string",
588
+ "minLength": 1
589
+ },
590
+ "handled": {
591
+ "type": "boolean"
592
+ },
593
+ "request": {
594
+ "type": "object",
595
+ "properties": {
596
+ "method": {
597
+ "type": "string",
598
+ "minLength": 1
599
+ },
600
+ "path": {
601
+ "type": "string",
602
+ "minLength": 1
603
+ },
604
+ "query": {
605
+ "type": "object",
606
+ "additionalProperties": {}
607
+ },
608
+ "headers": {
609
+ "type": "object",
610
+ "additionalProperties": {}
611
+ },
612
+ "body": {
613
+ "anyOf": [
614
+ {},
615
+ {
616
+ "type": "null"
617
+ }
618
+ ]
619
+ }
620
+ },
621
+ "required": [
622
+ "method",
623
+ "path",
624
+ "query",
625
+ "headers"
626
+ ],
627
+ "additionalProperties": false
628
+ },
629
+ "response": {
630
+ "type": "object",
631
+ "properties": {
632
+ "status_code": {
633
+ "type": "integer",
634
+ "minimum": 0,
635
+ "maximum": 9007199254740991
636
+ },
637
+ "headers": {
638
+ "type": "object",
639
+ "additionalProperties": {}
640
+ },
641
+ "body": {}
642
+ },
643
+ "required": [
644
+ "status_code"
645
+ ],
646
+ "additionalProperties": false
647
+ },
648
+ "runtime": {
649
+ "type": "object",
650
+ "properties": {
651
+ "version": {
652
+ "type": "string",
653
+ "minLength": 1
654
+ },
655
+ "platform": {
656
+ "anyOf": [
657
+ {
658
+ "type": "string",
659
+ "minLength": 1
660
+ },
661
+ {
662
+ "type": "null"
663
+ }
664
+ ]
665
+ },
666
+ "arch": {
667
+ "anyOf": [
668
+ {
669
+ "type": "string",
670
+ "minLength": 1
671
+ },
672
+ {
673
+ "type": "null"
674
+ }
675
+ ]
676
+ },
677
+ "pid": {
678
+ "anyOf": [
679
+ {
680
+ "type": "integer",
681
+ "minimum": 0,
682
+ "maximum": 9007199254740991
683
+ },
684
+ {
685
+ "type": "null"
686
+ }
687
+ ]
688
+ },
689
+ "cwd": {
690
+ "anyOf": [
691
+ {
692
+ "type": "string",
693
+ "minLength": 1
694
+ },
695
+ {
696
+ "type": "null"
697
+ }
698
+ ]
699
+ },
700
+ "uptime_sec": {
701
+ "anyOf": [
702
+ {
703
+ "type": "number",
704
+ "minimum": 0
705
+ },
706
+ {
707
+ "type": "null"
708
+ }
709
+ ]
710
+ },
711
+ "hostname": {
712
+ "anyOf": [
713
+ {
714
+ "type": "string",
715
+ "minLength": 1
716
+ },
717
+ {
718
+ "type": "null"
719
+ }
720
+ ]
721
+ },
722
+ "thread_id": {
723
+ "type": [
724
+ "string",
725
+ "number",
726
+ "null"
727
+ ]
728
+ },
729
+ "framework_version": {
730
+ "anyOf": [
731
+ {
732
+ "type": "string",
733
+ "minLength": 1
734
+ },
735
+ {
736
+ "type": "null"
737
+ }
738
+ ]
739
+ },
740
+ "memory": {
741
+ "anyOf": [
742
+ {
743
+ "type": "object",
744
+ "properties": {
745
+ "rss": {
746
+ "anyOf": [
747
+ {
748
+ "type": "number",
749
+ "minimum": 0
750
+ },
751
+ {
752
+ "type": "null"
753
+ }
754
+ ]
755
+ },
756
+ "heap_total": {
757
+ "anyOf": [
758
+ {
759
+ "type": "number",
760
+ "minimum": 0
761
+ },
762
+ {
763
+ "type": "null"
764
+ }
765
+ ]
766
+ },
767
+ "heap_used": {
768
+ "anyOf": [
769
+ {
770
+ "type": "number",
771
+ "minimum": 0
772
+ },
773
+ {
774
+ "type": "null"
775
+ }
776
+ ]
777
+ },
778
+ "external": {
779
+ "anyOf": [
780
+ {
781
+ "type": "number",
782
+ "minimum": 0
783
+ },
784
+ {
785
+ "type": "null"
786
+ }
787
+ ]
788
+ },
789
+ "peak": {
790
+ "anyOf": [
791
+ {
792
+ "type": "number",
793
+ "minimum": 0
794
+ },
795
+ {
796
+ "type": "null"
797
+ }
798
+ ]
799
+ }
800
+ },
801
+ "required": [
802
+ "rss",
803
+ "heap_total",
804
+ "heap_used",
805
+ "external",
806
+ "peak"
807
+ ],
808
+ "additionalProperties": false
809
+ },
810
+ {
811
+ "type": "null"
812
+ }
813
+ ]
814
+ },
815
+ "framework_extras": {
816
+ "anyOf": [
817
+ {
818
+ "type": "object",
819
+ "additionalProperties": {}
820
+ },
821
+ {
822
+ "type": "null"
823
+ }
824
+ ]
825
+ }
826
+ },
827
+ "required": [
828
+ "version"
829
+ ],
830
+ "additionalProperties": false
831
+ },
832
+ "probe_data": {
833
+ "type": "object",
834
+ "properties": {
835
+ "version": {
836
+ "type": "number",
837
+ "const": 1
838
+ },
839
+ "items": {
840
+ "type": "array",
841
+ "items": {
842
+ "type": "object",
843
+ "properties": {
844
+ "label": {
845
+ "type": "string",
846
+ "minLength": 1
847
+ },
848
+ "data": {
849
+ "type": "object",
850
+ "additionalProperties": {}
851
+ },
852
+ "timestamp": {
853
+ "type": "string",
854
+ "format": "date-time"
855
+ },
856
+ "activation_id": {
857
+ "anyOf": [
858
+ {
859
+ "type": "string",
860
+ "format": "uuid"
861
+ },
862
+ {
863
+ "type": "null"
864
+ }
865
+ ]
866
+ }
867
+ },
868
+ "required": [
869
+ "label",
870
+ "data",
871
+ "timestamp",
872
+ "activation_id"
873
+ ],
874
+ "additionalProperties": false
875
+ }
876
+ }
877
+ },
878
+ "required": [
879
+ "version",
880
+ "items"
881
+ ],
882
+ "additionalProperties": false
883
+ },
884
+ "exception_evidence": {
885
+ "type": "object",
886
+ "properties": {
887
+ "version": {
888
+ "type": "number",
889
+ "const": 1
890
+ },
891
+ "runtime": {
892
+ "type": "string",
893
+ "enum": [
894
+ "node",
895
+ "browser",
896
+ "python",
897
+ "php",
898
+ "jvm",
899
+ "go",
900
+ "ruby",
901
+ "dotnet",
902
+ "android",
903
+ "swift",
904
+ "react_native",
905
+ "unknown"
906
+ ]
907
+ },
908
+ "root_id": {
909
+ "type": "integer",
910
+ "minimum": 0,
911
+ "maximum": 7
912
+ },
913
+ "nodes": {
914
+ "minItems": 1,
915
+ "maxItems": 8,
916
+ "type": "array",
917
+ "items": {
918
+ "type": "object",
919
+ "properties": {
920
+ "id": {
921
+ "type": "integer",
922
+ "minimum": 0,
923
+ "maximum": 7
924
+ },
925
+ "name": {
926
+ "type": "string",
927
+ "maxLength": 256
928
+ },
929
+ "message": {
930
+ "type": "string",
931
+ "maxLength": 2048
932
+ },
933
+ "stack": {
934
+ "anyOf": [
935
+ {
936
+ "type": "string",
937
+ "maxLength": 16384
938
+ },
939
+ {
940
+ "type": "null"
941
+ }
942
+ ]
943
+ },
944
+ "trace_origin": {
945
+ "type": "string",
946
+ "enum": [
947
+ "throw",
948
+ "native_fatal",
949
+ "capture",
950
+ "runtime_reported",
951
+ "unavailable",
952
+ "unknown"
953
+ ]
954
+ },
955
+ "parsing_status": {
956
+ "type": "string",
957
+ "enum": [
958
+ "parsed",
959
+ "partial",
960
+ "unparsed",
961
+ "unavailable",
962
+ "truncated"
963
+ ]
964
+ },
965
+ "frames": {
966
+ "maxItems": 32,
967
+ "type": "array",
968
+ "items": {
969
+ "type": "object",
970
+ "properties": {
971
+ "function": {
972
+ "anyOf": [
973
+ {
974
+ "type": "string",
975
+ "maxLength": 256
976
+ },
977
+ {
978
+ "type": "null"
979
+ }
980
+ ]
981
+ },
982
+ "file": {
983
+ "anyOf": [
984
+ {
985
+ "type": "string",
986
+ "maxLength": 2048
987
+ },
988
+ {
989
+ "type": "null"
990
+ }
991
+ ]
992
+ },
993
+ "line": {
994
+ "anyOf": [
995
+ {
996
+ "type": "integer",
997
+ "exclusiveMinimum": 0,
998
+ "maximum": 9007199254740991
999
+ },
1000
+ {
1001
+ "type": "null"
1002
+ }
1003
+ ]
1004
+ },
1005
+ "column": {
1006
+ "anyOf": [
1007
+ {
1008
+ "type": "integer",
1009
+ "minimum": 0,
1010
+ "maximum": 9007199254740991
1011
+ },
1012
+ {
1013
+ "type": "null"
1014
+ }
1015
+ ]
1016
+ },
1017
+ "classification": {
1018
+ "type": "string",
1019
+ "enum": [
1020
+ "application",
1021
+ "framework",
1022
+ "sdk",
1023
+ "unknown"
1024
+ ]
1025
+ }
1026
+ },
1027
+ "required": [
1028
+ "function",
1029
+ "file",
1030
+ "line",
1031
+ "column",
1032
+ "classification"
1033
+ ],
1034
+ "additionalProperties": false
1035
+ }
1036
+ },
1037
+ "relationships": {
1038
+ "maxItems": 5,
1039
+ "type": "array",
1040
+ "items": {
1041
+ "type": "object",
1042
+ "properties": {
1043
+ "kind": {
1044
+ "type": "string",
1045
+ "enum": [
1046
+ "cause",
1047
+ "context",
1048
+ "aggregate",
1049
+ "suppressed"
1050
+ ]
1051
+ },
1052
+ "target_id": {
1053
+ "type": "integer",
1054
+ "minimum": 0,
1055
+ "maximum": 7
1056
+ }
1057
+ },
1058
+ "required": [
1059
+ "kind",
1060
+ "target_id"
1061
+ ],
1062
+ "additionalProperties": false
1063
+ }
1064
+ }
1065
+ },
1066
+ "required": [
1067
+ "id",
1068
+ "name",
1069
+ "message",
1070
+ "stack",
1071
+ "trace_origin",
1072
+ "parsing_status",
1073
+ "frames",
1074
+ "relationships"
1075
+ ],
1076
+ "additionalProperties": false
1077
+ }
1078
+ },
1079
+ "truncated": {
1080
+ "type": "boolean"
1081
+ },
1082
+ "unavailable_reason": {
1083
+ "anyOf": [
1084
+ {
1085
+ "type": "string",
1086
+ "enum": [
1087
+ "unknown",
1088
+ "unsupported",
1089
+ "unsafe",
1090
+ "budget_exceeded"
1091
+ ]
1092
+ },
1093
+ {
1094
+ "type": "null"
1095
+ }
1096
+ ]
1097
+ }
1098
+ },
1099
+ "required": [
1100
+ "version",
1101
+ "runtime",
1102
+ "root_id",
1103
+ "nodes",
1104
+ "truncated",
1105
+ "unavailable_reason"
1106
+ ],
1107
+ "additionalProperties": false
1108
+ },
1109
+ "execution": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "version": {
1113
+ "type": "number",
1114
+ "const": 1
1115
+ },
1116
+ "kind": {
1117
+ "type": "string",
1118
+ "enum": [
1119
+ "request",
1120
+ "command",
1121
+ "job",
1122
+ "unknown"
1123
+ ]
1124
+ },
1125
+ "name": {
1126
+ "anyOf": [
1127
+ {
1128
+ "type": "string",
1129
+ "maxLength": 128
1130
+ },
1131
+ {
1132
+ "type": "null"
1133
+ }
1134
+ ]
1135
+ },
1136
+ "elapsed_ms": {
1137
+ "anyOf": [
1138
+ {
1139
+ "type": "number",
1140
+ "minimum": 0
1141
+ },
1142
+ {
1143
+ "type": "null"
1144
+ }
1145
+ ]
1146
+ },
1147
+ "limit_ms": {
1148
+ "anyOf": [
1149
+ {
1150
+ "type": "number",
1151
+ "minimum": 0
1152
+ },
1153
+ {
1154
+ "type": "null"
1155
+ }
1156
+ ]
1157
+ }
1158
+ },
1159
+ "required": [
1160
+ "version",
1161
+ "kind",
1162
+ "name",
1163
+ "elapsed_ms",
1164
+ "limit_ms"
1165
+ ],
1166
+ "additionalProperties": false
1167
+ }
1168
+ },
1169
+ "required": [
1170
+ "name",
1171
+ "message",
1172
+ "stack",
1173
+ "handled",
1174
+ "request",
1175
+ "response",
1176
+ "runtime"
1177
+ ],
1178
+ "additionalProperties": false
1179
+ }
1180
+ },
1181
+ "required": [
1182
+ "schema_version",
1183
+ "event_id",
1184
+ "event_type",
1185
+ "sdk_name",
1186
+ "sdk_version",
1187
+ "service",
1188
+ "occurred_at",
1189
+ "payload"
1190
+ ],
1191
+ "additionalProperties": false
1192
+ },
1193
+ {
1194
+ "type": "object",
1195
+ "properties": {
1196
+ "schema_version": {
1197
+ "type": "string",
1198
+ "minLength": 1
1199
+ },
1200
+ "event_id": {
1201
+ "type": "string",
1202
+ "format": "uuid"
1203
+ },
1204
+ "event_type": {
1205
+ "type": "string",
1206
+ "const": "request_event"
1207
+ },
1208
+ "project_token": {
1209
+ "type": "string",
1210
+ "minLength": 1
1211
+ },
1212
+ "project_id": {
1213
+ "anyOf": [
1214
+ {
1215
+ "type": "string",
1216
+ "format": "uuid"
1217
+ },
1218
+ {
1219
+ "type": "null"
1220
+ }
1221
+ ]
1222
+ },
1223
+ "sdk_name": {
1224
+ "type": "string",
1225
+ "minLength": 1
1226
+ },
1227
+ "sdk_version": {
1228
+ "type": "string",
1229
+ "minLength": 1
1230
+ },
1231
+ "service": {
1232
+ "type": "object",
1233
+ "properties": {
1234
+ "name": {
1235
+ "type": "string",
1236
+ "minLength": 1
1237
+ },
1238
+ "runtime": {
1239
+ "anyOf": [
1240
+ {
1241
+ "type": "string",
1242
+ "minLength": 1
1243
+ },
1244
+ {
1245
+ "type": "null"
1246
+ }
1247
+ ]
1248
+ },
1249
+ "framework": {
1250
+ "anyOf": [
1251
+ {
1252
+ "type": "string",
1253
+ "minLength": 1
1254
+ },
1255
+ {
1256
+ "type": "null"
1257
+ }
1258
+ ]
1259
+ },
1260
+ "environment": {
1261
+ "type": "string",
1262
+ "minLength": 1
1263
+ }
1264
+ },
1265
+ "required": [
1266
+ "name",
1267
+ "environment"
1268
+ ],
1269
+ "additionalProperties": false
1270
+ },
1271
+ "occurred_at": {
1272
+ "type": "string",
1273
+ "format": "date-time"
1274
+ },
1275
+ "correlation": {
1276
+ "type": "object",
1277
+ "properties": {
1278
+ "request_id": {
1279
+ "type": [
1280
+ "string",
1281
+ "null"
1282
+ ]
1283
+ },
1284
+ "trace_id": {
1285
+ "type": [
1286
+ "string",
1287
+ "null"
1288
+ ]
1289
+ },
1290
+ "session_id": {
1291
+ "type": [
1292
+ "string",
1293
+ "null"
1294
+ ]
1295
+ },
1296
+ "user_id_hash": {
1297
+ "type": [
1298
+ "string",
1299
+ "null"
1300
+ ]
1301
+ }
1302
+ },
1303
+ "additionalProperties": false
1304
+ },
1305
+ "context": {
1306
+ "type": "object",
1307
+ "additionalProperties": {}
1308
+ },
1309
+ "payload": {
1310
+ "anyOf": [
1311
+ {
1312
+ "type": "object",
1313
+ "properties": {
1314
+ "method": {
1315
+ "type": "string",
1316
+ "minLength": 1
1317
+ },
1318
+ "path": {
1319
+ "type": "string",
1320
+ "minLength": 1
1321
+ },
1322
+ "query": {
1323
+ "type": "object",
1324
+ "additionalProperties": {}
1325
+ },
1326
+ "headers": {
1327
+ "type": "object",
1328
+ "additionalProperties": {}
1329
+ },
1330
+ "body": {
1331
+ "anyOf": [
1332
+ {},
1333
+ {
1334
+ "type": "null"
1335
+ }
1336
+ ]
1337
+ },
1338
+ "response_status": {
1339
+ "type": "integer",
1340
+ "minimum": 0,
1341
+ "maximum": 9007199254740991
1342
+ },
1343
+ "duration_ms": {
1344
+ "type": "number",
1345
+ "minimum": 0
1346
+ },
1347
+ "route_template": {
1348
+ "anyOf": [
1349
+ {
1350
+ "type": "string",
1351
+ "minLength": 1
1352
+ },
1353
+ {
1354
+ "type": "null"
1355
+ }
1356
+ ]
1357
+ },
1358
+ "response_headers": {
1359
+ "type": "object",
1360
+ "additionalProperties": {}
1361
+ },
1362
+ "response_body": {}
1363
+ },
1364
+ "required": [
1365
+ "method",
1366
+ "path",
1367
+ "query",
1368
+ "headers",
1369
+ "response_status",
1370
+ "duration_ms"
1371
+ ],
1372
+ "additionalProperties": false
1373
+ },
1374
+ {
1375
+ "type": "object",
1376
+ "properties": {
1377
+ "method": {
1378
+ "type": "string",
1379
+ "minLength": 1
1380
+ },
1381
+ "path": {
1382
+ "type": "string",
1383
+ "minLength": 1
1384
+ },
1385
+ "query": {
1386
+ "type": "object",
1387
+ "additionalProperties": {}
1388
+ },
1389
+ "headers": {
1390
+ "type": "object",
1391
+ "additionalProperties": {}
1392
+ },
1393
+ "body": {
1394
+ "anyOf": [
1395
+ {},
1396
+ {
1397
+ "type": "null"
1398
+ }
1399
+ ]
1400
+ },
1401
+ "response_status": {
1402
+ "type": "integer",
1403
+ "minimum": 0,
1404
+ "maximum": 9007199254740991
1405
+ },
1406
+ "duration_ms": {
1407
+ "type": "number",
1408
+ "minimum": 0
1409
+ },
1410
+ "route_template": {
1411
+ "anyOf": [
1412
+ {
1413
+ "type": "string",
1414
+ "minLength": 1
1415
+ },
1416
+ {
1417
+ "type": "null"
1418
+ }
1419
+ ]
1420
+ },
1421
+ "response_headers": {
1422
+ "type": "object",
1423
+ "additionalProperties": {}
1424
+ },
1425
+ "response_body": {},
1426
+ "device": {
1427
+ "type": "object",
1428
+ "properties": {
1429
+ "user_agent": {
1430
+ "type": [
1431
+ "string",
1432
+ "null"
1433
+ ]
1434
+ },
1435
+ "os": {
1436
+ "type": "object",
1437
+ "properties": {
1438
+ "name": {
1439
+ "type": [
1440
+ "string",
1441
+ "null"
1442
+ ]
1443
+ },
1444
+ "version": {
1445
+ "type": [
1446
+ "string",
1447
+ "null"
1448
+ ]
1449
+ }
1450
+ },
1451
+ "required": [
1452
+ "name",
1453
+ "version"
1454
+ ],
1455
+ "additionalProperties": false
1456
+ },
1457
+ "device_type": {
1458
+ "type": "string",
1459
+ "enum": [
1460
+ "desktop",
1461
+ "mobile",
1462
+ "tablet",
1463
+ "unknown"
1464
+ ]
1465
+ },
1466
+ "screen": {
1467
+ "type": "object",
1468
+ "properties": {
1469
+ "width": {
1470
+ "type": "integer",
1471
+ "minimum": 0,
1472
+ "maximum": 9007199254740991
1473
+ },
1474
+ "height": {
1475
+ "type": "integer",
1476
+ "minimum": 0,
1477
+ "maximum": 9007199254740991
1478
+ }
1479
+ },
1480
+ "required": [
1481
+ "width",
1482
+ "height"
1483
+ ],
1484
+ "additionalProperties": false
1485
+ },
1486
+ "viewport": {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "width": {
1490
+ "type": "integer",
1491
+ "minimum": 0,
1492
+ "maximum": 9007199254740991
1493
+ },
1494
+ "height": {
1495
+ "type": "integer",
1496
+ "minimum": 0,
1497
+ "maximum": 9007199254740991
1498
+ }
1499
+ },
1500
+ "required": [
1501
+ "width",
1502
+ "height"
1503
+ ],
1504
+ "additionalProperties": false
1505
+ },
1506
+ "device_pixel_ratio": {
1507
+ "anyOf": [
1508
+ {
1509
+ "type": "number",
1510
+ "exclusiveMinimum": 0
1511
+ },
1512
+ {
1513
+ "type": "null"
1514
+ }
1515
+ ]
1516
+ },
1517
+ "touch_capable": {
1518
+ "type": [
1519
+ "boolean",
1520
+ "null"
1521
+ ]
1522
+ },
1523
+ "language": {
1524
+ "type": [
1525
+ "string",
1526
+ "null"
1527
+ ]
1528
+ },
1529
+ "connection_type": {
1530
+ "type": [
1531
+ "string",
1532
+ "null"
1533
+ ]
1534
+ },
1535
+ "color_scheme_preference": {
1536
+ "anyOf": [
1537
+ {
1538
+ "type": "string",
1539
+ "enum": [
1540
+ "light",
1541
+ "dark",
1542
+ "no-preference"
1543
+ ]
1544
+ },
1545
+ {
1546
+ "type": "null"
1547
+ }
1548
+ ]
1549
+ },
1550
+ "app_version": {
1551
+ "type": [
1552
+ "string",
1553
+ "null"
1554
+ ]
1555
+ },
1556
+ "build_number": {
1557
+ "type": [
1558
+ "string",
1559
+ "null"
1560
+ ]
1561
+ },
1562
+ "release_channel": {
1563
+ "type": [
1564
+ "string",
1565
+ "null"
1566
+ ]
1567
+ },
1568
+ "api_level": {
1569
+ "anyOf": [
1570
+ {
1571
+ "type": "integer",
1572
+ "minimum": 0,
1573
+ "maximum": 9007199254740991
1574
+ },
1575
+ {
1576
+ "type": "null"
1577
+ }
1578
+ ]
1579
+ },
1580
+ "manufacturer": {
1581
+ "type": [
1582
+ "string",
1583
+ "null"
1584
+ ]
1585
+ },
1586
+ "model": {
1587
+ "type": [
1588
+ "string",
1589
+ "null"
1590
+ ]
1591
+ },
1592
+ "timezone": {
1593
+ "type": [
1594
+ "string",
1595
+ "null"
1596
+ ]
1597
+ },
1598
+ "battery_level": {
1599
+ "anyOf": [
1600
+ {
1601
+ "type": "number",
1602
+ "minimum": 0
1603
+ },
1604
+ {
1605
+ "type": "null"
1606
+ }
1607
+ ]
1608
+ },
1609
+ "battery_charging": {
1610
+ "type": [
1611
+ "boolean",
1612
+ "null"
1613
+ ]
1614
+ },
1615
+ "free_disk_bytes": {
1616
+ "anyOf": [
1617
+ {
1618
+ "type": "integer",
1619
+ "minimum": 0,
1620
+ "maximum": 9007199254740991
1621
+ },
1622
+ {
1623
+ "type": "null"
1624
+ }
1625
+ ]
1626
+ },
1627
+ "free_memory_bytes": {
1628
+ "anyOf": [
1629
+ {
1630
+ "type": "integer",
1631
+ "minimum": 0,
1632
+ "maximum": 9007199254740991
1633
+ },
1634
+ {
1635
+ "type": "null"
1636
+ }
1637
+ ]
1638
+ },
1639
+ "jailbroken": {
1640
+ "type": [
1641
+ "boolean",
1642
+ "null"
1643
+ ]
1644
+ }
1645
+ },
1646
+ "required": [
1647
+ "user_agent",
1648
+ "os",
1649
+ "device_type",
1650
+ "screen",
1651
+ "viewport",
1652
+ "device_pixel_ratio",
1653
+ "touch_capable",
1654
+ "language",
1655
+ "connection_type",
1656
+ "color_scheme_preference"
1657
+ ],
1658
+ "additionalProperties": false
1659
+ }
1660
+ },
1661
+ "required": [
1662
+ "method",
1663
+ "path",
1664
+ "query",
1665
+ "headers",
1666
+ "response_status",
1667
+ "duration_ms",
1668
+ "device"
1669
+ ],
1670
+ "additionalProperties": false
1671
+ }
1672
+ ]
1673
+ }
1674
+ },
1675
+ "required": [
1676
+ "schema_version",
1677
+ "event_id",
1678
+ "event_type",
1679
+ "sdk_name",
1680
+ "sdk_version",
1681
+ "service",
1682
+ "occurred_at",
1683
+ "payload"
1684
+ ],
1685
+ "additionalProperties": false
1686
+ },
1687
+ {
1688
+ "type": "object",
1689
+ "properties": {
1690
+ "schema_version": {
1691
+ "type": "string",
1692
+ "minLength": 1
1693
+ },
1694
+ "event_id": {
1695
+ "type": "string",
1696
+ "format": "uuid"
1697
+ },
1698
+ "event_type": {
1699
+ "type": "string",
1700
+ "const": "log_event"
1701
+ },
1702
+ "project_token": {
1703
+ "type": "string",
1704
+ "minLength": 1
1705
+ },
1706
+ "project_id": {
1707
+ "anyOf": [
1708
+ {
1709
+ "type": "string",
1710
+ "format": "uuid"
1711
+ },
1712
+ {
1713
+ "type": "null"
1714
+ }
1715
+ ]
1716
+ },
1717
+ "sdk_name": {
1718
+ "type": "string",
1719
+ "minLength": 1
1720
+ },
1721
+ "sdk_version": {
1722
+ "type": "string",
1723
+ "minLength": 1
1724
+ },
1725
+ "service": {
1726
+ "type": "object",
1727
+ "properties": {
1728
+ "name": {
1729
+ "type": "string",
1730
+ "minLength": 1
1731
+ },
1732
+ "runtime": {
1733
+ "anyOf": [
1734
+ {
1735
+ "type": "string",
1736
+ "minLength": 1
1737
+ },
1738
+ {
1739
+ "type": "null"
1740
+ }
1741
+ ]
1742
+ },
1743
+ "framework": {
1744
+ "anyOf": [
1745
+ {
1746
+ "type": "string",
1747
+ "minLength": 1
1748
+ },
1749
+ {
1750
+ "type": "null"
1751
+ }
1752
+ ]
1753
+ },
1754
+ "environment": {
1755
+ "type": "string",
1756
+ "minLength": 1
1757
+ }
1758
+ },
1759
+ "required": [
1760
+ "name",
1761
+ "environment"
1762
+ ],
1763
+ "additionalProperties": false
1764
+ },
1765
+ "occurred_at": {
1766
+ "type": "string",
1767
+ "format": "date-time"
1768
+ },
1769
+ "correlation": {
1770
+ "type": "object",
1771
+ "properties": {
1772
+ "request_id": {
1773
+ "type": [
1774
+ "string",
1775
+ "null"
1776
+ ]
1777
+ },
1778
+ "trace_id": {
1779
+ "type": [
1780
+ "string",
1781
+ "null"
1782
+ ]
1783
+ },
1784
+ "session_id": {
1785
+ "type": [
1786
+ "string",
1787
+ "null"
1788
+ ]
1789
+ },
1790
+ "user_id_hash": {
1791
+ "type": [
1792
+ "string",
1793
+ "null"
1794
+ ]
1795
+ }
1796
+ },
1797
+ "additionalProperties": false
1798
+ },
1799
+ "context": {
1800
+ "type": "object",
1801
+ "additionalProperties": {}
1802
+ },
1803
+ "payload": {
1804
+ "anyOf": [
1805
+ {
1806
+ "type": "object",
1807
+ "properties": {
1808
+ "level": {
1809
+ "type": "string",
1810
+ "minLength": 1
1811
+ },
1812
+ "message": {
1813
+ "type": "string",
1814
+ "minLength": 1
1815
+ },
1816
+ "attributes": {
1817
+ "type": "object",
1818
+ "additionalProperties": {}
1819
+ }
1820
+ },
1821
+ "required": [
1822
+ "level",
1823
+ "message",
1824
+ "attributes"
1825
+ ],
1826
+ "additionalProperties": false
1827
+ },
1828
+ {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "level": {
1832
+ "type": "string",
1833
+ "minLength": 1
1834
+ },
1835
+ "message": {
1836
+ "type": "string",
1837
+ "minLength": 1
1838
+ },
1839
+ "attributes": {
1840
+ "type": "object",
1841
+ "additionalProperties": {}
1842
+ },
1843
+ "device": {
1844
+ "type": "object",
1845
+ "properties": {
1846
+ "user_agent": {
1847
+ "type": [
1848
+ "string",
1849
+ "null"
1850
+ ]
1851
+ },
1852
+ "os": {
1853
+ "type": "object",
1854
+ "properties": {
1855
+ "name": {
1856
+ "type": [
1857
+ "string",
1858
+ "null"
1859
+ ]
1860
+ },
1861
+ "version": {
1862
+ "type": [
1863
+ "string",
1864
+ "null"
1865
+ ]
1866
+ }
1867
+ },
1868
+ "required": [
1869
+ "name",
1870
+ "version"
1871
+ ],
1872
+ "additionalProperties": false
1873
+ },
1874
+ "device_type": {
1875
+ "type": "string",
1876
+ "enum": [
1877
+ "desktop",
1878
+ "mobile",
1879
+ "tablet",
1880
+ "unknown"
1881
+ ]
1882
+ },
1883
+ "screen": {
1884
+ "type": "object",
1885
+ "properties": {
1886
+ "width": {
1887
+ "type": "integer",
1888
+ "minimum": 0,
1889
+ "maximum": 9007199254740991
1890
+ },
1891
+ "height": {
1892
+ "type": "integer",
1893
+ "minimum": 0,
1894
+ "maximum": 9007199254740991
1895
+ }
1896
+ },
1897
+ "required": [
1898
+ "width",
1899
+ "height"
1900
+ ],
1901
+ "additionalProperties": false
1902
+ },
1903
+ "viewport": {
1904
+ "type": "object",
1905
+ "properties": {
1906
+ "width": {
1907
+ "type": "integer",
1908
+ "minimum": 0,
1909
+ "maximum": 9007199254740991
1910
+ },
1911
+ "height": {
1912
+ "type": "integer",
1913
+ "minimum": 0,
1914
+ "maximum": 9007199254740991
1915
+ }
1916
+ },
1917
+ "required": [
1918
+ "width",
1919
+ "height"
1920
+ ],
1921
+ "additionalProperties": false
1922
+ },
1923
+ "device_pixel_ratio": {
1924
+ "anyOf": [
1925
+ {
1926
+ "type": "number",
1927
+ "exclusiveMinimum": 0
1928
+ },
1929
+ {
1930
+ "type": "null"
1931
+ }
1932
+ ]
1933
+ },
1934
+ "touch_capable": {
1935
+ "type": [
1936
+ "boolean",
1937
+ "null"
1938
+ ]
1939
+ },
1940
+ "language": {
1941
+ "type": [
1942
+ "string",
1943
+ "null"
1944
+ ]
1945
+ },
1946
+ "connection_type": {
1947
+ "type": [
1948
+ "string",
1949
+ "null"
1950
+ ]
1951
+ },
1952
+ "color_scheme_preference": {
1953
+ "anyOf": [
1954
+ {
1955
+ "type": "string",
1956
+ "enum": [
1957
+ "light",
1958
+ "dark",
1959
+ "no-preference"
1960
+ ]
1961
+ },
1962
+ {
1963
+ "type": "null"
1964
+ }
1965
+ ]
1966
+ },
1967
+ "app_version": {
1968
+ "type": [
1969
+ "string",
1970
+ "null"
1971
+ ]
1972
+ },
1973
+ "build_number": {
1974
+ "type": [
1975
+ "string",
1976
+ "null"
1977
+ ]
1978
+ },
1979
+ "release_channel": {
1980
+ "type": [
1981
+ "string",
1982
+ "null"
1983
+ ]
1984
+ },
1985
+ "api_level": {
1986
+ "anyOf": [
1987
+ {
1988
+ "type": "integer",
1989
+ "minimum": 0,
1990
+ "maximum": 9007199254740991
1991
+ },
1992
+ {
1993
+ "type": "null"
1994
+ }
1995
+ ]
1996
+ },
1997
+ "manufacturer": {
1998
+ "type": [
1999
+ "string",
2000
+ "null"
2001
+ ]
2002
+ },
2003
+ "model": {
2004
+ "type": [
2005
+ "string",
2006
+ "null"
2007
+ ]
2008
+ },
2009
+ "timezone": {
2010
+ "type": [
2011
+ "string",
2012
+ "null"
2013
+ ]
2014
+ },
2015
+ "battery_level": {
2016
+ "anyOf": [
2017
+ {
2018
+ "type": "number",
2019
+ "minimum": 0
2020
+ },
2021
+ {
2022
+ "type": "null"
2023
+ }
2024
+ ]
2025
+ },
2026
+ "battery_charging": {
2027
+ "type": [
2028
+ "boolean",
2029
+ "null"
2030
+ ]
2031
+ },
2032
+ "free_disk_bytes": {
2033
+ "anyOf": [
2034
+ {
2035
+ "type": "integer",
2036
+ "minimum": 0,
2037
+ "maximum": 9007199254740991
2038
+ },
2039
+ {
2040
+ "type": "null"
2041
+ }
2042
+ ]
2043
+ },
2044
+ "free_memory_bytes": {
2045
+ "anyOf": [
2046
+ {
2047
+ "type": "integer",
2048
+ "minimum": 0,
2049
+ "maximum": 9007199254740991
2050
+ },
2051
+ {
2052
+ "type": "null"
2053
+ }
2054
+ ]
2055
+ },
2056
+ "jailbroken": {
2057
+ "type": [
2058
+ "boolean",
2059
+ "null"
2060
+ ]
2061
+ }
2062
+ },
2063
+ "required": [
2064
+ "user_agent",
2065
+ "os",
2066
+ "device_type",
2067
+ "screen",
2068
+ "viewport",
2069
+ "device_pixel_ratio",
2070
+ "touch_capable",
2071
+ "language",
2072
+ "connection_type",
2073
+ "color_scheme_preference"
2074
+ ],
2075
+ "additionalProperties": false
2076
+ }
2077
+ },
2078
+ "required": [
2079
+ "level",
2080
+ "message",
2081
+ "attributes",
2082
+ "device"
2083
+ ],
2084
+ "additionalProperties": false
2085
+ }
2086
+ ]
2087
+ }
2088
+ },
2089
+ "required": [
2090
+ "schema_version",
2091
+ "event_id",
2092
+ "event_type",
2093
+ "sdk_name",
2094
+ "sdk_version",
2095
+ "service",
2096
+ "occurred_at",
2097
+ "payload"
2098
+ ],
2099
+ "additionalProperties": false
2100
+ },
2101
+ {
2102
+ "type": "object",
2103
+ "properties": {
2104
+ "schema_version": {
2105
+ "type": "string",
2106
+ "minLength": 1
2107
+ },
2108
+ "event_id": {
2109
+ "type": "string",
2110
+ "format": "uuid"
2111
+ },
2112
+ "event_type": {
2113
+ "type": "string",
2114
+ "const": "frontend_breadcrumb"
2115
+ },
2116
+ "project_token": {
2117
+ "type": "string",
2118
+ "minLength": 1
2119
+ },
2120
+ "project_id": {
2121
+ "anyOf": [
2122
+ {
2123
+ "type": "string",
2124
+ "format": "uuid"
2125
+ },
2126
+ {
2127
+ "type": "null"
2128
+ }
2129
+ ]
2130
+ },
2131
+ "sdk_name": {
2132
+ "type": "string",
2133
+ "minLength": 1
2134
+ },
2135
+ "sdk_version": {
2136
+ "type": "string",
2137
+ "minLength": 1
2138
+ },
2139
+ "service": {
2140
+ "type": "object",
2141
+ "properties": {
2142
+ "name": {
2143
+ "type": "string",
2144
+ "minLength": 1
2145
+ },
2146
+ "runtime": {
2147
+ "anyOf": [
2148
+ {
2149
+ "type": "string",
2150
+ "minLength": 1
2151
+ },
2152
+ {
2153
+ "type": "null"
2154
+ }
2155
+ ]
2156
+ },
2157
+ "framework": {
2158
+ "anyOf": [
2159
+ {
2160
+ "type": "string",
2161
+ "minLength": 1
2162
+ },
2163
+ {
2164
+ "type": "null"
2165
+ }
2166
+ ]
2167
+ },
2168
+ "environment": {
2169
+ "type": "string",
2170
+ "minLength": 1
2171
+ }
2172
+ },
2173
+ "required": [
2174
+ "name",
2175
+ "environment"
2176
+ ],
2177
+ "additionalProperties": false
2178
+ },
2179
+ "occurred_at": {
2180
+ "type": "string",
2181
+ "format": "date-time"
2182
+ },
2183
+ "correlation": {
2184
+ "type": "object",
2185
+ "properties": {
2186
+ "request_id": {
2187
+ "type": [
2188
+ "string",
2189
+ "null"
2190
+ ]
2191
+ },
2192
+ "trace_id": {
2193
+ "type": [
2194
+ "string",
2195
+ "null"
2196
+ ]
2197
+ },
2198
+ "session_id": {
2199
+ "type": [
2200
+ "string",
2201
+ "null"
2202
+ ]
2203
+ },
2204
+ "user_id_hash": {
2205
+ "type": [
2206
+ "string",
2207
+ "null"
2208
+ ]
2209
+ }
2210
+ },
2211
+ "additionalProperties": false
2212
+ },
2213
+ "context": {
2214
+ "type": "object",
2215
+ "additionalProperties": {}
2216
+ },
2217
+ "payload": {
2218
+ "anyOf": [
2219
+ {
2220
+ "type": "object",
2221
+ "properties": {
2222
+ "breadcrumb_type": {
2223
+ "type": "string",
2224
+ "enum": [
2225
+ "route_change",
2226
+ "click",
2227
+ "form_submit",
2228
+ "console_log",
2229
+ "network_request"
2230
+ ]
2231
+ },
2232
+ "route": {
2233
+ "anyOf": [
2234
+ {
2235
+ "type": "string",
2236
+ "minLength": 1
2237
+ },
2238
+ {
2239
+ "type": "null"
2240
+ }
2241
+ ]
2242
+ },
2243
+ "data": {
2244
+ "type": "object",
2245
+ "additionalProperties": {}
2246
+ }
2247
+ },
2248
+ "required": [
2249
+ "breadcrumb_type",
2250
+ "data"
2251
+ ],
2252
+ "additionalProperties": false
2253
+ },
2254
+ {
2255
+ "type": "object",
2256
+ "properties": {
2257
+ "breadcrumb_type": {
2258
+ "type": "string",
2259
+ "minLength": 1
2260
+ },
2261
+ "route": {
2262
+ "anyOf": [
2263
+ {
2264
+ "type": "string",
2265
+ "minLength": 1
2266
+ },
2267
+ {
2268
+ "type": "null"
2269
+ }
2270
+ ]
2271
+ },
2272
+ "data": {
2273
+ "type": "object",
2274
+ "additionalProperties": {}
2275
+ },
2276
+ "device": {
2277
+ "type": "object",
2278
+ "properties": {
2279
+ "user_agent": {
2280
+ "type": [
2281
+ "string",
2282
+ "null"
2283
+ ]
2284
+ },
2285
+ "os": {
2286
+ "type": "object",
2287
+ "properties": {
2288
+ "name": {
2289
+ "type": [
2290
+ "string",
2291
+ "null"
2292
+ ]
2293
+ },
2294
+ "version": {
2295
+ "type": [
2296
+ "string",
2297
+ "null"
2298
+ ]
2299
+ }
2300
+ },
2301
+ "required": [
2302
+ "name",
2303
+ "version"
2304
+ ],
2305
+ "additionalProperties": false
2306
+ },
2307
+ "device_type": {
2308
+ "type": "string",
2309
+ "enum": [
2310
+ "desktop",
2311
+ "mobile",
2312
+ "tablet",
2313
+ "unknown"
2314
+ ]
2315
+ },
2316
+ "screen": {
2317
+ "type": "object",
2318
+ "properties": {
2319
+ "width": {
2320
+ "type": "integer",
2321
+ "minimum": 0,
2322
+ "maximum": 9007199254740991
2323
+ },
2324
+ "height": {
2325
+ "type": "integer",
2326
+ "minimum": 0,
2327
+ "maximum": 9007199254740991
2328
+ }
2329
+ },
2330
+ "required": [
2331
+ "width",
2332
+ "height"
2333
+ ],
2334
+ "additionalProperties": false
2335
+ },
2336
+ "viewport": {
2337
+ "type": "object",
2338
+ "properties": {
2339
+ "width": {
2340
+ "type": "integer",
2341
+ "minimum": 0,
2342
+ "maximum": 9007199254740991
2343
+ },
2344
+ "height": {
2345
+ "type": "integer",
2346
+ "minimum": 0,
2347
+ "maximum": 9007199254740991
2348
+ }
2349
+ },
2350
+ "required": [
2351
+ "width",
2352
+ "height"
2353
+ ],
2354
+ "additionalProperties": false
2355
+ },
2356
+ "device_pixel_ratio": {
2357
+ "anyOf": [
2358
+ {
2359
+ "type": "number",
2360
+ "exclusiveMinimum": 0
2361
+ },
2362
+ {
2363
+ "type": "null"
2364
+ }
2365
+ ]
2366
+ },
2367
+ "touch_capable": {
2368
+ "type": [
2369
+ "boolean",
2370
+ "null"
2371
+ ]
2372
+ },
2373
+ "language": {
2374
+ "type": [
2375
+ "string",
2376
+ "null"
2377
+ ]
2378
+ },
2379
+ "connection_type": {
2380
+ "type": [
2381
+ "string",
2382
+ "null"
2383
+ ]
2384
+ },
2385
+ "color_scheme_preference": {
2386
+ "anyOf": [
2387
+ {
2388
+ "type": "string",
2389
+ "enum": [
2390
+ "light",
2391
+ "dark",
2392
+ "no-preference"
2393
+ ]
2394
+ },
2395
+ {
2396
+ "type": "null"
2397
+ }
2398
+ ]
2399
+ },
2400
+ "app_version": {
2401
+ "type": [
2402
+ "string",
2403
+ "null"
2404
+ ]
2405
+ },
2406
+ "build_number": {
2407
+ "type": [
2408
+ "string",
2409
+ "null"
2410
+ ]
2411
+ },
2412
+ "release_channel": {
2413
+ "type": [
2414
+ "string",
2415
+ "null"
2416
+ ]
2417
+ },
2418
+ "api_level": {
2419
+ "anyOf": [
2420
+ {
2421
+ "type": "integer",
2422
+ "minimum": 0,
2423
+ "maximum": 9007199254740991
2424
+ },
2425
+ {
2426
+ "type": "null"
2427
+ }
2428
+ ]
2429
+ },
2430
+ "manufacturer": {
2431
+ "type": [
2432
+ "string",
2433
+ "null"
2434
+ ]
2435
+ },
2436
+ "model": {
2437
+ "type": [
2438
+ "string",
2439
+ "null"
2440
+ ]
2441
+ },
2442
+ "timezone": {
2443
+ "type": [
2444
+ "string",
2445
+ "null"
2446
+ ]
2447
+ },
2448
+ "battery_level": {
2449
+ "anyOf": [
2450
+ {
2451
+ "type": "number",
2452
+ "minimum": 0
2453
+ },
2454
+ {
2455
+ "type": "null"
2456
+ }
2457
+ ]
2458
+ },
2459
+ "battery_charging": {
2460
+ "type": [
2461
+ "boolean",
2462
+ "null"
2463
+ ]
2464
+ },
2465
+ "free_disk_bytes": {
2466
+ "anyOf": [
2467
+ {
2468
+ "type": "integer",
2469
+ "minimum": 0,
2470
+ "maximum": 9007199254740991
2471
+ },
2472
+ {
2473
+ "type": "null"
2474
+ }
2475
+ ]
2476
+ },
2477
+ "free_memory_bytes": {
2478
+ "anyOf": [
2479
+ {
2480
+ "type": "integer",
2481
+ "minimum": 0,
2482
+ "maximum": 9007199254740991
2483
+ },
2484
+ {
2485
+ "type": "null"
2486
+ }
2487
+ ]
2488
+ },
2489
+ "jailbroken": {
2490
+ "type": [
2491
+ "boolean",
2492
+ "null"
2493
+ ]
2494
+ }
2495
+ },
2496
+ "required": [
2497
+ "user_agent",
2498
+ "os",
2499
+ "device_type",
2500
+ "screen",
2501
+ "viewport",
2502
+ "device_pixel_ratio",
2503
+ "touch_capable",
2504
+ "language",
2505
+ "connection_type",
2506
+ "color_scheme_preference"
2507
+ ],
2508
+ "additionalProperties": false
2509
+ }
2510
+ },
2511
+ "required": [
2512
+ "breadcrumb_type",
2513
+ "data",
2514
+ "device"
2515
+ ],
2516
+ "additionalProperties": false
2517
+ }
2518
+ ]
2519
+ }
2520
+ },
2521
+ "required": [
2522
+ "schema_version",
2523
+ "event_id",
2524
+ "event_type",
2525
+ "sdk_name",
2526
+ "sdk_version",
2527
+ "service",
2528
+ "occurred_at",
2529
+ "payload"
2530
+ ],
2531
+ "additionalProperties": false
2532
+ },
2533
+ {
2534
+ "type": "object",
2535
+ "properties": {
2536
+ "schema_version": {
2537
+ "type": "string",
2538
+ "minLength": 1
2539
+ },
2540
+ "event_id": {
2541
+ "type": "string",
2542
+ "format": "uuid"
2543
+ },
2544
+ "event_type": {
2545
+ "type": "string",
2546
+ "const": "frontend_exception"
2547
+ },
2548
+ "project_token": {
2549
+ "type": "string",
2550
+ "minLength": 1
2551
+ },
2552
+ "project_id": {
2553
+ "anyOf": [
2554
+ {
2555
+ "type": "string",
2556
+ "format": "uuid"
2557
+ },
2558
+ {
2559
+ "type": "null"
2560
+ }
2561
+ ]
2562
+ },
2563
+ "sdk_name": {
2564
+ "type": "string",
2565
+ "minLength": 1
2566
+ },
2567
+ "sdk_version": {
2568
+ "type": "string",
2569
+ "minLength": 1
2570
+ },
2571
+ "service": {
2572
+ "type": "object",
2573
+ "properties": {
2574
+ "name": {
2575
+ "type": "string",
2576
+ "minLength": 1
2577
+ },
2578
+ "runtime": {
2579
+ "anyOf": [
2580
+ {
2581
+ "type": "string",
2582
+ "minLength": 1
2583
+ },
2584
+ {
2585
+ "type": "null"
2586
+ }
2587
+ ]
2588
+ },
2589
+ "framework": {
2590
+ "anyOf": [
2591
+ {
2592
+ "type": "string",
2593
+ "minLength": 1
2594
+ },
2595
+ {
2596
+ "type": "null"
2597
+ }
2598
+ ]
2599
+ },
2600
+ "environment": {
2601
+ "type": "string",
2602
+ "minLength": 1
2603
+ }
2604
+ },
2605
+ "required": [
2606
+ "name",
2607
+ "environment"
2608
+ ],
2609
+ "additionalProperties": false
2610
+ },
2611
+ "occurred_at": {
2612
+ "type": "string",
2613
+ "format": "date-time"
2614
+ },
2615
+ "correlation": {
2616
+ "type": "object",
2617
+ "properties": {
2618
+ "request_id": {
2619
+ "type": [
2620
+ "string",
2621
+ "null"
2622
+ ]
2623
+ },
2624
+ "trace_id": {
2625
+ "type": [
2626
+ "string",
2627
+ "null"
2628
+ ]
2629
+ },
2630
+ "session_id": {
2631
+ "type": [
2632
+ "string",
2633
+ "null"
2634
+ ]
2635
+ },
2636
+ "user_id_hash": {
2637
+ "type": [
2638
+ "string",
2639
+ "null"
2640
+ ]
2641
+ }
2642
+ },
2643
+ "additionalProperties": false
2644
+ },
2645
+ "context": {
2646
+ "type": "object",
2647
+ "additionalProperties": {}
2648
+ },
2649
+ "payload": {
2650
+ "type": "object",
2651
+ "properties": {
2652
+ "name": {
2653
+ "type": "string",
2654
+ "minLength": 1
2655
+ },
2656
+ "message": {
2657
+ "type": "string",
2658
+ "minLength": 1
2659
+ },
2660
+ "stack": {
2661
+ "type": "string",
2662
+ "minLength": 1
2663
+ },
2664
+ "route": {
2665
+ "anyOf": [
2666
+ {
2667
+ "type": "string",
2668
+ "minLength": 1
2669
+ },
2670
+ {
2671
+ "type": "null"
2672
+ }
2673
+ ]
2674
+ },
2675
+ "browser": {
2676
+ "type": "object",
2677
+ "properties": {
2678
+ "name": {
2679
+ "type": "string",
2680
+ "minLength": 1
2681
+ },
2682
+ "version": {
2683
+ "type": "string",
2684
+ "minLength": 1
2685
+ }
2686
+ },
2687
+ "required": [
2688
+ "name",
2689
+ "version"
2690
+ ],
2691
+ "additionalProperties": false
2692
+ },
2693
+ "breadcrumbs": {
2694
+ "type": "array",
2695
+ "items": {
2696
+ "anyOf": [
2697
+ {
2698
+ "type": "object",
2699
+ "properties": {
2700
+ "breadcrumb_type": {
2701
+ "type": "string",
2702
+ "enum": [
2703
+ "route_change",
2704
+ "click",
2705
+ "form_submit",
2706
+ "console_log",
2707
+ "network_request"
2708
+ ]
2709
+ },
2710
+ "route": {
2711
+ "anyOf": [
2712
+ {
2713
+ "type": "string",
2714
+ "minLength": 1
2715
+ },
2716
+ {
2717
+ "type": "null"
2718
+ }
2719
+ ]
2720
+ },
2721
+ "data": {
2722
+ "type": "object",
2723
+ "additionalProperties": {}
2724
+ },
2725
+ "ts": {
2726
+ "type": "string",
2727
+ "format": "date-time"
2728
+ }
2729
+ },
2730
+ "required": [
2731
+ "breadcrumb_type",
2732
+ "data",
2733
+ "ts"
2734
+ ],
2735
+ "additionalProperties": false
2736
+ },
2737
+ {
2738
+ "type": "object",
2739
+ "properties": {
2740
+ "breadcrumb_type": {
2741
+ "type": "string",
2742
+ "minLength": 1
2743
+ },
2744
+ "route": {
2745
+ "anyOf": [
2746
+ {
2747
+ "type": "string",
2748
+ "minLength": 1
2749
+ },
2750
+ {
2751
+ "type": "null"
2752
+ }
2753
+ ]
2754
+ },
2755
+ "data": {
2756
+ "type": "object",
2757
+ "additionalProperties": {}
2758
+ },
2759
+ "ts": {
2760
+ "type": "string",
2761
+ "format": "date-time"
2762
+ }
2763
+ },
2764
+ "required": [
2765
+ "breadcrumb_type",
2766
+ "data",
2767
+ "ts"
2768
+ ],
2769
+ "additionalProperties": false
2770
+ }
2771
+ ]
2772
+ }
2773
+ },
2774
+ "device": {
2775
+ "anyOf": [
2776
+ {
2777
+ "anyOf": [
2778
+ {
2779
+ "type": "object",
2780
+ "properties": {
2781
+ "user_agent": {
2782
+ "type": [
2783
+ "string",
2784
+ "null"
2785
+ ]
2786
+ },
2787
+ "os": {
2788
+ "type": "object",
2789
+ "properties": {
2790
+ "name": {
2791
+ "type": [
2792
+ "string",
2793
+ "null"
2794
+ ]
2795
+ },
2796
+ "version": {
2797
+ "type": [
2798
+ "string",
2799
+ "null"
2800
+ ]
2801
+ }
2802
+ },
2803
+ "required": [
2804
+ "name",
2805
+ "version"
2806
+ ],
2807
+ "additionalProperties": false
2808
+ },
2809
+ "device_type": {
2810
+ "type": "string",
2811
+ "enum": [
2812
+ "desktop",
2813
+ "mobile",
2814
+ "tablet",
2815
+ "unknown"
2816
+ ]
2817
+ },
2818
+ "screen": {
2819
+ "type": "object",
2820
+ "properties": {
2821
+ "width": {
2822
+ "type": "integer",
2823
+ "minimum": 0,
2824
+ "maximum": 9007199254740991
2825
+ },
2826
+ "height": {
2827
+ "type": "integer",
2828
+ "minimum": 0,
2829
+ "maximum": 9007199254740991
2830
+ }
2831
+ },
2832
+ "required": [
2833
+ "width",
2834
+ "height"
2835
+ ],
2836
+ "additionalProperties": false
2837
+ },
2838
+ "viewport": {
2839
+ "type": "object",
2840
+ "properties": {
2841
+ "width": {
2842
+ "type": "integer",
2843
+ "minimum": 0,
2844
+ "maximum": 9007199254740991
2845
+ },
2846
+ "height": {
2847
+ "type": "integer",
2848
+ "minimum": 0,
2849
+ "maximum": 9007199254740991
2850
+ }
2851
+ },
2852
+ "required": [
2853
+ "width",
2854
+ "height"
2855
+ ],
2856
+ "additionalProperties": false
2857
+ },
2858
+ "device_pixel_ratio": {
2859
+ "anyOf": [
2860
+ {
2861
+ "type": "number",
2862
+ "exclusiveMinimum": 0
2863
+ },
2864
+ {
2865
+ "type": "null"
2866
+ }
2867
+ ]
2868
+ },
2869
+ "touch_capable": {
2870
+ "type": [
2871
+ "boolean",
2872
+ "null"
2873
+ ]
2874
+ },
2875
+ "language": {
2876
+ "type": [
2877
+ "string",
2878
+ "null"
2879
+ ]
2880
+ },
2881
+ "connection_type": {
2882
+ "type": [
2883
+ "string",
2884
+ "null"
2885
+ ]
2886
+ },
2887
+ "color_scheme_preference": {
2888
+ "anyOf": [
2889
+ {
2890
+ "type": "string",
2891
+ "enum": [
2892
+ "light",
2893
+ "dark",
2894
+ "no-preference"
2895
+ ]
2896
+ },
2897
+ {
2898
+ "type": "null"
2899
+ }
2900
+ ]
2901
+ }
2902
+ },
2903
+ "required": [
2904
+ "user_agent",
2905
+ "os",
2906
+ "device_type",
2907
+ "screen",
2908
+ "viewport",
2909
+ "device_pixel_ratio",
2910
+ "touch_capable",
2911
+ "language",
2912
+ "connection_type",
2913
+ "color_scheme_preference"
2914
+ ],
2915
+ "additionalProperties": false
2916
+ },
2917
+ {
2918
+ "type": "object",
2919
+ "properties": {
2920
+ "user_agent": {
2921
+ "type": [
2922
+ "string",
2923
+ "null"
2924
+ ]
2925
+ },
2926
+ "os": {
2927
+ "type": "object",
2928
+ "properties": {
2929
+ "name": {
2930
+ "type": [
2931
+ "string",
2932
+ "null"
2933
+ ]
2934
+ },
2935
+ "version": {
2936
+ "type": [
2937
+ "string",
2938
+ "null"
2939
+ ]
2940
+ }
2941
+ },
2942
+ "required": [
2943
+ "name",
2944
+ "version"
2945
+ ],
2946
+ "additionalProperties": false
2947
+ },
2948
+ "device_type": {
2949
+ "type": "string",
2950
+ "enum": [
2951
+ "desktop",
2952
+ "mobile",
2953
+ "tablet",
2954
+ "unknown"
2955
+ ]
2956
+ },
2957
+ "screen": {
2958
+ "type": "object",
2959
+ "properties": {
2960
+ "width": {
2961
+ "type": "integer",
2962
+ "minimum": 0,
2963
+ "maximum": 9007199254740991
2964
+ },
2965
+ "height": {
2966
+ "type": "integer",
2967
+ "minimum": 0,
2968
+ "maximum": 9007199254740991
2969
+ }
2970
+ },
2971
+ "required": [
2972
+ "width",
2973
+ "height"
2974
+ ],
2975
+ "additionalProperties": false
2976
+ },
2977
+ "viewport": {
2978
+ "type": "object",
2979
+ "properties": {
2980
+ "width": {
2981
+ "type": "integer",
2982
+ "minimum": 0,
2983
+ "maximum": 9007199254740991
2984
+ },
2985
+ "height": {
2986
+ "type": "integer",
2987
+ "minimum": 0,
2988
+ "maximum": 9007199254740991
2989
+ }
2990
+ },
2991
+ "required": [
2992
+ "width",
2993
+ "height"
2994
+ ],
2995
+ "additionalProperties": false
2996
+ },
2997
+ "device_pixel_ratio": {
2998
+ "anyOf": [
2999
+ {
3000
+ "type": "number",
3001
+ "exclusiveMinimum": 0
3002
+ },
3003
+ {
3004
+ "type": "null"
3005
+ }
3006
+ ]
3007
+ },
3008
+ "touch_capable": {
3009
+ "type": [
3010
+ "boolean",
3011
+ "null"
3012
+ ]
3013
+ },
3014
+ "language": {
3015
+ "type": [
3016
+ "string",
3017
+ "null"
3018
+ ]
3019
+ },
3020
+ "connection_type": {
3021
+ "type": [
3022
+ "string",
3023
+ "null"
3024
+ ]
3025
+ },
3026
+ "color_scheme_preference": {
3027
+ "anyOf": [
3028
+ {
3029
+ "type": "string",
3030
+ "enum": [
3031
+ "light",
3032
+ "dark",
3033
+ "no-preference"
3034
+ ]
3035
+ },
3036
+ {
3037
+ "type": "null"
3038
+ }
3039
+ ]
3040
+ },
3041
+ "app_version": {
3042
+ "type": [
3043
+ "string",
3044
+ "null"
3045
+ ]
3046
+ },
3047
+ "build_number": {
3048
+ "type": [
3049
+ "string",
3050
+ "null"
3051
+ ]
3052
+ },
3053
+ "release_channel": {
3054
+ "type": [
3055
+ "string",
3056
+ "null"
3057
+ ]
3058
+ },
3059
+ "api_level": {
3060
+ "anyOf": [
3061
+ {
3062
+ "type": "integer",
3063
+ "minimum": 0,
3064
+ "maximum": 9007199254740991
3065
+ },
3066
+ {
3067
+ "type": "null"
3068
+ }
3069
+ ]
3070
+ },
3071
+ "manufacturer": {
3072
+ "type": [
3073
+ "string",
3074
+ "null"
3075
+ ]
3076
+ },
3077
+ "model": {
3078
+ "type": [
3079
+ "string",
3080
+ "null"
3081
+ ]
3082
+ },
3083
+ "timezone": {
3084
+ "type": [
3085
+ "string",
3086
+ "null"
3087
+ ]
3088
+ },
3089
+ "battery_level": {
3090
+ "anyOf": [
3091
+ {
3092
+ "type": "number",
3093
+ "minimum": 0
3094
+ },
3095
+ {
3096
+ "type": "null"
3097
+ }
3098
+ ]
3099
+ },
3100
+ "battery_charging": {
3101
+ "type": [
3102
+ "boolean",
3103
+ "null"
3104
+ ]
3105
+ },
3106
+ "free_disk_bytes": {
3107
+ "anyOf": [
3108
+ {
3109
+ "type": "integer",
3110
+ "minimum": 0,
3111
+ "maximum": 9007199254740991
3112
+ },
3113
+ {
3114
+ "type": "null"
3115
+ }
3116
+ ]
3117
+ },
3118
+ "free_memory_bytes": {
3119
+ "anyOf": [
3120
+ {
3121
+ "type": "integer",
3122
+ "minimum": 0,
3123
+ "maximum": 9007199254740991
3124
+ },
3125
+ {
3126
+ "type": "null"
3127
+ }
3128
+ ]
3129
+ },
3130
+ "jailbroken": {
3131
+ "type": [
3132
+ "boolean",
3133
+ "null"
3134
+ ]
3135
+ }
3136
+ },
3137
+ "required": [
3138
+ "user_agent",
3139
+ "os",
3140
+ "device_type",
3141
+ "screen",
3142
+ "viewport",
3143
+ "device_pixel_ratio",
3144
+ "touch_capable",
3145
+ "language",
3146
+ "connection_type",
3147
+ "color_scheme_preference"
3148
+ ],
3149
+ "additionalProperties": false
3150
+ }
3151
+ ]
3152
+ },
3153
+ {
3154
+ "type": "null"
3155
+ }
3156
+ ]
3157
+ },
3158
+ "browser_event": {
3159
+ "type": "object",
3160
+ "properties": {
3161
+ "kind": {
3162
+ "type": "string",
3163
+ "enum": [
3164
+ "window_error",
3165
+ "resource_error"
3166
+ ]
3167
+ },
3168
+ "message": {
3169
+ "type": [
3170
+ "string",
3171
+ "null"
3172
+ ]
3173
+ },
3174
+ "file_name": {
3175
+ "type": [
3176
+ "string",
3177
+ "null"
3178
+ ]
3179
+ },
3180
+ "line_number": {
3181
+ "anyOf": [
3182
+ {
3183
+ "type": "integer",
3184
+ "minimum": 0,
3185
+ "maximum": 9007199254740991
3186
+ },
3187
+ {
3188
+ "type": "null"
3189
+ }
3190
+ ]
3191
+ },
3192
+ "column_number": {
3193
+ "anyOf": [
3194
+ {
3195
+ "type": "integer",
3196
+ "minimum": 0,
3197
+ "maximum": 9007199254740991
3198
+ },
3199
+ {
3200
+ "type": "null"
3201
+ }
3202
+ ]
3203
+ },
3204
+ "target": {
3205
+ "anyOf": [
3206
+ {
3207
+ "type": "object",
3208
+ "properties": {
3209
+ "tag_name": {
3210
+ "type": [
3211
+ "string",
3212
+ "null"
3213
+ ]
3214
+ },
3215
+ "source_url": {
3216
+ "type": [
3217
+ "string",
3218
+ "null"
3219
+ ]
3220
+ },
3221
+ "attributes": {
3222
+ "type": "object",
3223
+ "properties": {
3224
+ "rel": {
3225
+ "type": "string"
3226
+ },
3227
+ "as": {
3228
+ "type": "string"
3229
+ },
3230
+ "type": {
3231
+ "type": "string"
3232
+ },
3233
+ "media": {
3234
+ "type": "string"
3235
+ },
3236
+ "cross_origin": {
3237
+ "type": "string"
3238
+ },
3239
+ "async": {
3240
+ "type": "boolean"
3241
+ },
3242
+ "defer": {
3243
+ "type": "boolean"
3244
+ },
3245
+ "integrity_present": {
3246
+ "type": "boolean"
3247
+ }
3248
+ },
3249
+ "additionalProperties": false
3250
+ }
3251
+ },
3252
+ "required": [
3253
+ "tag_name",
3254
+ "source_url"
3255
+ ],
3256
+ "additionalProperties": false
3257
+ },
3258
+ {
3259
+ "type": "null"
3260
+ }
3261
+ ]
3262
+ },
3263
+ "page": {
3264
+ "type": "object",
3265
+ "properties": {
3266
+ "url": {
3267
+ "type": [
3268
+ "string",
3269
+ "null"
3270
+ ]
3271
+ },
3272
+ "referrer": {
3273
+ "type": [
3274
+ "string",
3275
+ "null"
3276
+ ]
3277
+ },
3278
+ "ready_state": {
3279
+ "anyOf": [
3280
+ {
3281
+ "type": "string",
3282
+ "enum": [
3283
+ "loading",
3284
+ "interactive",
3285
+ "complete"
3286
+ ]
3287
+ },
3288
+ {
3289
+ "type": "null"
3290
+ }
3291
+ ]
3292
+ },
3293
+ "visibility_state": {
3294
+ "anyOf": [
3295
+ {
3296
+ "type": "string",
3297
+ "enum": [
3298
+ "visible",
3299
+ "hidden",
3300
+ "prerender",
3301
+ "unloaded"
3302
+ ]
3303
+ },
3304
+ {
3305
+ "type": "null"
3306
+ }
3307
+ ]
3308
+ }
3309
+ },
3310
+ "required": [
3311
+ "url",
3312
+ "referrer",
3313
+ "ready_state",
3314
+ "visibility_state"
3315
+ ],
3316
+ "additionalProperties": false
3317
+ },
3318
+ "opaque": {
3319
+ "type": "boolean"
3320
+ }
3321
+ },
3322
+ "required": [
3323
+ "kind",
3324
+ "message",
3325
+ "file_name",
3326
+ "line_number",
3327
+ "column_number",
3328
+ "target",
3329
+ "opaque"
3330
+ ],
3331
+ "additionalProperties": false
3332
+ },
3333
+ "rejection_reason": {
3334
+ "type": "object",
3335
+ "properties": {
3336
+ "kind": {
3337
+ "type": "string",
3338
+ "enum": [
3339
+ "error",
3340
+ "string",
3341
+ "object",
3342
+ "null",
3343
+ "undefined",
3344
+ "unknown"
3345
+ ]
3346
+ },
3347
+ "name": {
3348
+ "type": "string",
3349
+ "minLength": 1
3350
+ },
3351
+ "message": {
3352
+ "type": "string",
3353
+ "minLength": 1
3354
+ },
3355
+ "preview": {
3356
+ "type": "string",
3357
+ "minLength": 1
3358
+ }
3359
+ },
3360
+ "required": [
3361
+ "kind"
3362
+ ],
3363
+ "additionalProperties": false
3364
+ },
3365
+ "dom_context": {
3366
+ "anyOf": [
3367
+ {
3368
+ "type": "object",
3369
+ "properties": {
3370
+ "mode": {
3371
+ "type": "string",
3372
+ "const": "lightweight"
3373
+ },
3374
+ "html_excerpt": {
3375
+ "type": "string",
3376
+ "minLength": 1
3377
+ }
3378
+ },
3379
+ "required": [
3380
+ "mode",
3381
+ "html_excerpt"
3382
+ ],
3383
+ "additionalProperties": false
3384
+ },
3385
+ {
3386
+ "type": "null"
3387
+ }
3388
+ ]
3389
+ },
3390
+ "probe_data": {
3391
+ "type": "object",
3392
+ "properties": {
3393
+ "version": {
3394
+ "type": "number",
3395
+ "const": 1
3396
+ },
3397
+ "items": {
3398
+ "type": "array",
3399
+ "items": {
3400
+ "type": "object",
3401
+ "properties": {
3402
+ "label": {
3403
+ "type": "string",
3404
+ "minLength": 1
3405
+ },
3406
+ "data": {
3407
+ "type": "object",
3408
+ "additionalProperties": {}
3409
+ },
3410
+ "timestamp": {
3411
+ "type": "string",
3412
+ "format": "date-time"
3413
+ },
3414
+ "activation_id": {
3415
+ "anyOf": [
3416
+ {
3417
+ "type": "string",
3418
+ "format": "uuid"
3419
+ },
3420
+ {
3421
+ "type": "null"
3422
+ }
3423
+ ]
3424
+ }
3425
+ },
3426
+ "required": [
3427
+ "label",
3428
+ "data",
3429
+ "timestamp",
3430
+ "activation_id"
3431
+ ],
3432
+ "additionalProperties": false
3433
+ }
3434
+ }
3435
+ },
3436
+ "required": [
3437
+ "version",
3438
+ "items"
3439
+ ],
3440
+ "additionalProperties": false
3441
+ },
3442
+ "exception_evidence": {
3443
+ "type": "object",
3444
+ "properties": {
3445
+ "version": {
3446
+ "type": "number",
3447
+ "const": 1
3448
+ },
3449
+ "runtime": {
3450
+ "type": "string",
3451
+ "enum": [
3452
+ "node",
3453
+ "browser",
3454
+ "python",
3455
+ "php",
3456
+ "jvm",
3457
+ "go",
3458
+ "ruby",
3459
+ "dotnet",
3460
+ "android",
3461
+ "swift",
3462
+ "react_native",
3463
+ "unknown"
3464
+ ]
3465
+ },
3466
+ "root_id": {
3467
+ "type": "integer",
3468
+ "minimum": 0,
3469
+ "maximum": 7
3470
+ },
3471
+ "nodes": {
3472
+ "minItems": 1,
3473
+ "maxItems": 8,
3474
+ "type": "array",
3475
+ "items": {
3476
+ "type": "object",
3477
+ "properties": {
3478
+ "id": {
3479
+ "type": "integer",
3480
+ "minimum": 0,
3481
+ "maximum": 7
3482
+ },
3483
+ "name": {
3484
+ "type": "string",
3485
+ "maxLength": 256
3486
+ },
3487
+ "message": {
3488
+ "type": "string",
3489
+ "maxLength": 2048
3490
+ },
3491
+ "stack": {
3492
+ "anyOf": [
3493
+ {
3494
+ "type": "string",
3495
+ "maxLength": 16384
3496
+ },
3497
+ {
3498
+ "type": "null"
3499
+ }
3500
+ ]
3501
+ },
3502
+ "trace_origin": {
3503
+ "type": "string",
3504
+ "enum": [
3505
+ "throw",
3506
+ "native_fatal",
3507
+ "capture",
3508
+ "runtime_reported",
3509
+ "unavailable",
3510
+ "unknown"
3511
+ ]
3512
+ },
3513
+ "parsing_status": {
3514
+ "type": "string",
3515
+ "enum": [
3516
+ "parsed",
3517
+ "partial",
3518
+ "unparsed",
3519
+ "unavailable",
3520
+ "truncated"
3521
+ ]
3522
+ },
3523
+ "frames": {
3524
+ "maxItems": 32,
3525
+ "type": "array",
3526
+ "items": {
3527
+ "type": "object",
3528
+ "properties": {
3529
+ "function": {
3530
+ "anyOf": [
3531
+ {
3532
+ "type": "string",
3533
+ "maxLength": 256
3534
+ },
3535
+ {
3536
+ "type": "null"
3537
+ }
3538
+ ]
3539
+ },
3540
+ "file": {
3541
+ "anyOf": [
3542
+ {
3543
+ "type": "string",
3544
+ "maxLength": 2048
3545
+ },
3546
+ {
3547
+ "type": "null"
3548
+ }
3549
+ ]
3550
+ },
3551
+ "line": {
3552
+ "anyOf": [
3553
+ {
3554
+ "type": "integer",
3555
+ "exclusiveMinimum": 0,
3556
+ "maximum": 9007199254740991
3557
+ },
3558
+ {
3559
+ "type": "null"
3560
+ }
3561
+ ]
3562
+ },
3563
+ "column": {
3564
+ "anyOf": [
3565
+ {
3566
+ "type": "integer",
3567
+ "minimum": 0,
3568
+ "maximum": 9007199254740991
3569
+ },
3570
+ {
3571
+ "type": "null"
3572
+ }
3573
+ ]
3574
+ },
3575
+ "classification": {
3576
+ "type": "string",
3577
+ "enum": [
3578
+ "application",
3579
+ "framework",
3580
+ "sdk",
3581
+ "unknown"
3582
+ ]
3583
+ }
3584
+ },
3585
+ "required": [
3586
+ "function",
3587
+ "file",
3588
+ "line",
3589
+ "column",
3590
+ "classification"
3591
+ ],
3592
+ "additionalProperties": false
3593
+ }
3594
+ },
3595
+ "relationships": {
3596
+ "maxItems": 5,
3597
+ "type": "array",
3598
+ "items": {
3599
+ "type": "object",
3600
+ "properties": {
3601
+ "kind": {
3602
+ "type": "string",
3603
+ "enum": [
3604
+ "cause",
3605
+ "context",
3606
+ "aggregate",
3607
+ "suppressed"
3608
+ ]
3609
+ },
3610
+ "target_id": {
3611
+ "type": "integer",
3612
+ "minimum": 0,
3613
+ "maximum": 7
3614
+ }
3615
+ },
3616
+ "required": [
3617
+ "kind",
3618
+ "target_id"
3619
+ ],
3620
+ "additionalProperties": false
3621
+ }
3622
+ }
3623
+ },
3624
+ "required": [
3625
+ "id",
3626
+ "name",
3627
+ "message",
3628
+ "stack",
3629
+ "trace_origin",
3630
+ "parsing_status",
3631
+ "frames",
3632
+ "relationships"
3633
+ ],
3634
+ "additionalProperties": false
3635
+ }
3636
+ },
3637
+ "truncated": {
3638
+ "type": "boolean"
3639
+ },
3640
+ "unavailable_reason": {
3641
+ "anyOf": [
3642
+ {
3643
+ "type": "string",
3644
+ "enum": [
3645
+ "unknown",
3646
+ "unsupported",
3647
+ "unsafe",
3648
+ "budget_exceeded"
3649
+ ]
3650
+ },
3651
+ {
3652
+ "type": "null"
3653
+ }
3654
+ ]
3655
+ }
3656
+ },
3657
+ "required": [
3658
+ "version",
3659
+ "runtime",
3660
+ "root_id",
3661
+ "nodes",
3662
+ "truncated",
3663
+ "unavailable_reason"
3664
+ ],
3665
+ "additionalProperties": false
3666
+ },
3667
+ "resource_observations": {
3668
+ "type": "object",
3669
+ "properties": {
3670
+ "version": {
3671
+ "type": "number",
3672
+ "const": 1
3673
+ },
3674
+ "items": {
3675
+ "minItems": 1,
3676
+ "maxItems": 5,
3677
+ "type": "array",
3678
+ "items": {
3679
+ "anyOf": [
3680
+ {
3681
+ "type": "object",
3682
+ "properties": {
3683
+ "kind": {
3684
+ "type": "string",
3685
+ "const": "timing"
3686
+ },
3687
+ "observed_at": {
3688
+ "type": "string",
3689
+ "format": "date-time"
3690
+ },
3691
+ "source_url": {
3692
+ "anyOf": [
3693
+ {
3694
+ "type": "string",
3695
+ "maxLength": 2048
3696
+ },
3697
+ {
3698
+ "type": "null"
3699
+ }
3700
+ ]
3701
+ },
3702
+ "availability": {
3703
+ "type": "string",
3704
+ "enum": [
3705
+ "observed",
3706
+ "unsupported",
3707
+ "no_match",
3708
+ "withheld",
3709
+ "ambiguous",
3710
+ "unknown"
3711
+ ]
3712
+ },
3713
+ "response_status": {
3714
+ "anyOf": [
3715
+ {
3716
+ "type": "integer",
3717
+ "minimum": 100,
3718
+ "maximum": 599
3719
+ },
3720
+ {
3721
+ "type": "null"
3722
+ }
3723
+ ]
3724
+ },
3725
+ "duration_ms": {
3726
+ "anyOf": [
3727
+ {
3728
+ "type": "number",
3729
+ "minimum": 0
3730
+ },
3731
+ {
3732
+ "type": "null"
3733
+ }
3734
+ ]
3735
+ },
3736
+ "transfer_size_bytes": {
3737
+ "anyOf": [
3738
+ {
3739
+ "type": "integer",
3740
+ "minimum": 0,
3741
+ "maximum": 9007199254740991
3742
+ },
3743
+ {
3744
+ "type": "null"
3745
+ }
3746
+ ]
3747
+ }
3748
+ },
3749
+ "required": [
3750
+ "kind",
3751
+ "observed_at",
3752
+ "source_url",
3753
+ "availability",
3754
+ "response_status",
3755
+ "duration_ms",
3756
+ "transfer_size_bytes"
3757
+ ],
3758
+ "additionalProperties": false
3759
+ },
3760
+ {
3761
+ "type": "object",
3762
+ "properties": {
3763
+ "kind": {
3764
+ "type": "string",
3765
+ "const": "csp"
3766
+ },
3767
+ "observed_at": {
3768
+ "type": "string",
3769
+ "format": "date-time"
3770
+ },
3771
+ "source_url": {
3772
+ "anyOf": [
3773
+ {
3774
+ "type": "string",
3775
+ "maxLength": 2048
3776
+ },
3777
+ {
3778
+ "type": "null"
3779
+ }
3780
+ ]
3781
+ },
3782
+ "effective_directive": {
3783
+ "type": "string",
3784
+ "pattern": "^[a-z-]{1,64}$"
3785
+ },
3786
+ "disposition": {
3787
+ "type": "string",
3788
+ "enum": [
3789
+ "enforce",
3790
+ "report"
3791
+ ]
3792
+ },
3793
+ "document_status_code": {
3794
+ "anyOf": [
3795
+ {
3796
+ "type": "integer",
3797
+ "minimum": 100,
3798
+ "maximum": 599
3799
+ },
3800
+ {
3801
+ "type": "null"
3802
+ }
3803
+ ]
3804
+ }
3805
+ },
3806
+ "required": [
3807
+ "kind",
3808
+ "observed_at",
3809
+ "source_url",
3810
+ "effective_directive",
3811
+ "disposition",
3812
+ "document_status_code"
3813
+ ],
3814
+ "additionalProperties": false
3815
+ }
3816
+ ]
3817
+ }
3818
+ }
3819
+ },
3820
+ "required": [
3821
+ "version",
3822
+ "items"
3823
+ ],
3824
+ "additionalProperties": false
3825
+ }
3826
+ },
3827
+ "required": [
3828
+ "name",
3829
+ "message",
3830
+ "stack"
3831
+ ],
3832
+ "additionalProperties": false
3833
+ }
3834
+ },
3835
+ "required": [
3836
+ "schema_version",
3837
+ "event_id",
3838
+ "event_type",
3839
+ "sdk_name",
3840
+ "sdk_version",
3841
+ "service",
3842
+ "occurred_at",
3843
+ "payload"
3844
+ ],
3845
+ "additionalProperties": false
3846
+ },
3847
+ {
3848
+ "type": "object",
3849
+ "properties": {
3850
+ "schema_version": {
3851
+ "type": "string",
3852
+ "minLength": 1
3853
+ },
3854
+ "event_id": {
3855
+ "type": "string",
3856
+ "format": "uuid"
3857
+ },
3858
+ "event_type": {
3859
+ "type": "string",
3860
+ "const": "deploy_metadata"
3861
+ },
3862
+ "project_token": {
3863
+ "type": "string",
3864
+ "minLength": 1
3865
+ },
3866
+ "project_id": {
3867
+ "anyOf": [
3868
+ {
3869
+ "type": "string",
3870
+ "format": "uuid"
3871
+ },
3872
+ {
3873
+ "type": "null"
3874
+ }
3875
+ ]
3876
+ },
3877
+ "sdk_name": {
3878
+ "type": "string",
3879
+ "minLength": 1
3880
+ },
3881
+ "sdk_version": {
3882
+ "type": "string",
3883
+ "minLength": 1
3884
+ },
3885
+ "service": {
3886
+ "type": "object",
3887
+ "properties": {
3888
+ "name": {
3889
+ "type": "string",
3890
+ "minLength": 1
3891
+ },
3892
+ "runtime": {
3893
+ "anyOf": [
3894
+ {
3895
+ "type": "string",
3896
+ "minLength": 1
3897
+ },
3898
+ {
3899
+ "type": "null"
3900
+ }
3901
+ ]
3902
+ },
3903
+ "framework": {
3904
+ "anyOf": [
3905
+ {
3906
+ "type": "string",
3907
+ "minLength": 1
3908
+ },
3909
+ {
3910
+ "type": "null"
3911
+ }
3912
+ ]
3913
+ },
3914
+ "environment": {
3915
+ "type": "string",
3916
+ "minLength": 1
3917
+ }
3918
+ },
3919
+ "required": [
3920
+ "name",
3921
+ "environment"
3922
+ ],
3923
+ "additionalProperties": false
3924
+ },
3925
+ "occurred_at": {
3926
+ "type": "string",
3927
+ "format": "date-time"
3928
+ },
3929
+ "correlation": {
3930
+ "type": "object",
3931
+ "properties": {
3932
+ "request_id": {
3933
+ "type": [
3934
+ "string",
3935
+ "null"
3936
+ ]
3937
+ },
3938
+ "trace_id": {
3939
+ "type": [
3940
+ "string",
3941
+ "null"
3942
+ ]
3943
+ },
3944
+ "session_id": {
3945
+ "type": [
3946
+ "string",
3947
+ "null"
3948
+ ]
3949
+ },
3950
+ "user_id_hash": {
3951
+ "type": [
3952
+ "string",
3953
+ "null"
3954
+ ]
3955
+ }
3956
+ },
3957
+ "additionalProperties": false
3958
+ },
3959
+ "context": {
3960
+ "type": "object",
3961
+ "additionalProperties": {}
3962
+ },
3963
+ "payload": {
3964
+ "type": "object",
3965
+ "properties": {
3966
+ "commit_sha": {
3967
+ "type": "string",
3968
+ "minLength": 1
3969
+ },
3970
+ "version": {
3971
+ "type": "string",
3972
+ "minLength": 1
3973
+ },
3974
+ "branch": {
3975
+ "type": "string",
3976
+ "minLength": 1
3977
+ },
3978
+ "environment": {
3979
+ "type": "string",
3980
+ "minLength": 1
3981
+ },
3982
+ "deployed_at": {
3983
+ "type": "string",
3984
+ "format": "date-time"
3985
+ }
3986
+ },
3987
+ "required": [
3988
+ "commit_sha",
3989
+ "version",
3990
+ "branch",
3991
+ "environment",
3992
+ "deployed_at"
3993
+ ],
3994
+ "additionalProperties": false
3995
+ }
3996
+ },
3997
+ "required": [
3998
+ "schema_version",
3999
+ "event_id",
4000
+ "event_type",
4001
+ "sdk_name",
4002
+ "sdk_version",
4003
+ "service",
4004
+ "occurred_at",
4005
+ "payload"
4006
+ ],
4007
+ "additionalProperties": false
4008
+ },
4009
+ {
4010
+ "type": "object",
4011
+ "properties": {
4012
+ "schema_version": {
4013
+ "type": "string",
4014
+ "minLength": 1
4015
+ },
4016
+ "event_id": {
4017
+ "type": "string",
4018
+ "format": "uuid"
4019
+ },
4020
+ "event_type": {
4021
+ "type": "string",
4022
+ "const": "error_suppressed"
4023
+ },
4024
+ "project_token": {
4025
+ "type": "string",
4026
+ "minLength": 1
4027
+ },
4028
+ "project_id": {
4029
+ "anyOf": [
4030
+ {
4031
+ "type": "string",
4032
+ "format": "uuid"
4033
+ },
4034
+ {
4035
+ "type": "null"
4036
+ }
4037
+ ]
4038
+ },
4039
+ "sdk_name": {
4040
+ "type": "string",
4041
+ "minLength": 1
4042
+ },
4043
+ "sdk_version": {
4044
+ "type": "string",
4045
+ "minLength": 1
4046
+ },
4047
+ "service": {
4048
+ "type": "object",
4049
+ "properties": {
4050
+ "name": {
4051
+ "type": "string",
4052
+ "minLength": 1
4053
+ },
4054
+ "runtime": {
4055
+ "anyOf": [
4056
+ {
4057
+ "type": "string",
4058
+ "minLength": 1
4059
+ },
4060
+ {
4061
+ "type": "null"
4062
+ }
4063
+ ]
4064
+ },
4065
+ "framework": {
4066
+ "anyOf": [
4067
+ {
4068
+ "type": "string",
4069
+ "minLength": 1
4070
+ },
4071
+ {
4072
+ "type": "null"
4073
+ }
4074
+ ]
4075
+ },
4076
+ "environment": {
4077
+ "type": "string",
4078
+ "minLength": 1
4079
+ }
4080
+ },
4081
+ "required": [
4082
+ "name",
4083
+ "environment"
4084
+ ],
4085
+ "additionalProperties": false
4086
+ },
4087
+ "occurred_at": {
4088
+ "type": "string",
4089
+ "format": "date-time"
4090
+ },
4091
+ "correlation": {
4092
+ "type": "object",
4093
+ "properties": {
4094
+ "request_id": {
4095
+ "type": [
4096
+ "string",
4097
+ "null"
4098
+ ]
4099
+ },
4100
+ "trace_id": {
4101
+ "type": [
4102
+ "string",
4103
+ "null"
4104
+ ]
4105
+ },
4106
+ "session_id": {
4107
+ "type": [
4108
+ "string",
4109
+ "null"
4110
+ ]
4111
+ },
4112
+ "user_id_hash": {
4113
+ "type": [
4114
+ "string",
4115
+ "null"
4116
+ ]
4117
+ }
4118
+ },
4119
+ "additionalProperties": false
4120
+ },
4121
+ "context": {
4122
+ "type": "object",
4123
+ "additionalProperties": {}
4124
+ },
4125
+ "payload": {
4126
+ "anyOf": [
4127
+ {
4128
+ "type": "object",
4129
+ "properties": {
4130
+ "fingerprint": {
4131
+ "type": "string",
4132
+ "minLength": 1
4133
+ },
4134
+ "suppressed_count": {
4135
+ "type": "integer",
4136
+ "minimum": 0,
4137
+ "maximum": 9007199254740991
4138
+ },
4139
+ "window_seconds": {
4140
+ "type": "integer",
4141
+ "exclusiveMinimum": 0,
4142
+ "maximum": 9007199254740991
4143
+ },
4144
+ "first_seen": {
4145
+ "type": "string",
4146
+ "format": "date-time"
4147
+ },
4148
+ "last_seen": {
4149
+ "type": "string",
4150
+ "format": "date-time"
4151
+ },
4152
+ "reason": {
4153
+ "type": "string",
4154
+ "const": "queue_pressure"
4155
+ },
4156
+ "level": {
4157
+ "type": "string",
4158
+ "minLength": 1
4159
+ }
4160
+ },
4161
+ "required": [
4162
+ "fingerprint",
4163
+ "suppressed_count",
4164
+ "window_seconds",
4165
+ "first_seen",
4166
+ "last_seen"
4167
+ ],
4168
+ "additionalProperties": false
4169
+ },
4170
+ {
4171
+ "type": "object",
4172
+ "properties": {
4173
+ "fingerprint": {
4174
+ "type": "string",
4175
+ "minLength": 1
4176
+ },
4177
+ "suppressed_count": {
4178
+ "type": "integer",
4179
+ "minimum": 0,
4180
+ "maximum": 9007199254740991
4181
+ },
4182
+ "window_seconds": {
4183
+ "type": "integer",
4184
+ "exclusiveMinimum": 0,
4185
+ "maximum": 9007199254740991
4186
+ },
4187
+ "first_seen": {
4188
+ "type": "string",
4189
+ "format": "date-time"
4190
+ },
4191
+ "last_seen": {
4192
+ "type": "string",
4193
+ "format": "date-time"
4194
+ },
4195
+ "reason": {
4196
+ "type": "string",
4197
+ "const": "queue_pressure"
4198
+ },
4199
+ "level": {
4200
+ "type": "string",
4201
+ "minLength": 1
4202
+ },
4203
+ "device": {
4204
+ "type": "object",
4205
+ "properties": {
4206
+ "user_agent": {
4207
+ "type": [
4208
+ "string",
4209
+ "null"
4210
+ ]
4211
+ },
4212
+ "os": {
4213
+ "type": "object",
4214
+ "properties": {
4215
+ "name": {
4216
+ "type": [
4217
+ "string",
4218
+ "null"
4219
+ ]
4220
+ },
4221
+ "version": {
4222
+ "type": [
4223
+ "string",
4224
+ "null"
4225
+ ]
4226
+ }
4227
+ },
4228
+ "required": [
4229
+ "name",
4230
+ "version"
4231
+ ],
4232
+ "additionalProperties": false
4233
+ },
4234
+ "device_type": {
4235
+ "type": "string",
4236
+ "enum": [
4237
+ "desktop",
4238
+ "mobile",
4239
+ "tablet",
4240
+ "unknown"
4241
+ ]
4242
+ },
4243
+ "screen": {
4244
+ "type": "object",
4245
+ "properties": {
4246
+ "width": {
4247
+ "type": "integer",
4248
+ "minimum": 0,
4249
+ "maximum": 9007199254740991
4250
+ },
4251
+ "height": {
4252
+ "type": "integer",
4253
+ "minimum": 0,
4254
+ "maximum": 9007199254740991
4255
+ }
4256
+ },
4257
+ "required": [
4258
+ "width",
4259
+ "height"
4260
+ ],
4261
+ "additionalProperties": false
4262
+ },
4263
+ "viewport": {
4264
+ "type": "object",
4265
+ "properties": {
4266
+ "width": {
4267
+ "type": "integer",
4268
+ "minimum": 0,
4269
+ "maximum": 9007199254740991
4270
+ },
4271
+ "height": {
4272
+ "type": "integer",
4273
+ "minimum": 0,
4274
+ "maximum": 9007199254740991
4275
+ }
4276
+ },
4277
+ "required": [
4278
+ "width",
4279
+ "height"
4280
+ ],
4281
+ "additionalProperties": false
4282
+ },
4283
+ "device_pixel_ratio": {
4284
+ "anyOf": [
4285
+ {
4286
+ "type": "number",
4287
+ "exclusiveMinimum": 0
4288
+ },
4289
+ {
4290
+ "type": "null"
4291
+ }
4292
+ ]
4293
+ },
4294
+ "touch_capable": {
4295
+ "type": [
4296
+ "boolean",
4297
+ "null"
4298
+ ]
4299
+ },
4300
+ "language": {
4301
+ "type": [
4302
+ "string",
4303
+ "null"
4304
+ ]
4305
+ },
4306
+ "connection_type": {
4307
+ "type": [
4308
+ "string",
4309
+ "null"
4310
+ ]
4311
+ },
4312
+ "color_scheme_preference": {
4313
+ "anyOf": [
4314
+ {
4315
+ "type": "string",
4316
+ "enum": [
4317
+ "light",
4318
+ "dark",
4319
+ "no-preference"
4320
+ ]
4321
+ },
4322
+ {
4323
+ "type": "null"
4324
+ }
4325
+ ]
4326
+ },
4327
+ "app_version": {
4328
+ "type": [
4329
+ "string",
4330
+ "null"
4331
+ ]
4332
+ },
4333
+ "build_number": {
4334
+ "type": [
4335
+ "string",
4336
+ "null"
4337
+ ]
4338
+ },
4339
+ "release_channel": {
4340
+ "type": [
4341
+ "string",
4342
+ "null"
4343
+ ]
4344
+ },
4345
+ "api_level": {
4346
+ "anyOf": [
4347
+ {
4348
+ "type": "integer",
4349
+ "minimum": 0,
4350
+ "maximum": 9007199254740991
4351
+ },
4352
+ {
4353
+ "type": "null"
4354
+ }
4355
+ ]
4356
+ },
4357
+ "manufacturer": {
4358
+ "type": [
4359
+ "string",
4360
+ "null"
4361
+ ]
4362
+ },
4363
+ "model": {
4364
+ "type": [
4365
+ "string",
4366
+ "null"
4367
+ ]
4368
+ },
4369
+ "timezone": {
4370
+ "type": [
4371
+ "string",
4372
+ "null"
4373
+ ]
4374
+ },
4375
+ "battery_level": {
4376
+ "anyOf": [
4377
+ {
4378
+ "type": "number",
4379
+ "minimum": 0
4380
+ },
4381
+ {
4382
+ "type": "null"
4383
+ }
4384
+ ]
4385
+ },
4386
+ "battery_charging": {
4387
+ "type": [
4388
+ "boolean",
4389
+ "null"
4390
+ ]
4391
+ },
4392
+ "free_disk_bytes": {
4393
+ "anyOf": [
4394
+ {
4395
+ "type": "integer",
4396
+ "minimum": 0,
4397
+ "maximum": 9007199254740991
4398
+ },
4399
+ {
4400
+ "type": "null"
4401
+ }
4402
+ ]
4403
+ },
4404
+ "free_memory_bytes": {
4405
+ "anyOf": [
4406
+ {
4407
+ "type": "integer",
4408
+ "minimum": 0,
4409
+ "maximum": 9007199254740991
4410
+ },
4411
+ {
4412
+ "type": "null"
4413
+ }
4414
+ ]
4415
+ },
4416
+ "jailbroken": {
4417
+ "type": [
4418
+ "boolean",
4419
+ "null"
4420
+ ]
4421
+ }
4422
+ },
4423
+ "required": [
4424
+ "user_agent",
4425
+ "os",
4426
+ "device_type",
4427
+ "screen",
4428
+ "viewport",
4429
+ "device_pixel_ratio",
4430
+ "touch_capable",
4431
+ "language",
4432
+ "connection_type",
4433
+ "color_scheme_preference"
4434
+ ],
4435
+ "additionalProperties": false
4436
+ }
4437
+ },
4438
+ "required": [
4439
+ "fingerprint",
4440
+ "suppressed_count",
4441
+ "window_seconds",
4442
+ "first_seen",
4443
+ "last_seen",
4444
+ "device"
4445
+ ],
4446
+ "additionalProperties": false
4447
+ }
4448
+ ]
4449
+ }
4450
+ },
4451
+ "required": [
4452
+ "schema_version",
4453
+ "event_id",
4454
+ "event_type",
4455
+ "sdk_name",
4456
+ "sdk_version",
4457
+ "service",
4458
+ "occurred_at",
4459
+ "payload"
4460
+ ],
4461
+ "additionalProperties": false
4462
+ },
4463
+ {
4464
+ "type": "object",
4465
+ "properties": {
4466
+ "schema_version": {
4467
+ "type": "string",
4468
+ "minLength": 1
4469
+ },
4470
+ "event_id": {
4471
+ "type": "string",
4472
+ "format": "uuid"
4473
+ },
4474
+ "event_type": {
4475
+ "type": "string",
4476
+ "const": "probe_event"
4477
+ },
4478
+ "project_token": {
4479
+ "type": "string",
4480
+ "minLength": 1
4481
+ },
4482
+ "project_id": {
4483
+ "anyOf": [
4484
+ {
4485
+ "type": "string",
4486
+ "format": "uuid"
4487
+ },
4488
+ {
4489
+ "type": "null"
4490
+ }
4491
+ ]
4492
+ },
4493
+ "sdk_name": {
4494
+ "type": "string",
4495
+ "minLength": 1
4496
+ },
4497
+ "sdk_version": {
4498
+ "type": "string",
4499
+ "minLength": 1
4500
+ },
4501
+ "service": {
4502
+ "type": "object",
4503
+ "properties": {
4504
+ "name": {
4505
+ "type": "string",
4506
+ "minLength": 1
4507
+ },
4508
+ "runtime": {
4509
+ "anyOf": [
4510
+ {
4511
+ "type": "string",
4512
+ "minLength": 1
4513
+ },
4514
+ {
4515
+ "type": "null"
4516
+ }
4517
+ ]
4518
+ },
4519
+ "framework": {
4520
+ "anyOf": [
4521
+ {
4522
+ "type": "string",
4523
+ "minLength": 1
4524
+ },
4525
+ {
4526
+ "type": "null"
4527
+ }
4528
+ ]
4529
+ },
4530
+ "environment": {
4531
+ "type": "string",
4532
+ "minLength": 1
4533
+ }
4534
+ },
4535
+ "required": [
4536
+ "name",
4537
+ "environment"
4538
+ ],
4539
+ "additionalProperties": false
4540
+ },
4541
+ "occurred_at": {
4542
+ "type": "string",
4543
+ "format": "date-time"
4544
+ },
4545
+ "correlation": {
4546
+ "type": "object",
4547
+ "properties": {
4548
+ "request_id": {
4549
+ "type": [
4550
+ "string",
4551
+ "null"
4552
+ ]
4553
+ },
4554
+ "trace_id": {
4555
+ "type": [
4556
+ "string",
4557
+ "null"
4558
+ ]
4559
+ },
4560
+ "session_id": {
4561
+ "type": [
4562
+ "string",
4563
+ "null"
4564
+ ]
4565
+ },
4566
+ "user_id_hash": {
4567
+ "type": [
4568
+ "string",
4569
+ "null"
4570
+ ]
4571
+ }
4572
+ },
4573
+ "additionalProperties": false
4574
+ },
4575
+ "context": {
4576
+ "type": "object",
4577
+ "additionalProperties": {}
4578
+ },
4579
+ "payload": {
4580
+ "anyOf": [
4581
+ {
4582
+ "type": "object",
4583
+ "properties": {
4584
+ "label": {
4585
+ "type": "string",
4586
+ "minLength": 1
4587
+ },
4588
+ "data": {
4589
+ "type": "object",
4590
+ "additionalProperties": {}
4591
+ },
4592
+ "activation_id": {
4593
+ "anyOf": [
4594
+ {
4595
+ "type": "string",
4596
+ "format": "uuid"
4597
+ },
4598
+ {
4599
+ "type": "null"
4600
+ }
4601
+ ]
4602
+ },
4603
+ "probe_label_pattern": {
4604
+ "type": "string",
4605
+ "minLength": 1
4606
+ }
4607
+ },
4608
+ "required": [
4609
+ "label",
4610
+ "data",
4611
+ "activation_id",
4612
+ "probe_label_pattern"
4613
+ ],
4614
+ "additionalProperties": false
4615
+ },
4616
+ {
4617
+ "type": "object",
4618
+ "properties": {
4619
+ "label": {
4620
+ "type": "string",
4621
+ "minLength": 1
4622
+ },
4623
+ "data": {
4624
+ "type": "object",
4625
+ "additionalProperties": {}
4626
+ },
4627
+ "activation_id": {
4628
+ "anyOf": [
4629
+ {
4630
+ "type": "string",
4631
+ "format": "uuid"
4632
+ },
4633
+ {
4634
+ "type": "null"
4635
+ }
4636
+ ]
4637
+ },
4638
+ "probe_label_pattern": {
4639
+ "type": "string",
4640
+ "minLength": 1
4641
+ },
4642
+ "device": {
4643
+ "type": "object",
4644
+ "properties": {
4645
+ "user_agent": {
4646
+ "type": [
4647
+ "string",
4648
+ "null"
4649
+ ]
4650
+ },
4651
+ "os": {
4652
+ "type": "object",
4653
+ "properties": {
4654
+ "name": {
4655
+ "type": [
4656
+ "string",
4657
+ "null"
4658
+ ]
4659
+ },
4660
+ "version": {
4661
+ "type": [
4662
+ "string",
4663
+ "null"
4664
+ ]
4665
+ }
4666
+ },
4667
+ "required": [
4668
+ "name",
4669
+ "version"
4670
+ ],
4671
+ "additionalProperties": false
4672
+ },
4673
+ "device_type": {
4674
+ "type": "string",
4675
+ "enum": [
4676
+ "desktop",
4677
+ "mobile",
4678
+ "tablet",
4679
+ "unknown"
4680
+ ]
4681
+ },
4682
+ "screen": {
4683
+ "type": "object",
4684
+ "properties": {
4685
+ "width": {
4686
+ "type": "integer",
4687
+ "minimum": 0,
4688
+ "maximum": 9007199254740991
4689
+ },
4690
+ "height": {
4691
+ "type": "integer",
4692
+ "minimum": 0,
4693
+ "maximum": 9007199254740991
4694
+ }
4695
+ },
4696
+ "required": [
4697
+ "width",
4698
+ "height"
4699
+ ],
4700
+ "additionalProperties": false
4701
+ },
4702
+ "viewport": {
4703
+ "type": "object",
4704
+ "properties": {
4705
+ "width": {
4706
+ "type": "integer",
4707
+ "minimum": 0,
4708
+ "maximum": 9007199254740991
4709
+ },
4710
+ "height": {
4711
+ "type": "integer",
4712
+ "minimum": 0,
4713
+ "maximum": 9007199254740991
4714
+ }
4715
+ },
4716
+ "required": [
4717
+ "width",
4718
+ "height"
4719
+ ],
4720
+ "additionalProperties": false
4721
+ },
4722
+ "device_pixel_ratio": {
4723
+ "anyOf": [
4724
+ {
4725
+ "type": "number",
4726
+ "exclusiveMinimum": 0
4727
+ },
4728
+ {
4729
+ "type": "null"
4730
+ }
4731
+ ]
4732
+ },
4733
+ "touch_capable": {
4734
+ "type": [
4735
+ "boolean",
4736
+ "null"
4737
+ ]
4738
+ },
4739
+ "language": {
4740
+ "type": [
4741
+ "string",
4742
+ "null"
4743
+ ]
4744
+ },
4745
+ "connection_type": {
4746
+ "type": [
4747
+ "string",
4748
+ "null"
4749
+ ]
4750
+ },
4751
+ "color_scheme_preference": {
4752
+ "anyOf": [
4753
+ {
4754
+ "type": "string",
4755
+ "enum": [
4756
+ "light",
4757
+ "dark",
4758
+ "no-preference"
4759
+ ]
4760
+ },
4761
+ {
4762
+ "type": "null"
4763
+ }
4764
+ ]
4765
+ },
4766
+ "app_version": {
4767
+ "type": [
4768
+ "string",
4769
+ "null"
4770
+ ]
4771
+ },
4772
+ "build_number": {
4773
+ "type": [
4774
+ "string",
4775
+ "null"
4776
+ ]
4777
+ },
4778
+ "release_channel": {
4779
+ "type": [
4780
+ "string",
4781
+ "null"
4782
+ ]
4783
+ },
4784
+ "api_level": {
4785
+ "anyOf": [
4786
+ {
4787
+ "type": "integer",
4788
+ "minimum": 0,
4789
+ "maximum": 9007199254740991
4790
+ },
4791
+ {
4792
+ "type": "null"
4793
+ }
4794
+ ]
4795
+ },
4796
+ "manufacturer": {
4797
+ "type": [
4798
+ "string",
4799
+ "null"
4800
+ ]
4801
+ },
4802
+ "model": {
4803
+ "type": [
4804
+ "string",
4805
+ "null"
4806
+ ]
4807
+ },
4808
+ "timezone": {
4809
+ "type": [
4810
+ "string",
4811
+ "null"
4812
+ ]
4813
+ },
4814
+ "battery_level": {
4815
+ "anyOf": [
4816
+ {
4817
+ "type": "number",
4818
+ "minimum": 0
4819
+ },
4820
+ {
4821
+ "type": "null"
4822
+ }
4823
+ ]
4824
+ },
4825
+ "battery_charging": {
4826
+ "type": [
4827
+ "boolean",
4828
+ "null"
4829
+ ]
4830
+ },
4831
+ "free_disk_bytes": {
4832
+ "anyOf": [
4833
+ {
4834
+ "type": "integer",
4835
+ "minimum": 0,
4836
+ "maximum": 9007199254740991
4837
+ },
4838
+ {
4839
+ "type": "null"
4840
+ }
4841
+ ]
4842
+ },
4843
+ "free_memory_bytes": {
4844
+ "anyOf": [
4845
+ {
4846
+ "type": "integer",
4847
+ "minimum": 0,
4848
+ "maximum": 9007199254740991
4849
+ },
4850
+ {
4851
+ "type": "null"
4852
+ }
4853
+ ]
4854
+ },
4855
+ "jailbroken": {
4856
+ "type": [
4857
+ "boolean",
4858
+ "null"
4859
+ ]
4860
+ }
4861
+ },
4862
+ "required": [
4863
+ "user_agent",
4864
+ "os",
4865
+ "device_type",
4866
+ "screen",
4867
+ "viewport",
4868
+ "device_pixel_ratio",
4869
+ "touch_capable",
4870
+ "language",
4871
+ "connection_type",
4872
+ "color_scheme_preference"
4873
+ ],
4874
+ "additionalProperties": false
4875
+ }
4876
+ },
4877
+ "required": [
4878
+ "label",
4879
+ "data",
4880
+ "activation_id",
4881
+ "probe_label_pattern",
4882
+ "device"
4883
+ ],
4884
+ "additionalProperties": false
4885
+ }
4886
+ ]
4887
+ }
4888
+ },
4889
+ "required": [
4890
+ "schema_version",
4891
+ "event_id",
4892
+ "event_type",
4893
+ "sdk_name",
4894
+ "sdk_version",
4895
+ "service",
4896
+ "occurred_at",
4897
+ "payload"
4898
+ ],
4899
+ "additionalProperties": false
4900
+ }
4901
+ ],
4902
+ "$id": "https://debugbundle.com/schemas/event-envelope.json",
4903
+ "$comment": "Generated by scripts/sync-evidence-fixtures.ts from EventEnvelopeSchema. Do not edit by hand."
4904
+ }