@kaeawc/auto-mobile 0.0.6 → 0.0.7

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.
@@ -0,0 +1,3532 @@
1
+ [
2
+ {
3
+ "name": "biometricAuth",
4
+ "description": "Simulate biometric authentication (fingerprint) on Android emulators. Trigger match/fail/cancel actions for testing biometric prompts.",
5
+ "inputSchema": {
6
+ "type": "object",
7
+ "properties": {
8
+ "action": {
9
+ "type": "string",
10
+ "enum": [
11
+ "match",
12
+ "fail",
13
+ "cancel"
14
+ ],
15
+ "description": "Biometric action: 'match' triggers successful authentication, 'fail' simulates non-matching biometric, 'cancel' cancels the prompt"
16
+ },
17
+ "modality": {
18
+ "type": "string",
19
+ "enum": [
20
+ "any",
21
+ "fingerprint",
22
+ "face"
23
+ ],
24
+ "description": "Biometric modality (default: 'any'). Currently only 'fingerprint' is reliably supported on Android emulators. 'face' is not consistently supported."
25
+ },
26
+ "fingerprintId": {
27
+ "type": "number",
28
+ "description": "Fingerprint ID to simulate (default: 1 for 'match', 2 for 'fail'). Use enrolled ID (typically 1) for match, non-enrolled ID (typically 2) for fail."
29
+ },
30
+ "sessionUuid": {
31
+ "type": "string",
32
+ "description": "Session UUID for device targeting"
33
+ },
34
+ "keepScreenAwake": {
35
+ "type": "boolean",
36
+ "description": "Keep physical Android devices awake during the session (default: true)"
37
+ },
38
+ "device": {
39
+ "type": "string",
40
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
41
+ }
42
+ },
43
+ "required": [
44
+ "action"
45
+ ],
46
+ "additionalProperties": false,
47
+ "$schema": "http://json-schema.org/draft-07/schema#"
48
+ }
49
+ },
50
+ {
51
+ "name": "changeLocalization",
52
+ "description": "Change locale, time zone, text direction, and time format",
53
+ "inputSchema": {
54
+ "type": "object",
55
+ "properties": {
56
+ "platform": {
57
+ "type": "string",
58
+ "enum": [
59
+ "android",
60
+ "ios"
61
+ ],
62
+ "description": "Platform"
63
+ },
64
+ "locale": {
65
+ "type": "string",
66
+ "minLength": 1,
67
+ "description": "Locale tag (e.g., ar-SA, ja-JP)"
68
+ },
69
+ "timeZone": {
70
+ "type": "string",
71
+ "minLength": 1,
72
+ "description": "Zone ID (e.g., America/Los_Angeles)"
73
+ },
74
+ "textDirection": {
75
+ "type": "string",
76
+ "enum": [
77
+ "ltr",
78
+ "rtl"
79
+ ],
80
+ "description": "Text direction"
81
+ },
82
+ "timeFormat": {
83
+ "type": "string",
84
+ "enum": [
85
+ "12",
86
+ "24"
87
+ ],
88
+ "description": "Time format"
89
+ },
90
+ "sessionUuid": {
91
+ "type": "string",
92
+ "description": "Session UUID for device targeting"
93
+ },
94
+ "keepScreenAwake": {
95
+ "type": "boolean",
96
+ "description": "Keep physical Android devices awake during the session (default: true)"
97
+ },
98
+ "device": {
99
+ "type": "string",
100
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
101
+ }
102
+ },
103
+ "required": [
104
+ "platform"
105
+ ],
106
+ "additionalProperties": false,
107
+ "$schema": "http://json-schema.org/draft-07/schema#"
108
+ }
109
+ },
110
+ {
111
+ "name": "clearText",
112
+ "description": "Clear text from focused input",
113
+ "inputSchema": {
114
+ "type": "object",
115
+ "properties": {
116
+ "platform": {
117
+ "type": "string",
118
+ "enum": [
119
+ "android",
120
+ "ios"
121
+ ],
122
+ "description": "Platform"
123
+ },
124
+ "sessionUuid": {
125
+ "type": "string",
126
+ "description": "Session UUID for device targeting"
127
+ },
128
+ "keepScreenAwake": {
129
+ "type": "boolean",
130
+ "description": "Keep physical Android devices awake during the session (default: true)"
131
+ },
132
+ "device": {
133
+ "type": "string",
134
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
135
+ }
136
+ },
137
+ "required": [
138
+ "platform"
139
+ ],
140
+ "additionalProperties": false,
141
+ "$schema": "http://json-schema.org/draft-07/schema#"
142
+ }
143
+ },
144
+ {
145
+ "name": "clipboard",
146
+ "description": "Clipboard operations (copy/paste/clear/get)",
147
+ "inputSchema": {
148
+ "type": "object",
149
+ "properties": {
150
+ "action": {
151
+ "type": "string",
152
+ "enum": [
153
+ "copy",
154
+ "paste",
155
+ "clear",
156
+ "get"
157
+ ],
158
+ "description": "Clipboard action: copy=set clipboard, paste=paste into focused field, clear=clear clipboard, get=get clipboard content"
159
+ },
160
+ "text": {
161
+ "type": "string",
162
+ "description": "Text to copy (required for 'copy' action)"
163
+ },
164
+ "platform": {
165
+ "type": "string",
166
+ "enum": [
167
+ "android",
168
+ "ios"
169
+ ],
170
+ "description": "Platform"
171
+ },
172
+ "sessionUuid": {
173
+ "type": "string",
174
+ "description": "Session UUID for device targeting"
175
+ },
176
+ "keepScreenAwake": {
177
+ "type": "boolean",
178
+ "description": "Keep physical Android devices awake during the session (default: true)"
179
+ },
180
+ "device": {
181
+ "type": "string",
182
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
183
+ }
184
+ },
185
+ "required": [
186
+ "action",
187
+ "platform"
188
+ ],
189
+ "additionalProperties": false,
190
+ "$schema": "http://json-schema.org/draft-07/schema#"
191
+ }
192
+ },
193
+ {
194
+ "name": "criticalSection",
195
+ "description": "Coordinate multiple devices at a synchronization barrier and execute steps serially. All devices must reach the critical section before any can proceed. Steps execute one device at a time in the order they acquire the lock.",
196
+ "inputSchema": {
197
+ "type": "object",
198
+ "properties": {
199
+ "lock": {
200
+ "type": "string",
201
+ "description": "Global lock identifier. All devices using the same lock name will wait for each other at this barrier."
202
+ },
203
+ "steps": {
204
+ "type": "array",
205
+ "items": {
206
+ "type": "object",
207
+ "properties": {
208
+ "tool": {
209
+ "type": "string",
210
+ "description": "Tool name to execute"
211
+ },
212
+ "params": {
213
+ "type": "object",
214
+ "additionalProperties": {},
215
+ "description": "Tool-specific parameters"
216
+ },
217
+ "label": {
218
+ "type": "string",
219
+ "description": "Optional human-readable label"
220
+ }
221
+ },
222
+ "required": [
223
+ "tool",
224
+ "params"
225
+ ],
226
+ "additionalProperties": false
227
+ },
228
+ "minItems": 1,
229
+ "description": "Steps to execute serially within the critical section. Each step should target a specific device using the 'device' parameter."
230
+ },
231
+ "deviceCount": {
232
+ "type": "integer",
233
+ "exclusiveMinimum": 0,
234
+ "description": "Number of devices expected to reach this critical section. All devices must arrive before any can proceed."
235
+ },
236
+ "timeout": {
237
+ "type": "integer",
238
+ "exclusiveMinimum": 0,
239
+ "description": "Timeout in milliseconds for waiting at the barrier (default: 30000ms)"
240
+ }
241
+ },
242
+ "required": [
243
+ "lock",
244
+ "steps",
245
+ "deviceCount"
246
+ ],
247
+ "additionalProperties": false,
248
+ "$schema": "http://json-schema.org/draft-07/schema#"
249
+ }
250
+ },
251
+ {
252
+ "name": "demoMode",
253
+ "description": "Enable or disable demo mode for screenshots and screen recordings",
254
+ "inputSchema": {
255
+ "type": "object",
256
+ "properties": {
257
+ "action": {
258
+ "type": "string",
259
+ "enum": [
260
+ "enable",
261
+ "disable"
262
+ ],
263
+ "description": "Demo mode action"
264
+ },
265
+ "time": {
266
+ "type": "string",
267
+ "description": "Time in HHMM (e.g., 1000)"
268
+ },
269
+ "batteryLevel": {
270
+ "type": "number",
271
+ "minimum": 0,
272
+ "maximum": 100,
273
+ "description": "Battery % (0-100)"
274
+ },
275
+ "batteryPlugged": {
276
+ "type": "boolean",
277
+ "description": "Charging status"
278
+ },
279
+ "wifiLevel": {
280
+ "type": "number",
281
+ "minimum": 0,
282
+ "maximum": 4,
283
+ "description": "WiFi strength (0-4)"
284
+ },
285
+ "mobileDataType": {
286
+ "type": "string",
287
+ "enum": [
288
+ "4g",
289
+ "5g",
290
+ "lte",
291
+ "3g",
292
+ "edge",
293
+ "none"
294
+ ],
295
+ "description": "Data type"
296
+ },
297
+ "mobileSignalLevel": {
298
+ "type": "number",
299
+ "minimum": 0,
300
+ "maximum": 4,
301
+ "description": "Signal strength (0-4)"
302
+ },
303
+ "hideNotifications": {
304
+ "type": "boolean",
305
+ "description": "Hide notifications"
306
+ },
307
+ "platform": {
308
+ "type": "string",
309
+ "enum": [
310
+ "android",
311
+ "ios"
312
+ ],
313
+ "description": "Platform"
314
+ },
315
+ "sessionUuid": {
316
+ "type": "string",
317
+ "description": "Session UUID for device targeting"
318
+ },
319
+ "keepScreenAwake": {
320
+ "type": "boolean",
321
+ "description": "Keep physical Android devices awake during the session (default: true)"
322
+ },
323
+ "device": {
324
+ "type": "string",
325
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
326
+ }
327
+ },
328
+ "required": [
329
+ "action",
330
+ "platform"
331
+ ],
332
+ "additionalProperties": false,
333
+ "$schema": "http://json-schema.org/draft-07/schema#"
334
+ }
335
+ },
336
+ {
337
+ "name": "deviceSnapshot",
338
+ "description": "Capture or restore a device snapshot for the active device.",
339
+ "inputSchema": {
340
+ "type": "object",
341
+ "properties": {
342
+ "action": {
343
+ "type": "string",
344
+ "enum": [
345
+ "capture",
346
+ "restore"
347
+ ],
348
+ "description": "Action to perform"
349
+ },
350
+ "snapshotName": {
351
+ "type": "string",
352
+ "description": "Name for the snapshot"
353
+ },
354
+ "includeAppData": {
355
+ "type": "boolean",
356
+ "description": "Include app data directories in snapshot"
357
+ },
358
+ "includeSettings": {
359
+ "type": "boolean",
360
+ "description": "Include system settings in snapshot"
361
+ },
362
+ "useVmSnapshot": {
363
+ "type": "boolean",
364
+ "description": "Use emulator VM snapshot if available (faster, emulator only)"
365
+ },
366
+ "strictBackupMode": {
367
+ "type": "boolean",
368
+ "description": "If true, fail entire snapshot if app data backup fails or times out"
369
+ },
370
+ "backupTimeoutMs": {
371
+ "type": "number",
372
+ "description": "Timeout in milliseconds for adb backup user confirmation"
373
+ },
374
+ "userApps": {
375
+ "type": "string",
376
+ "enum": [
377
+ "current",
378
+ "all"
379
+ ],
380
+ "description": "Which apps to backup: 'current' (foreground app only) or 'all' (all user-installed apps)"
381
+ },
382
+ "vmSnapshotTimeoutMs": {
383
+ "type": "number",
384
+ "description": "Timeout in milliseconds for emulator VM snapshot commands"
385
+ },
386
+ "sessionUuid": {
387
+ "type": "string",
388
+ "description": "Session UUID for device targeting"
389
+ },
390
+ "keepScreenAwake": {
391
+ "type": "boolean",
392
+ "description": "Keep physical Android devices awake during the session (default: true)"
393
+ },
394
+ "device": {
395
+ "type": "string",
396
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
397
+ }
398
+ },
399
+ "required": [
400
+ "action"
401
+ ],
402
+ "additionalProperties": false,
403
+ "$schema": "http://json-schema.org/draft-07/schema#"
404
+ }
405
+ },
406
+ {
407
+ "name": "doctor",
408
+ "description": "Run diagnostic checks to verify AutoMobile setup and environment configuration",
409
+ "inputSchema": {
410
+ "type": "object",
411
+ "properties": {
412
+ "android": {
413
+ "type": "boolean",
414
+ "description": "Run Android-specific checks only"
415
+ },
416
+ "ios": {
417
+ "type": "boolean",
418
+ "description": "Run iOS-specific checks only"
419
+ },
420
+ "installCmdlineTools": {
421
+ "type": "boolean",
422
+ "description": "Automatically download and install Android SDK Command-line Tools to ANDROID_HOME if missing"
423
+ }
424
+ },
425
+ "additionalProperties": false,
426
+ "$schema": "http://json-schema.org/draft-07/schema#"
427
+ }
428
+ },
429
+ {
430
+ "name": "dragAndDrop",
431
+ "description": "Drag and drop element",
432
+ "inputSchema": {
433
+ "type": "object",
434
+ "properties": {
435
+ "source": {
436
+ "anyOf": [
437
+ {
438
+ "type": "object",
439
+ "properties": {
440
+ "text": {
441
+ "type": "string",
442
+ "description": "Source text"
443
+ }
444
+ },
445
+ "required": [
446
+ "text"
447
+ ],
448
+ "additionalProperties": false
449
+ },
450
+ {
451
+ "type": "object",
452
+ "properties": {
453
+ "elementId": {
454
+ "type": "string",
455
+ "description": "Source ID"
456
+ }
457
+ },
458
+ "required": [
459
+ "elementId"
460
+ ],
461
+ "additionalProperties": false
462
+ }
463
+ ],
464
+ "description": "Source element"
465
+ },
466
+ "target": {
467
+ "anyOf": [
468
+ {
469
+ "type": "object",
470
+ "properties": {
471
+ "text": {
472
+ "type": "string",
473
+ "description": "Target text"
474
+ }
475
+ },
476
+ "required": [
477
+ "text"
478
+ ],
479
+ "additionalProperties": false
480
+ },
481
+ {
482
+ "type": "object",
483
+ "properties": {
484
+ "elementId": {
485
+ "type": "string",
486
+ "description": "Target ID"
487
+ }
488
+ },
489
+ "required": [
490
+ "elementId"
491
+ ],
492
+ "additionalProperties": false
493
+ }
494
+ ],
495
+ "description": "Target element"
496
+ },
497
+ "pressDurationMs": {
498
+ "type": "number",
499
+ "minimum": 600,
500
+ "maximum": 3000,
501
+ "description": "Press duration ms (min: 600, max: 3000, default: 600)"
502
+ },
503
+ "dragDurationMs": {
504
+ "type": "number",
505
+ "minimum": 300,
506
+ "maximum": 1000,
507
+ "description": "Drag duration ms (min: 300, max: 1000, default: 300)"
508
+ },
509
+ "holdDurationMs": {
510
+ "type": "number",
511
+ "minimum": 100,
512
+ "maximum": 3000,
513
+ "description": "Hold duration ms (min: 100, max: 3000, default: 100)"
514
+ },
515
+ "platform": {
516
+ "type": "string",
517
+ "enum": [
518
+ "android",
519
+ "ios"
520
+ ],
521
+ "description": "Platform"
522
+ },
523
+ "sessionUuid": {
524
+ "type": "string",
525
+ "description": "Session UUID for device targeting"
526
+ },
527
+ "keepScreenAwake": {
528
+ "type": "boolean",
529
+ "description": "Keep physical Android devices awake during the session (default: true)"
530
+ },
531
+ "device": {
532
+ "type": "string",
533
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
534
+ }
535
+ },
536
+ "required": [
537
+ "source",
538
+ "target",
539
+ "platform"
540
+ ],
541
+ "additionalProperties": false,
542
+ "$schema": "http://json-schema.org/draft-07/schema#"
543
+ }
544
+ },
545
+ {
546
+ "name": "executePlan",
547
+ "description": "Execute a series of tool calls from a YAML plan content. Stops execution if any step fails (success: false). Optionally can resume execution from a specific step index.",
548
+ "inputSchema": {
549
+ "type": "object",
550
+ "properties": {
551
+ "planContent": {
552
+ "type": "string",
553
+ "description": "YAML plan content"
554
+ },
555
+ "startStep": {
556
+ "type": "number",
557
+ "default": 0,
558
+ "description": "Start step index (0-based, default: 0)"
559
+ },
560
+ "platform": {
561
+ "type": "string",
562
+ "enum": [
563
+ "android",
564
+ "ios"
565
+ ],
566
+ "description": "Platform"
567
+ },
568
+ "sessionUuid": {
569
+ "type": "string",
570
+ "description": "Session UUID for parallel execution"
571
+ },
572
+ "keepScreenAwake": {
573
+ "type": "boolean",
574
+ "description": "Keep physical Android devices awake during the session (default: true)"
575
+ },
576
+ "deviceId": {
577
+ "type": "string",
578
+ "description": "Device ID"
579
+ },
580
+ "device": {
581
+ "type": "string",
582
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
583
+ },
584
+ "devices": {
585
+ "type": "array",
586
+ "items": {
587
+ "type": "string"
588
+ },
589
+ "description": "Device labels for multi-device plans"
590
+ },
591
+ "deviceAllocationTimeoutMs": {
592
+ "type": "number",
593
+ "default": 300000,
594
+ "description": "Timeout in milliseconds for allocating all devices (default: 300000 = 5 minutes)"
595
+ },
596
+ "abortStrategy": {
597
+ "type": "string",
598
+ "enum": [
599
+ "immediate",
600
+ "finish-current-step"
601
+ ],
602
+ "default": "immediate",
603
+ "description": "Abort strategy: immediate (default) or finish-current-step"
604
+ },
605
+ "testMetadata": {
606
+ "type": "object",
607
+ "properties": {
608
+ "testClass": {
609
+ "type": "string"
610
+ },
611
+ "testMethod": {
612
+ "type": "string"
613
+ },
614
+ "appVersion": {
615
+ "type": "string"
616
+ },
617
+ "gitCommit": {
618
+ "type": "string"
619
+ },
620
+ "targetSdk": {
621
+ "type": "integer",
622
+ "exclusiveMinimum": 0
623
+ },
624
+ "jdkVersion": {
625
+ "type": "string"
626
+ },
627
+ "jvmTarget": {
628
+ "type": "string"
629
+ },
630
+ "gradleVersion": {
631
+ "type": "string"
632
+ },
633
+ "isCi": {
634
+ "type": "boolean"
635
+ }
636
+ },
637
+ "required": [
638
+ "testClass",
639
+ "testMethod"
640
+ ],
641
+ "additionalProperties": false,
642
+ "description": "Test metadata for timing history"
643
+ },
644
+ "cleanupAppId": {
645
+ "type": "string",
646
+ "description": "App ID to terminate after execution"
647
+ },
648
+ "cleanupClearAppData": {
649
+ "type": "boolean",
650
+ "description": "Clear app data on cleanup"
651
+ }
652
+ },
653
+ "required": [
654
+ "planContent",
655
+ "platform"
656
+ ],
657
+ "additionalProperties": false,
658
+ "$schema": "http://json-schema.org/draft-07/schema#"
659
+ },
660
+ "outputSchema": {
661
+ "type": "object",
662
+ "properties": {
663
+ "success": {
664
+ "type": "boolean"
665
+ },
666
+ "executedSteps": {
667
+ "type": "integer"
668
+ },
669
+ "totalSteps": {
670
+ "type": "integer"
671
+ },
672
+ "failedStep": {
673
+ "type": "object",
674
+ "properties": {
675
+ "stepIndex": {
676
+ "type": "integer"
677
+ },
678
+ "tool": {
679
+ "type": "string"
680
+ },
681
+ "error": {
682
+ "type": "string"
683
+ },
684
+ "device": {
685
+ "type": "string"
686
+ }
687
+ },
688
+ "required": [
689
+ "stepIndex",
690
+ "tool",
691
+ "error"
692
+ ],
693
+ "additionalProperties": false
694
+ },
695
+ "error": {
696
+ "type": "string"
697
+ },
698
+ "platform": {
699
+ "type": "string",
700
+ "enum": [
701
+ "android",
702
+ "ios"
703
+ ]
704
+ },
705
+ "deviceMapping": {
706
+ "type": "object",
707
+ "additionalProperties": {
708
+ "type": "string"
709
+ }
710
+ },
711
+ "debug": {
712
+ "type": "object",
713
+ "properties": {
714
+ "executionTimeMs": {
715
+ "type": "integer"
716
+ },
717
+ "steps": {
718
+ "type": "array",
719
+ "items": {
720
+ "type": "object",
721
+ "properties": {
722
+ "step": {
723
+ "type": "string"
724
+ },
725
+ "status": {
726
+ "type": "string",
727
+ "enum": [
728
+ "completed",
729
+ "failed",
730
+ "skipped"
731
+ ]
732
+ },
733
+ "durationMs": {
734
+ "type": "integer"
735
+ },
736
+ "details": {}
737
+ },
738
+ "required": [
739
+ "step",
740
+ "status",
741
+ "durationMs"
742
+ ],
743
+ "additionalProperties": false
744
+ }
745
+ },
746
+ "deviceState": {
747
+ "type": "object",
748
+ "properties": {
749
+ "currentActivity": {
750
+ "type": "string"
751
+ },
752
+ "focusedWindow": {
753
+ "type": "string"
754
+ }
755
+ },
756
+ "additionalProperties": false
757
+ }
758
+ },
759
+ "required": [
760
+ "executionTimeMs",
761
+ "steps"
762
+ ],
763
+ "additionalProperties": false
764
+ }
765
+ },
766
+ "required": [
767
+ "success",
768
+ "executedSteps",
769
+ "totalSteps"
770
+ ],
771
+ "additionalProperties": true,
772
+ "$schema": "http://json-schema.org/draft-07/schema#"
773
+ }
774
+ },
775
+ {
776
+ "name": "explore",
777
+ "description": "Automatically explore app to build navigation graph",
778
+ "inputSchema": {
779
+ "type": "object",
780
+ "properties": {
781
+ "maxInteractions": {
782
+ "type": "number",
783
+ "description": "Max interactions (default: 50)"
784
+ },
785
+ "timeoutMs": {
786
+ "type": "number",
787
+ "description": "Timeout ms (default: 300000)"
788
+ },
789
+ "strategy": {
790
+ "type": "string",
791
+ "enum": [
792
+ "breadth-first",
793
+ "depth-first",
794
+ "weighted"
795
+ ],
796
+ "description": "Strategy (default: weighted)"
797
+ },
798
+ "resetToHome": {
799
+ "type": "boolean",
800
+ "description": "Reset to home periodically (default: false)"
801
+ },
802
+ "resetInterval": {
803
+ "type": "number",
804
+ "description": "Reset interval (default: 15)"
805
+ },
806
+ "mode": {
807
+ "type": "string",
808
+ "enum": [
809
+ "discover",
810
+ "validate",
811
+ "hybrid"
812
+ ],
813
+ "description": "Mode (default: hybrid)"
814
+ },
815
+ "packageName": {
816
+ "type": "string",
817
+ "description": "Package to limit exploration"
818
+ },
819
+ "dryRun": {
820
+ "type": "boolean",
821
+ "description": "Dry run (no interactions)"
822
+ },
823
+ "platform": {
824
+ "type": "string",
825
+ "enum": [
826
+ "android",
827
+ "ios"
828
+ ],
829
+ "default": "android"
830
+ },
831
+ "sessionUuid": {
832
+ "type": "string",
833
+ "description": "Session UUID for device targeting"
834
+ },
835
+ "keepScreenAwake": {
836
+ "type": "boolean",
837
+ "description": "Keep physical Android devices awake during the session (default: true)"
838
+ },
839
+ "device": {
840
+ "type": "string",
841
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
842
+ }
843
+ },
844
+ "additionalProperties": false,
845
+ "$schema": "http://json-schema.org/draft-07/schema#"
846
+ }
847
+ },
848
+ {
849
+ "name": "getDeepLinks",
850
+ "description": "Query deep links for app",
851
+ "inputSchema": {
852
+ "type": "object",
853
+ "properties": {
854
+ "appId": {
855
+ "type": "string",
856
+ "description": "App package ID"
857
+ },
858
+ "sessionUuid": {
859
+ "type": "string",
860
+ "description": "Session UUID for device targeting"
861
+ },
862
+ "keepScreenAwake": {
863
+ "type": "boolean",
864
+ "description": "Keep physical Android devices awake during the session (default: true)"
865
+ },
866
+ "device": {
867
+ "type": "string",
868
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
869
+ }
870
+ },
871
+ "required": [
872
+ "appId"
873
+ ],
874
+ "additionalProperties": false,
875
+ "$schema": "http://json-schema.org/draft-07/schema#"
876
+ }
877
+ },
878
+ {
879
+ "name": "highlight",
880
+ "description": "Draw a visual highlight (box or circle) on the device screen for debugging.",
881
+ "inputSchema": {
882
+ "type": "object",
883
+ "properties": {
884
+ "platform": {
885
+ "type": "string",
886
+ "enum": [
887
+ "android",
888
+ "ios"
889
+ ],
890
+ "description": "Target platform"
891
+ },
892
+ "deviceId": {
893
+ "type": "string",
894
+ "description": "Optional device ID override"
895
+ },
896
+ "timeoutMs": {
897
+ "type": "integer",
898
+ "exclusiveMinimum": 0,
899
+ "description": "Highlight request timeout ms (default: 5000)"
900
+ },
901
+ "sessionUuid": {
902
+ "type": "string",
903
+ "description": "Session UUID for device targeting"
904
+ },
905
+ "keepScreenAwake": {
906
+ "type": "boolean",
907
+ "description": "Keep physical Android devices awake during the session (default: true)"
908
+ },
909
+ "device": {
910
+ "type": "string",
911
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
912
+ },
913
+ "shape": {
914
+ "anyOf": [
915
+ {
916
+ "type": "object",
917
+ "properties": {
918
+ "type": {
919
+ "type": "string",
920
+ "const": "box"
921
+ },
922
+ "bounds": {
923
+ "type": "object",
924
+ "properties": {
925
+ "x": {
926
+ "type": "integer"
927
+ },
928
+ "y": {
929
+ "type": "integer"
930
+ },
931
+ "width": {
932
+ "type": "integer",
933
+ "exclusiveMinimum": 0
934
+ },
935
+ "height": {
936
+ "type": "integer",
937
+ "exclusiveMinimum": 0
938
+ },
939
+ "sourceWidth": {
940
+ "anyOf": [
941
+ {
942
+ "type": "integer",
943
+ "exclusiveMinimum": 0
944
+ },
945
+ {
946
+ "type": "null"
947
+ }
948
+ ]
949
+ },
950
+ "sourceHeight": {
951
+ "anyOf": [
952
+ {
953
+ "type": "integer",
954
+ "exclusiveMinimum": 0
955
+ },
956
+ {
957
+ "type": "null"
958
+ }
959
+ ]
960
+ }
961
+ },
962
+ "required": [
963
+ "x",
964
+ "y",
965
+ "width",
966
+ "height"
967
+ ],
968
+ "additionalProperties": false
969
+ },
970
+ "style": {
971
+ "anyOf": [
972
+ {
973
+ "type": "object",
974
+ "properties": {
975
+ "strokeColor": {
976
+ "anyOf": [
977
+ {
978
+ "type": "string",
979
+ "minLength": 1
980
+ },
981
+ {
982
+ "type": "null"
983
+ }
984
+ ]
985
+ },
986
+ "strokeWidth": {
987
+ "anyOf": [
988
+ {
989
+ "type": "number",
990
+ "exclusiveMinimum": 0
991
+ },
992
+ {
993
+ "type": "null"
994
+ }
995
+ ]
996
+ },
997
+ "dashPattern": {
998
+ "anyOf": [
999
+ {
1000
+ "type": "array",
1001
+ "items": {
1002
+ "type": "number",
1003
+ "exclusiveMinimum": 0
1004
+ },
1005
+ "minItems": 1
1006
+ },
1007
+ {
1008
+ "type": "null"
1009
+ }
1010
+ ]
1011
+ },
1012
+ "smoothing": {
1013
+ "anyOf": [
1014
+ {
1015
+ "type": "string",
1016
+ "enum": [
1017
+ "none",
1018
+ "catmull-rom",
1019
+ "bezier",
1020
+ "douglas-peucker"
1021
+ ]
1022
+ },
1023
+ {
1024
+ "type": "null"
1025
+ }
1026
+ ]
1027
+ },
1028
+ "tension": {
1029
+ "anyOf": [
1030
+ {
1031
+ "type": "number",
1032
+ "minimum": 0,
1033
+ "maximum": 1
1034
+ },
1035
+ {
1036
+ "type": "null"
1037
+ }
1038
+ ]
1039
+ },
1040
+ "capStyle": {
1041
+ "anyOf": [
1042
+ {
1043
+ "type": "string",
1044
+ "enum": [
1045
+ "butt",
1046
+ "round",
1047
+ "square"
1048
+ ]
1049
+ },
1050
+ {
1051
+ "type": "null"
1052
+ }
1053
+ ]
1054
+ },
1055
+ "joinStyle": {
1056
+ "anyOf": [
1057
+ {
1058
+ "type": "string",
1059
+ "enum": [
1060
+ "miter",
1061
+ "round",
1062
+ "bevel"
1063
+ ]
1064
+ },
1065
+ {
1066
+ "type": "null"
1067
+ }
1068
+ ]
1069
+ }
1070
+ },
1071
+ "additionalProperties": false
1072
+ },
1073
+ {
1074
+ "type": "null"
1075
+ }
1076
+ ]
1077
+ }
1078
+ },
1079
+ "required": [
1080
+ "type",
1081
+ "bounds"
1082
+ ],
1083
+ "additionalProperties": false
1084
+ },
1085
+ {
1086
+ "type": "object",
1087
+ "properties": {
1088
+ "type": {
1089
+ "type": "string",
1090
+ "const": "circle"
1091
+ },
1092
+ "bounds": {
1093
+ "$ref": "#/properties/shape/anyOf/0/properties/bounds"
1094
+ },
1095
+ "style": {
1096
+ "anyOf": [
1097
+ {
1098
+ "$ref": "#/properties/shape/anyOf/0/properties/style/anyOf/0"
1099
+ },
1100
+ {
1101
+ "type": "null"
1102
+ }
1103
+ ]
1104
+ }
1105
+ },
1106
+ "required": [
1107
+ "type",
1108
+ "bounds"
1109
+ ],
1110
+ "additionalProperties": false
1111
+ },
1112
+ {
1113
+ "type": "object",
1114
+ "properties": {
1115
+ "type": {
1116
+ "type": "string",
1117
+ "const": "path"
1118
+ },
1119
+ "points": {
1120
+ "type": "array",
1121
+ "items": {
1122
+ "type": "object",
1123
+ "properties": {
1124
+ "x": {
1125
+ "type": "number"
1126
+ },
1127
+ "y": {
1128
+ "type": "number"
1129
+ }
1130
+ },
1131
+ "required": [
1132
+ "x",
1133
+ "y"
1134
+ ],
1135
+ "additionalProperties": false
1136
+ },
1137
+ "minItems": 2
1138
+ },
1139
+ "bounds": {
1140
+ "anyOf": [
1141
+ {
1142
+ "$ref": "#/properties/shape/anyOf/0/properties/bounds"
1143
+ },
1144
+ {
1145
+ "type": "null"
1146
+ }
1147
+ ]
1148
+ },
1149
+ "style": {
1150
+ "anyOf": [
1151
+ {
1152
+ "$ref": "#/properties/shape/anyOf/0/properties/style/anyOf/0"
1153
+ },
1154
+ {
1155
+ "type": "null"
1156
+ }
1157
+ ]
1158
+ }
1159
+ },
1160
+ "required": [
1161
+ "type",
1162
+ "points"
1163
+ ],
1164
+ "additionalProperties": false
1165
+ }
1166
+ ],
1167
+ "description": "Highlight shape definition"
1168
+ }
1169
+ },
1170
+ "required": [
1171
+ "platform",
1172
+ "shape"
1173
+ ],
1174
+ "additionalProperties": false,
1175
+ "$schema": "http://json-schema.org/draft-07/schema#"
1176
+ }
1177
+ },
1178
+ {
1179
+ "name": "homeScreen",
1180
+ "description": "Go to home screen",
1181
+ "inputSchema": {
1182
+ "type": "object",
1183
+ "properties": {
1184
+ "platform": {
1185
+ "type": "string",
1186
+ "enum": [
1187
+ "android",
1188
+ "ios"
1189
+ ],
1190
+ "description": "Platform"
1191
+ },
1192
+ "sessionUuid": {
1193
+ "type": "string",
1194
+ "description": "Session UUID for device targeting"
1195
+ },
1196
+ "keepScreenAwake": {
1197
+ "type": "boolean",
1198
+ "description": "Keep physical Android devices awake during the session (default: true)"
1199
+ },
1200
+ "device": {
1201
+ "type": "string",
1202
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1203
+ }
1204
+ },
1205
+ "required": [
1206
+ "platform"
1207
+ ],
1208
+ "additionalProperties": false,
1209
+ "$schema": "http://json-schema.org/draft-07/schema#"
1210
+ }
1211
+ },
1212
+ {
1213
+ "name": "imeAction",
1214
+ "description": "Perform IME action",
1215
+ "inputSchema": {
1216
+ "type": "object",
1217
+ "properties": {
1218
+ "action": {
1219
+ "type": "string",
1220
+ "enum": [
1221
+ "done",
1222
+ "next",
1223
+ "search",
1224
+ "send",
1225
+ "go",
1226
+ "previous"
1227
+ ],
1228
+ "description": "IME action"
1229
+ },
1230
+ "platform": {
1231
+ "type": "string",
1232
+ "enum": [
1233
+ "android",
1234
+ "ios"
1235
+ ],
1236
+ "description": "Platform"
1237
+ },
1238
+ "sessionUuid": {
1239
+ "type": "string",
1240
+ "description": "Session UUID for device targeting"
1241
+ },
1242
+ "keepScreenAwake": {
1243
+ "type": "boolean",
1244
+ "description": "Keep physical Android devices awake during the session (default: true)"
1245
+ },
1246
+ "device": {
1247
+ "type": "string",
1248
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1249
+ }
1250
+ },
1251
+ "required": [
1252
+ "action",
1253
+ "platform"
1254
+ ],
1255
+ "additionalProperties": false,
1256
+ "$schema": "http://json-schema.org/draft-07/schema#"
1257
+ }
1258
+ },
1259
+ {
1260
+ "name": "inputText",
1261
+ "description": "Input text",
1262
+ "inputSchema": {
1263
+ "type": "object",
1264
+ "properties": {
1265
+ "text": {
1266
+ "type": "string",
1267
+ "description": "Text to input"
1268
+ },
1269
+ "imeAction": {
1270
+ "type": "string",
1271
+ "enum": [
1272
+ "done",
1273
+ "next",
1274
+ "search",
1275
+ "send",
1276
+ "go",
1277
+ "previous"
1278
+ ],
1279
+ "description": "IME action after input"
1280
+ },
1281
+ "platform": {
1282
+ "type": "string",
1283
+ "enum": [
1284
+ "android",
1285
+ "ios"
1286
+ ],
1287
+ "description": "Platform"
1288
+ },
1289
+ "sessionUuid": {
1290
+ "type": "string",
1291
+ "description": "Session UUID for device targeting"
1292
+ },
1293
+ "keepScreenAwake": {
1294
+ "type": "boolean",
1295
+ "description": "Keep physical Android devices awake during the session (default: true)"
1296
+ },
1297
+ "device": {
1298
+ "type": "string",
1299
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1300
+ }
1301
+ },
1302
+ "required": [
1303
+ "text",
1304
+ "platform"
1305
+ ],
1306
+ "additionalProperties": false,
1307
+ "$schema": "http://json-schema.org/draft-07/schema#"
1308
+ }
1309
+ },
1310
+ {
1311
+ "name": "installApp",
1312
+ "description": "Install APK file",
1313
+ "inputSchema": {
1314
+ "type": "object",
1315
+ "properties": {
1316
+ "apkPath": {
1317
+ "type": "string",
1318
+ "description": "APK file path"
1319
+ },
1320
+ "sessionUuid": {
1321
+ "type": "string",
1322
+ "description": "Session UUID for device targeting"
1323
+ },
1324
+ "keepScreenAwake": {
1325
+ "type": "boolean",
1326
+ "description": "Keep physical Android devices awake during the session (default: true)"
1327
+ },
1328
+ "device": {
1329
+ "type": "string",
1330
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1331
+ }
1332
+ },
1333
+ "required": [
1334
+ "apkPath"
1335
+ ],
1336
+ "additionalProperties": false,
1337
+ "$schema": "http://json-schema.org/draft-07/schema#"
1338
+ }
1339
+ },
1340
+ {
1341
+ "name": "killDevice",
1342
+ "description": "Kill device",
1343
+ "inputSchema": {
1344
+ "type": "object",
1345
+ "properties": {
1346
+ "device": {
1347
+ "type": "object",
1348
+ "properties": {
1349
+ "name": {
1350
+ "type": "string",
1351
+ "description": "Device image name"
1352
+ },
1353
+ "deviceId": {
1354
+ "type": "string",
1355
+ "description": "Device ID"
1356
+ },
1357
+ "platform": {
1358
+ "type": "string",
1359
+ "enum": [
1360
+ "android",
1361
+ "ios"
1362
+ ],
1363
+ "description": "Platform"
1364
+ }
1365
+ },
1366
+ "required": [
1367
+ "name",
1368
+ "deviceId",
1369
+ "platform"
1370
+ ],
1371
+ "additionalProperties": false
1372
+ }
1373
+ },
1374
+ "required": [
1375
+ "device"
1376
+ ],
1377
+ "additionalProperties": false,
1378
+ "$schema": "http://json-schema.org/draft-07/schema#"
1379
+ }
1380
+ },
1381
+ {
1382
+ "name": "launchApp",
1383
+ "description": "Launch app by package name",
1384
+ "inputSchema": {
1385
+ "type": "object",
1386
+ "properties": {
1387
+ "appId": {
1388
+ "type": "string",
1389
+ "description": "App package ID"
1390
+ },
1391
+ "clearAppData": {
1392
+ "type": "boolean",
1393
+ "description": "Clear app data before launch (default false)"
1394
+ },
1395
+ "coldBoot": {
1396
+ "type": "boolean",
1397
+ "description": "Cold boot app (default false)"
1398
+ },
1399
+ "sessionUuid": {
1400
+ "type": "string",
1401
+ "description": "Session UUID for device targeting"
1402
+ },
1403
+ "keepScreenAwake": {
1404
+ "type": "boolean",
1405
+ "description": "Keep physical Android devices awake during the session (default: true)"
1406
+ },
1407
+ "device": {
1408
+ "type": "string",
1409
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1410
+ }
1411
+ },
1412
+ "required": [
1413
+ "appId"
1414
+ ],
1415
+ "additionalProperties": false,
1416
+ "$schema": "http://json-schema.org/draft-07/schema#"
1417
+ }
1418
+ },
1419
+ {
1420
+ "name": "listDeviceImages",
1421
+ "description": "List device images",
1422
+ "inputSchema": {
1423
+ "type": "object",
1424
+ "properties": {
1425
+ "platform": {
1426
+ "type": "string",
1427
+ "enum": [
1428
+ "android",
1429
+ "ios"
1430
+ ],
1431
+ "description": "Platform"
1432
+ }
1433
+ },
1434
+ "required": [
1435
+ "platform"
1436
+ ],
1437
+ "additionalProperties": false,
1438
+ "$schema": "http://json-schema.org/draft-07/schema#"
1439
+ }
1440
+ },
1441
+ {
1442
+ "name": "navigateTo",
1443
+ "description": "Navigate to screen using navigation graph",
1444
+ "inputSchema": {
1445
+ "type": "object",
1446
+ "properties": {
1447
+ "targetScreen": {
1448
+ "type": "string",
1449
+ "description": "Target screen name"
1450
+ },
1451
+ "platform": {
1452
+ "type": "string",
1453
+ "enum": [
1454
+ "android",
1455
+ "ios"
1456
+ ],
1457
+ "default": "android"
1458
+ },
1459
+ "sessionUuid": {
1460
+ "type": "string",
1461
+ "description": "Session UUID for device targeting"
1462
+ },
1463
+ "keepScreenAwake": {
1464
+ "type": "boolean",
1465
+ "description": "Keep physical Android devices awake during the session (default: true)"
1466
+ },
1467
+ "device": {
1468
+ "type": "string",
1469
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1470
+ }
1471
+ },
1472
+ "required": [
1473
+ "targetScreen"
1474
+ ],
1475
+ "additionalProperties": false,
1476
+ "$schema": "http://json-schema.org/draft-07/schema#"
1477
+ }
1478
+ },
1479
+ {
1480
+ "name": "observe",
1481
+ "description": "Get screen view hierarchy",
1482
+ "inputSchema": {
1483
+ "type": "object",
1484
+ "properties": {
1485
+ "platform": {
1486
+ "type": "string",
1487
+ "enum": [
1488
+ "android",
1489
+ "ios"
1490
+ ],
1491
+ "description": "Platform"
1492
+ },
1493
+ "waitFor": {
1494
+ "type": "object",
1495
+ "properties": {
1496
+ "element": {
1497
+ "type": "object",
1498
+ "properties": {
1499
+ "id": {
1500
+ "type": "string",
1501
+ "description": "Element ID to wait for"
1502
+ },
1503
+ "text": {
1504
+ "type": "string",
1505
+ "description": "Element text to wait for"
1506
+ }
1507
+ },
1508
+ "additionalProperties": false,
1509
+ "description": "Element to wait for"
1510
+ },
1511
+ "timeout": {
1512
+ "type": "number",
1513
+ "description": "Wait timeout ms (default: 5000)"
1514
+ }
1515
+ },
1516
+ "required": [
1517
+ "element"
1518
+ ],
1519
+ "additionalProperties": false,
1520
+ "description": "Wait for element to appear before returning observation"
1521
+ },
1522
+ "sessionUuid": {
1523
+ "type": "string",
1524
+ "description": "Session UUID for device targeting"
1525
+ },
1526
+ "keepScreenAwake": {
1527
+ "type": "boolean",
1528
+ "description": "Keep physical Android devices awake during the session (default: true)"
1529
+ },
1530
+ "device": {
1531
+ "type": "string",
1532
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
1533
+ }
1534
+ },
1535
+ "required": [
1536
+ "platform"
1537
+ ],
1538
+ "additionalProperties": false,
1539
+ "$schema": "http://json-schema.org/draft-07/schema#"
1540
+ },
1541
+ "outputSchema": {
1542
+ "type": "object",
1543
+ "properties": {
1544
+ "updatedAt": {
1545
+ "type": [
1546
+ "string",
1547
+ "number"
1548
+ ]
1549
+ },
1550
+ "screenSize": {
1551
+ "type": "object",
1552
+ "properties": {
1553
+ "width": {
1554
+ "type": "integer"
1555
+ },
1556
+ "height": {
1557
+ "type": "integer"
1558
+ }
1559
+ },
1560
+ "required": [
1561
+ "width",
1562
+ "height"
1563
+ ],
1564
+ "additionalProperties": false
1565
+ },
1566
+ "systemInsets": {
1567
+ "type": "object",
1568
+ "properties": {
1569
+ "top": {
1570
+ "type": "integer"
1571
+ },
1572
+ "right": {
1573
+ "type": "integer"
1574
+ },
1575
+ "bottom": {
1576
+ "type": "integer"
1577
+ },
1578
+ "left": {
1579
+ "type": "integer"
1580
+ }
1581
+ },
1582
+ "required": [
1583
+ "top",
1584
+ "right",
1585
+ "bottom",
1586
+ "left"
1587
+ ],
1588
+ "additionalProperties": false
1589
+ },
1590
+ "rotation": {
1591
+ "type": "integer"
1592
+ },
1593
+ "viewHierarchy": {},
1594
+ "activeWindow": {
1595
+ "type": "object",
1596
+ "properties": {
1597
+ "appId": {
1598
+ "type": "string"
1599
+ },
1600
+ "activityName": {
1601
+ "type": "string"
1602
+ },
1603
+ "layoutSeqSum": {
1604
+ "type": "integer"
1605
+ },
1606
+ "type": {
1607
+ "type": "string"
1608
+ }
1609
+ },
1610
+ "additionalProperties": true
1611
+ },
1612
+ "elements": {
1613
+ "type": "object",
1614
+ "properties": {
1615
+ "clickable": {
1616
+ "type": "array",
1617
+ "items": {
1618
+ "type": "object",
1619
+ "properties": {
1620
+ "bounds": {
1621
+ "type": "object",
1622
+ "properties": {
1623
+ "left": {
1624
+ "type": "integer"
1625
+ },
1626
+ "top": {
1627
+ "type": "integer"
1628
+ },
1629
+ "right": {
1630
+ "type": "integer"
1631
+ },
1632
+ "bottom": {
1633
+ "type": "integer"
1634
+ },
1635
+ "centerX": {
1636
+ "type": "integer"
1637
+ },
1638
+ "centerY": {
1639
+ "type": "integer"
1640
+ }
1641
+ },
1642
+ "required": [
1643
+ "left",
1644
+ "top",
1645
+ "right",
1646
+ "bottom"
1647
+ ],
1648
+ "additionalProperties": false
1649
+ },
1650
+ "text": {
1651
+ "type": "string"
1652
+ },
1653
+ "resource-id": {
1654
+ "type": "string"
1655
+ },
1656
+ "content-desc": {
1657
+ "type": "string"
1658
+ },
1659
+ "class": {
1660
+ "type": "string"
1661
+ },
1662
+ "package": {
1663
+ "type": "string"
1664
+ },
1665
+ "checkable": {
1666
+ "type": "boolean"
1667
+ },
1668
+ "checked": {
1669
+ "type": "boolean"
1670
+ },
1671
+ "clickable": {
1672
+ "type": "boolean"
1673
+ },
1674
+ "enabled": {
1675
+ "type": "boolean"
1676
+ },
1677
+ "focusable": {
1678
+ "type": "boolean"
1679
+ },
1680
+ "focused": {
1681
+ "type": "boolean"
1682
+ },
1683
+ "accessibility-focused": {
1684
+ "type": "boolean"
1685
+ },
1686
+ "scrollable": {
1687
+ "type": "boolean"
1688
+ },
1689
+ "selected": {
1690
+ "type": "boolean"
1691
+ }
1692
+ },
1693
+ "required": [
1694
+ "bounds"
1695
+ ],
1696
+ "additionalProperties": true
1697
+ }
1698
+ },
1699
+ "scrollable": {
1700
+ "type": "array",
1701
+ "items": {
1702
+ "$ref": "#/properties/elements/properties/clickable/items"
1703
+ }
1704
+ },
1705
+ "text": {
1706
+ "type": "array",
1707
+ "items": {
1708
+ "$ref": "#/properties/elements/properties/clickable/items"
1709
+ }
1710
+ }
1711
+ },
1712
+ "required": [
1713
+ "clickable",
1714
+ "scrollable",
1715
+ "text"
1716
+ ],
1717
+ "additionalProperties": false
1718
+ },
1719
+ "selectedElements": {
1720
+ "type": "array",
1721
+ "items": {
1722
+ "type": "object",
1723
+ "properties": {
1724
+ "text": {
1725
+ "type": "string"
1726
+ },
1727
+ "resourceId": {
1728
+ "type": "string"
1729
+ },
1730
+ "contentDesc": {
1731
+ "type": "string"
1732
+ },
1733
+ "bounds": {
1734
+ "$ref": "#/properties/elements/properties/clickable/items/properties/bounds"
1735
+ },
1736
+ "indexInMatches": {
1737
+ "type": "integer"
1738
+ },
1739
+ "totalMatches": {
1740
+ "type": "integer"
1741
+ },
1742
+ "selectionStrategy": {
1743
+ "type": "string"
1744
+ },
1745
+ "selectedState": {
1746
+ "type": "object",
1747
+ "properties": {
1748
+ "method": {
1749
+ "type": "string",
1750
+ "enum": [
1751
+ "accessibility",
1752
+ "visual"
1753
+ ]
1754
+ },
1755
+ "confidence": {
1756
+ "type": "number"
1757
+ },
1758
+ "reason": {
1759
+ "type": "string"
1760
+ }
1761
+ },
1762
+ "required": [
1763
+ "method",
1764
+ "confidence"
1765
+ ],
1766
+ "additionalProperties": false
1767
+ }
1768
+ },
1769
+ "additionalProperties": true
1770
+ }
1771
+ },
1772
+ "focusedElement": {
1773
+ "$ref": "#/properties/elements/properties/clickable/items"
1774
+ },
1775
+ "accessibilityFocusedElement": {
1776
+ "$ref": "#/properties/elements/properties/clickable/items"
1777
+ },
1778
+ "intentChooserDetected": {
1779
+ "type": "boolean"
1780
+ },
1781
+ "notificationPermissionDetected": {
1782
+ "type": "boolean"
1783
+ },
1784
+ "wakefulness": {
1785
+ "type": "string",
1786
+ "enum": [
1787
+ "Awake",
1788
+ "Asleep",
1789
+ "Dozing"
1790
+ ]
1791
+ },
1792
+ "userId": {
1793
+ "type": "integer"
1794
+ },
1795
+ "backStack": {},
1796
+ "error": {
1797
+ "type": "string"
1798
+ },
1799
+ "awaitedElement": {
1800
+ "$ref": "#/properties/elements/properties/clickable/items"
1801
+ },
1802
+ "awaitDuration": {
1803
+ "type": "integer"
1804
+ },
1805
+ "awaitTimeout": {
1806
+ "type": "boolean"
1807
+ },
1808
+ "perfTiming": {},
1809
+ "perfTimingTruncated": {
1810
+ "type": "boolean"
1811
+ },
1812
+ "gfxMetrics": {},
1813
+ "displayedTimeMetrics": {
1814
+ "type": "array"
1815
+ },
1816
+ "performanceAudit": {},
1817
+ "accessibilityAudit": {},
1818
+ "freshness": {
1819
+ "type": "object",
1820
+ "properties": {
1821
+ "requestedAfter": {
1822
+ "type": "integer"
1823
+ },
1824
+ "actualTimestamp": {
1825
+ "type": "integer"
1826
+ },
1827
+ "isFresh": {
1828
+ "type": "boolean"
1829
+ },
1830
+ "staleDurationMs": {
1831
+ "type": "integer"
1832
+ },
1833
+ "warning": {
1834
+ "type": "string"
1835
+ }
1836
+ },
1837
+ "required": [
1838
+ "isFresh"
1839
+ ],
1840
+ "additionalProperties": true
1841
+ },
1842
+ "recompositionSummary": {},
1843
+ "predictions": {
1844
+ "type": "object",
1845
+ "properties": {
1846
+ "likelyActions": {
1847
+ "type": "array",
1848
+ "items": {
1849
+ "type": "object",
1850
+ "properties": {
1851
+ "action": {
1852
+ "type": "string"
1853
+ },
1854
+ "target": {
1855
+ "type": "object",
1856
+ "properties": {
1857
+ "text": {
1858
+ "type": "string"
1859
+ },
1860
+ "elementId": {
1861
+ "type": "string"
1862
+ },
1863
+ "contentDesc": {
1864
+ "type": "string"
1865
+ },
1866
+ "container": {
1867
+ "type": "object",
1868
+ "properties": {
1869
+ "text": {
1870
+ "type": "string"
1871
+ },
1872
+ "elementId": {
1873
+ "type": "string"
1874
+ },
1875
+ "contentDesc": {
1876
+ "type": "string"
1877
+ }
1878
+ },
1879
+ "additionalProperties": false
1880
+ },
1881
+ "lookFor": {
1882
+ "type": "object",
1883
+ "properties": {
1884
+ "text": {
1885
+ "type": "string"
1886
+ },
1887
+ "elementId": {
1888
+ "type": "string"
1889
+ },
1890
+ "contentDesc": {
1891
+ "type": "string"
1892
+ }
1893
+ },
1894
+ "additionalProperties": false
1895
+ }
1896
+ },
1897
+ "additionalProperties": true
1898
+ },
1899
+ "predictedScreen": {
1900
+ "type": "string"
1901
+ },
1902
+ "predictedElements": {
1903
+ "type": "array",
1904
+ "items": {
1905
+ "type": "string"
1906
+ }
1907
+ },
1908
+ "confidence": {
1909
+ "type": "number"
1910
+ }
1911
+ },
1912
+ "required": [
1913
+ "action",
1914
+ "target",
1915
+ "predictedScreen",
1916
+ "confidence"
1917
+ ],
1918
+ "additionalProperties": true
1919
+ }
1920
+ },
1921
+ "interactableElements": {
1922
+ "type": "array",
1923
+ "items": {
1924
+ "type": "object",
1925
+ "properties": {
1926
+ "elementId": {
1927
+ "type": "string"
1928
+ },
1929
+ "elementText": {
1930
+ "type": "string"
1931
+ },
1932
+ "elementContentDesc": {
1933
+ "type": "string"
1934
+ },
1935
+ "predictedOutcome": {
1936
+ "type": "object",
1937
+ "properties": {
1938
+ "screenName": {
1939
+ "type": "string"
1940
+ },
1941
+ "basedOn": {
1942
+ "type": "string",
1943
+ "enum": [
1944
+ "navigation_graph"
1945
+ ]
1946
+ }
1947
+ },
1948
+ "required": [
1949
+ "screenName",
1950
+ "basedOn"
1951
+ ],
1952
+ "additionalProperties": false
1953
+ }
1954
+ },
1955
+ "additionalProperties": true
1956
+ }
1957
+ }
1958
+ },
1959
+ "required": [
1960
+ "likelyActions",
1961
+ "interactableElements"
1962
+ ],
1963
+ "additionalProperties": true
1964
+ },
1965
+ "accessibilityState": {
1966
+ "type": "object",
1967
+ "properties": {
1968
+ "enabled": {
1969
+ "type": "boolean"
1970
+ },
1971
+ "service": {
1972
+ "type": "string",
1973
+ "enum": [
1974
+ "talkback",
1975
+ "unknown"
1976
+ ]
1977
+ }
1978
+ },
1979
+ "required": [
1980
+ "enabled",
1981
+ "service"
1982
+ ],
1983
+ "additionalProperties": true
1984
+ }
1985
+ },
1986
+ "required": [
1987
+ "updatedAt",
1988
+ "screenSize",
1989
+ "systemInsets"
1990
+ ],
1991
+ "additionalProperties": true,
1992
+ "$schema": "http://json-schema.org/draft-07/schema#"
1993
+ }
1994
+ },
1995
+ {
1996
+ "name": "openLink",
1997
+ "description": "Open URL in browser",
1998
+ "inputSchema": {
1999
+ "type": "object",
2000
+ "properties": {
2001
+ "url": {
2002
+ "type": "string",
2003
+ "description": "URL to open"
2004
+ },
2005
+ "platform": {
2006
+ "type": "string",
2007
+ "enum": [
2008
+ "android",
2009
+ "ios"
2010
+ ],
2011
+ "description": "Platform"
2012
+ },
2013
+ "sessionUuid": {
2014
+ "type": "string",
2015
+ "description": "Session UUID for device targeting"
2016
+ },
2017
+ "keepScreenAwake": {
2018
+ "type": "boolean",
2019
+ "description": "Keep physical Android devices awake during the session (default: true)"
2020
+ },
2021
+ "device": {
2022
+ "type": "string",
2023
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2024
+ }
2025
+ },
2026
+ "required": [
2027
+ "url",
2028
+ "platform"
2029
+ ],
2030
+ "additionalProperties": false,
2031
+ "$schema": "http://json-schema.org/draft-07/schema#"
2032
+ }
2033
+ },
2034
+ {
2035
+ "name": "pinchOn",
2036
+ "description": "Pinch to zoom",
2037
+ "inputSchema": {
2038
+ "type": "object",
2039
+ "properties": {
2040
+ "direction": {
2041
+ "type": "string",
2042
+ "enum": [
2043
+ "in",
2044
+ "out"
2045
+ ],
2046
+ "description": "Pinch direction (in=zoom out, out=zoom in)"
2047
+ },
2048
+ "distanceStart": {
2049
+ "type": "number",
2050
+ "description": "Start distance px"
2051
+ },
2052
+ "distanceEnd": {
2053
+ "type": "number",
2054
+ "description": "End distance px"
2055
+ },
2056
+ "scale": {
2057
+ "type": "number",
2058
+ "description": "Scale multiplier"
2059
+ },
2060
+ "duration": {
2061
+ "type": "number",
2062
+ "description": "Duration ms (default: 300)"
2063
+ },
2064
+ "rotationDegrees": {
2065
+ "type": "number",
2066
+ "description": "Rotation degrees (+ = clockwise)"
2067
+ },
2068
+ "includeSystemInsets": {
2069
+ "type": "boolean",
2070
+ "description": "Include system bars (default false)"
2071
+ },
2072
+ "container": {
2073
+ "anyOf": [
2074
+ {
2075
+ "type": "object",
2076
+ "properties": {
2077
+ "elementId": {
2078
+ "type": "string",
2079
+ "description": "Container ID"
2080
+ }
2081
+ },
2082
+ "required": [
2083
+ "elementId"
2084
+ ],
2085
+ "additionalProperties": false
2086
+ },
2087
+ {
2088
+ "type": "object",
2089
+ "properties": {
2090
+ "text": {
2091
+ "type": "string",
2092
+ "description": "Container text"
2093
+ }
2094
+ },
2095
+ "required": [
2096
+ "text"
2097
+ ],
2098
+ "additionalProperties": false
2099
+ }
2100
+ ],
2101
+ "description": "Container to pinch within"
2102
+ },
2103
+ "autoTarget": {
2104
+ "type": "boolean",
2105
+ "description": "Auto-target surface (default true)"
2106
+ },
2107
+ "platform": {
2108
+ "type": "string",
2109
+ "enum": [
2110
+ "android",
2111
+ "ios"
2112
+ ],
2113
+ "description": "Platform"
2114
+ },
2115
+ "sessionUuid": {
2116
+ "type": "string",
2117
+ "description": "Session UUID for device targeting"
2118
+ },
2119
+ "keepScreenAwake": {
2120
+ "type": "boolean",
2121
+ "description": "Keep physical Android devices awake during the session (default: true)"
2122
+ },
2123
+ "device": {
2124
+ "type": "string",
2125
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2126
+ }
2127
+ },
2128
+ "required": [
2129
+ "direction",
2130
+ "platform"
2131
+ ],
2132
+ "additionalProperties": false,
2133
+ "$schema": "http://json-schema.org/draft-07/schema#"
2134
+ }
2135
+ },
2136
+ {
2137
+ "name": "postNotification",
2138
+ "description": "Post a notification from the app-under-test when AutoMobile SDK hooks are installed.",
2139
+ "inputSchema": {
2140
+ "type": "object",
2141
+ "properties": {
2142
+ "title": {
2143
+ "type": "string",
2144
+ "minLength": 1,
2145
+ "description": "Notification title"
2146
+ },
2147
+ "body": {
2148
+ "type": "string",
2149
+ "minLength": 1,
2150
+ "description": "Notification body"
2151
+ },
2152
+ "imageType": {
2153
+ "type": "string",
2154
+ "enum": [
2155
+ "normal",
2156
+ "bigPicture"
2157
+ ],
2158
+ "description": "Notification image type (default: normal)"
2159
+ },
2160
+ "imagePath": {
2161
+ "type": "string",
2162
+ "description": "Host image file path to push to /sdcard/Download/automobile when imageType is bigPicture"
2163
+ },
2164
+ "actions": {
2165
+ "type": "array",
2166
+ "items": {
2167
+ "type": "object",
2168
+ "properties": {
2169
+ "label": {
2170
+ "type": "string",
2171
+ "minLength": 1,
2172
+ "description": "Action label"
2173
+ },
2174
+ "actionId": {
2175
+ "type": "string",
2176
+ "minLength": 1,
2177
+ "description": "Action identifier"
2178
+ }
2179
+ },
2180
+ "required": [
2181
+ "label",
2182
+ "actionId"
2183
+ ],
2184
+ "additionalProperties": false
2185
+ },
2186
+ "description": "Action buttons to include"
2187
+ },
2188
+ "channelId": {
2189
+ "type": "string",
2190
+ "description": "Notification channel ID (Android only)"
2191
+ },
2192
+ "platform": {
2193
+ "type": "string",
2194
+ "enum": [
2195
+ "android",
2196
+ "ios"
2197
+ ],
2198
+ "description": "Platform"
2199
+ },
2200
+ "sessionUuid": {
2201
+ "type": "string",
2202
+ "description": "Session UUID for device targeting"
2203
+ },
2204
+ "keepScreenAwake": {
2205
+ "type": "boolean",
2206
+ "description": "Keep physical Android devices awake during the session (default: true)"
2207
+ },
2208
+ "device": {
2209
+ "type": "string",
2210
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2211
+ }
2212
+ },
2213
+ "required": [
2214
+ "title",
2215
+ "body",
2216
+ "platform"
2217
+ ],
2218
+ "additionalProperties": false,
2219
+ "$schema": "http://json-schema.org/draft-07/schema#"
2220
+ }
2221
+ },
2222
+ {
2223
+ "name": "pressButton",
2224
+ "description": "Press hardware button",
2225
+ "inputSchema": {
2226
+ "type": "object",
2227
+ "properties": {
2228
+ "button": {
2229
+ "type": "string",
2230
+ "enum": [
2231
+ "home",
2232
+ "back",
2233
+ "menu",
2234
+ "power",
2235
+ "volume_up",
2236
+ "volume_down",
2237
+ "recent"
2238
+ ],
2239
+ "description": "Button to press"
2240
+ },
2241
+ "platform": {
2242
+ "type": "string",
2243
+ "enum": [
2244
+ "android",
2245
+ "ios"
2246
+ ],
2247
+ "description": "Platform"
2248
+ },
2249
+ "sessionUuid": {
2250
+ "type": "string",
2251
+ "description": "Session UUID for device targeting"
2252
+ },
2253
+ "keepScreenAwake": {
2254
+ "type": "boolean",
2255
+ "description": "Keep physical Android devices awake during the session (default: true)"
2256
+ },
2257
+ "device": {
2258
+ "type": "string",
2259
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2260
+ }
2261
+ },
2262
+ "required": [
2263
+ "button",
2264
+ "platform"
2265
+ ],
2266
+ "additionalProperties": false,
2267
+ "$schema": "http://json-schema.org/draft-07/schema#"
2268
+ }
2269
+ },
2270
+ {
2271
+ "name": "pressKey",
2272
+ "description": "Press hardware key",
2273
+ "inputSchema": {
2274
+ "type": "object",
2275
+ "properties": {
2276
+ "key": {
2277
+ "type": "string",
2278
+ "enum": [
2279
+ "home",
2280
+ "back",
2281
+ "menu",
2282
+ "power",
2283
+ "volume_up",
2284
+ "volume_down",
2285
+ "recent"
2286
+ ],
2287
+ "description": "Key to press"
2288
+ },
2289
+ "platform": {
2290
+ "type": "string",
2291
+ "enum": [
2292
+ "android",
2293
+ "ios"
2294
+ ],
2295
+ "description": "Platform"
2296
+ },
2297
+ "sessionUuid": {
2298
+ "type": "string",
2299
+ "description": "Session UUID for device targeting"
2300
+ },
2301
+ "keepScreenAwake": {
2302
+ "type": "boolean",
2303
+ "description": "Keep physical Android devices awake during the session (default: true)"
2304
+ },
2305
+ "device": {
2306
+ "type": "string",
2307
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2308
+ }
2309
+ },
2310
+ "required": [
2311
+ "key",
2312
+ "platform"
2313
+ ],
2314
+ "additionalProperties": false,
2315
+ "$schema": "http://json-schema.org/draft-07/schema#"
2316
+ }
2317
+ },
2318
+ {
2319
+ "name": "recentApps",
2320
+ "description": "Open recent apps",
2321
+ "inputSchema": {
2322
+ "type": "object",
2323
+ "properties": {
2324
+ "platform": {
2325
+ "type": "string",
2326
+ "enum": [
2327
+ "android",
2328
+ "ios"
2329
+ ],
2330
+ "description": "Platform"
2331
+ },
2332
+ "sessionUuid": {
2333
+ "type": "string",
2334
+ "description": "Session UUID for device targeting"
2335
+ },
2336
+ "keepScreenAwake": {
2337
+ "type": "boolean",
2338
+ "description": "Keep physical Android devices awake during the session (default: true)"
2339
+ },
2340
+ "device": {
2341
+ "type": "string",
2342
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2343
+ }
2344
+ },
2345
+ "required": [
2346
+ "platform"
2347
+ ],
2348
+ "additionalProperties": false,
2349
+ "$schema": "http://json-schema.org/draft-07/schema#"
2350
+ }
2351
+ },
2352
+ {
2353
+ "name": "rotate",
2354
+ "description": "Rotate device orientation",
2355
+ "inputSchema": {
2356
+ "type": "object",
2357
+ "properties": {
2358
+ "orientation": {
2359
+ "type": "string",
2360
+ "enum": [
2361
+ "portrait",
2362
+ "landscape"
2363
+ ],
2364
+ "description": "Orientation"
2365
+ },
2366
+ "platform": {
2367
+ "type": "string",
2368
+ "enum": [
2369
+ "android",
2370
+ "ios"
2371
+ ],
2372
+ "description": "Platform"
2373
+ },
2374
+ "sessionUuid": {
2375
+ "type": "string",
2376
+ "description": "Session UUID for device targeting"
2377
+ },
2378
+ "keepScreenAwake": {
2379
+ "type": "boolean",
2380
+ "description": "Keep physical Android devices awake during the session (default: true)"
2381
+ },
2382
+ "device": {
2383
+ "type": "string",
2384
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2385
+ }
2386
+ },
2387
+ "required": [
2388
+ "orientation",
2389
+ "platform"
2390
+ ],
2391
+ "additionalProperties": false,
2392
+ "$schema": "http://json-schema.org/draft-07/schema#"
2393
+ }
2394
+ },
2395
+ {
2396
+ "name": "selectAllText",
2397
+ "description": "Select all text in focused input",
2398
+ "inputSchema": {
2399
+ "type": "object",
2400
+ "properties": {
2401
+ "platform": {
2402
+ "type": "string",
2403
+ "enum": [
2404
+ "android",
2405
+ "ios"
2406
+ ],
2407
+ "description": "Platform"
2408
+ },
2409
+ "sessionUuid": {
2410
+ "type": "string",
2411
+ "description": "Session UUID for device targeting"
2412
+ },
2413
+ "keepScreenAwake": {
2414
+ "type": "boolean",
2415
+ "description": "Keep physical Android devices awake during the session (default: true)"
2416
+ },
2417
+ "device": {
2418
+ "type": "string",
2419
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2420
+ }
2421
+ },
2422
+ "required": [
2423
+ "platform"
2424
+ ],
2425
+ "additionalProperties": false,
2426
+ "$schema": "http://json-schema.org/draft-07/schema#"
2427
+ }
2428
+ },
2429
+ {
2430
+ "name": "setActiveDevice",
2431
+ "description": "Set active device",
2432
+ "inputSchema": {
2433
+ "type": "object",
2434
+ "properties": {
2435
+ "deviceId": {
2436
+ "type": "string",
2437
+ "description": "Device ID"
2438
+ },
2439
+ "platform": {
2440
+ "type": "string",
2441
+ "enum": [
2442
+ "android",
2443
+ "ios"
2444
+ ],
2445
+ "description": "Platform"
2446
+ },
2447
+ "sessionUuid": {
2448
+ "type": "string",
2449
+ "description": "Session UUID for device targeting"
2450
+ },
2451
+ "keepScreenAwake": {
2452
+ "type": "boolean",
2453
+ "description": "Keep physical Android devices awake during the session (default: true)"
2454
+ }
2455
+ },
2456
+ "required": [
2457
+ "deviceId",
2458
+ "platform"
2459
+ ],
2460
+ "additionalProperties": false,
2461
+ "$schema": "http://json-schema.org/draft-07/schema#"
2462
+ }
2463
+ },
2464
+ {
2465
+ "name": "shake",
2466
+ "description": "Shake device",
2467
+ "inputSchema": {
2468
+ "type": "object",
2469
+ "properties": {
2470
+ "duration": {
2471
+ "type": "number",
2472
+ "description": "Shake duration in ms (default: 1000)"
2473
+ },
2474
+ "intensity": {
2475
+ "type": "number",
2476
+ "description": "Shake acceleration intensity (default: 100)"
2477
+ },
2478
+ "platform": {
2479
+ "type": "string",
2480
+ "enum": [
2481
+ "android",
2482
+ "ios"
2483
+ ],
2484
+ "description": "Platform"
2485
+ },
2486
+ "sessionUuid": {
2487
+ "type": "string",
2488
+ "description": "Session UUID for device targeting"
2489
+ },
2490
+ "keepScreenAwake": {
2491
+ "type": "boolean",
2492
+ "description": "Keep physical Android devices awake during the session (default: true)"
2493
+ },
2494
+ "device": {
2495
+ "type": "string",
2496
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2497
+ }
2498
+ },
2499
+ "required": [
2500
+ "platform"
2501
+ ],
2502
+ "additionalProperties": false,
2503
+ "$schema": "http://json-schema.org/draft-07/schema#"
2504
+ }
2505
+ },
2506
+ {
2507
+ "name": "startDevice",
2508
+ "description": "Start device",
2509
+ "inputSchema": {
2510
+ "type": "object",
2511
+ "properties": {
2512
+ "device": {
2513
+ "type": "object",
2514
+ "properties": {
2515
+ "name": {
2516
+ "type": "string",
2517
+ "description": "Device name"
2518
+ },
2519
+ "platform": {
2520
+ "type": "string",
2521
+ "enum": [
2522
+ "android",
2523
+ "ios"
2524
+ ],
2525
+ "description": "Platform"
2526
+ },
2527
+ "deviceId": {
2528
+ "type": "string",
2529
+ "description": "Device ID"
2530
+ },
2531
+ "isRunning": {
2532
+ "type": "boolean",
2533
+ "description": "Running status"
2534
+ },
2535
+ "source": {
2536
+ "type": "string",
2537
+ "description": "Source (local/remote)"
2538
+ }
2539
+ },
2540
+ "required": [
2541
+ "name",
2542
+ "platform"
2543
+ ],
2544
+ "additionalProperties": false,
2545
+ "description": "Device to start"
2546
+ },
2547
+ "timeoutMs": {
2548
+ "type": "number",
2549
+ "description": "Readiness timeout ms"
2550
+ }
2551
+ },
2552
+ "required": [
2553
+ "device"
2554
+ ],
2555
+ "additionalProperties": false,
2556
+ "$schema": "http://json-schema.org/draft-07/schema#"
2557
+ }
2558
+ },
2559
+ {
2560
+ "name": "swipeOn",
2561
+ "description": "Swipe/scroll on screen or elements",
2562
+ "inputSchema": {
2563
+ "type": "object",
2564
+ "properties": {
2565
+ "includeSystemInsets": {
2566
+ "type": "boolean",
2567
+ "description": "Include system bars (default false)"
2568
+ },
2569
+ "container": {
2570
+ "type": "object",
2571
+ "properties": {
2572
+ "elementId": {
2573
+ "type": "string",
2574
+ "description": "Container resource ID"
2575
+ },
2576
+ "text": {
2577
+ "type": "string",
2578
+ "description": "Container text"
2579
+ }
2580
+ },
2581
+ "additionalProperties": false,
2582
+ "description": "Container to swipe within (elementId or text). REQUIRED for lists. Omit for full-screen swipes."
2583
+ },
2584
+ "autoTarget": {
2585
+ "type": "boolean",
2586
+ "description": "Auto-target scrollable container (default true)"
2587
+ },
2588
+ "direction": {
2589
+ "type": "string",
2590
+ "enum": [
2591
+ "up",
2592
+ "down",
2593
+ "left",
2594
+ "right"
2595
+ ],
2596
+ "description": "Finger movement direction. up=finger up/reveals above, down=finger down/reveals below, left/right=finger left/right"
2597
+ },
2598
+ "gestureType": {
2599
+ "type": "string",
2600
+ "enum": [
2601
+ "swipeFingerTowardsDirection",
2602
+ "scrollTowardsDirection"
2603
+ ],
2604
+ "description": "swipeFingerTowardsDirection=finger moves in direction (default), scrollTowardsDirection=content scrolls in direction"
2605
+ },
2606
+ "lookFor": {
2607
+ "anyOf": [
2608
+ {
2609
+ "type": "object",
2610
+ "properties": {
2611
+ "elementId": {
2612
+ "type": "string",
2613
+ "description": "ID of the element to look for"
2614
+ }
2615
+ },
2616
+ "required": [
2617
+ "elementId"
2618
+ ],
2619
+ "additionalProperties": false
2620
+ },
2621
+ {
2622
+ "type": "object",
2623
+ "properties": {
2624
+ "text": {
2625
+ "type": "string",
2626
+ "description": "Text to look for"
2627
+ }
2628
+ },
2629
+ "required": [
2630
+ "text"
2631
+ ],
2632
+ "additionalProperties": false
2633
+ }
2634
+ ],
2635
+ "description": "Swipe until we find a match"
2636
+ },
2637
+ "boomerang": {
2638
+ "type": "boolean",
2639
+ "description": "Return to the starting point after swiping (default false)"
2640
+ },
2641
+ "apexPause": {
2642
+ "type": "number",
2643
+ "minimum": 0,
2644
+ "description": "Pause at the furthest point in ms (default 100)"
2645
+ },
2646
+ "returnSpeed": {
2647
+ "type": "number",
2648
+ "exclusiveMinimum": 0,
2649
+ "description": "Return speed multiplier (default 1.0)"
2650
+ },
2651
+ "speed": {
2652
+ "type": "string",
2653
+ "enum": [
2654
+ "slow",
2655
+ "normal",
2656
+ "fast"
2657
+ ],
2658
+ "description": "Scroll speed"
2659
+ },
2660
+ "platform": {
2661
+ "type": "string",
2662
+ "enum": [
2663
+ "android",
2664
+ "ios"
2665
+ ],
2666
+ "description": "Platform"
2667
+ },
2668
+ "sessionUuid": {
2669
+ "type": "string",
2670
+ "description": "Session UUID for device targeting"
2671
+ },
2672
+ "keepScreenAwake": {
2673
+ "type": "boolean",
2674
+ "description": "Keep physical Android devices awake during the session (default: true)"
2675
+ },
2676
+ "device": {
2677
+ "type": "string",
2678
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
2679
+ }
2680
+ },
2681
+ "required": [
2682
+ "direction",
2683
+ "platform"
2684
+ ],
2685
+ "additionalProperties": false,
2686
+ "$schema": "http://json-schema.org/draft-07/schema#"
2687
+ },
2688
+ "outputSchema": {
2689
+ "type": "object",
2690
+ "properties": {
2691
+ "success": {
2692
+ "type": "boolean"
2693
+ },
2694
+ "error": {
2695
+ "type": "string"
2696
+ },
2697
+ "warning": {
2698
+ "type": "string"
2699
+ },
2700
+ "scrollableCandidates": {
2701
+ "type": "array",
2702
+ "items": {
2703
+ "type": "object",
2704
+ "properties": {
2705
+ "elementId": {
2706
+ "type": "string"
2707
+ },
2708
+ "text": {
2709
+ "type": "string"
2710
+ },
2711
+ "contentDesc": {
2712
+ "type": "string"
2713
+ },
2714
+ "className": {
2715
+ "type": "string"
2716
+ }
2717
+ },
2718
+ "additionalProperties": true
2719
+ }
2720
+ },
2721
+ "targetType": {
2722
+ "type": "string",
2723
+ "enum": [
2724
+ "screen",
2725
+ "element"
2726
+ ]
2727
+ },
2728
+ "element": {
2729
+ "type": "object",
2730
+ "properties": {
2731
+ "bounds": {
2732
+ "type": "object",
2733
+ "properties": {
2734
+ "left": {
2735
+ "type": "integer"
2736
+ },
2737
+ "top": {
2738
+ "type": "integer"
2739
+ },
2740
+ "right": {
2741
+ "type": "integer"
2742
+ },
2743
+ "bottom": {
2744
+ "type": "integer"
2745
+ },
2746
+ "centerX": {
2747
+ "type": "integer"
2748
+ },
2749
+ "centerY": {
2750
+ "type": "integer"
2751
+ }
2752
+ },
2753
+ "required": [
2754
+ "left",
2755
+ "top",
2756
+ "right",
2757
+ "bottom"
2758
+ ],
2759
+ "additionalProperties": false
2760
+ },
2761
+ "text": {
2762
+ "type": "string"
2763
+ },
2764
+ "resource-id": {
2765
+ "type": "string"
2766
+ },
2767
+ "content-desc": {
2768
+ "type": "string"
2769
+ },
2770
+ "class": {
2771
+ "type": "string"
2772
+ },
2773
+ "package": {
2774
+ "type": "string"
2775
+ },
2776
+ "checkable": {
2777
+ "type": "boolean"
2778
+ },
2779
+ "checked": {
2780
+ "type": "boolean"
2781
+ },
2782
+ "clickable": {
2783
+ "type": "boolean"
2784
+ },
2785
+ "enabled": {
2786
+ "type": "boolean"
2787
+ },
2788
+ "focusable": {
2789
+ "type": "boolean"
2790
+ },
2791
+ "focused": {
2792
+ "type": "boolean"
2793
+ },
2794
+ "accessibility-focused": {
2795
+ "type": "boolean"
2796
+ },
2797
+ "scrollable": {
2798
+ "type": "boolean"
2799
+ },
2800
+ "selected": {
2801
+ "type": "boolean"
2802
+ }
2803
+ },
2804
+ "required": [
2805
+ "bounds"
2806
+ ],
2807
+ "additionalProperties": true
2808
+ },
2809
+ "x1": {
2810
+ "type": "integer"
2811
+ },
2812
+ "y1": {
2813
+ "type": "integer"
2814
+ },
2815
+ "x2": {
2816
+ "type": "integer"
2817
+ },
2818
+ "y2": {
2819
+ "type": "integer"
2820
+ },
2821
+ "duration": {
2822
+ "type": "integer"
2823
+ },
2824
+ "easing": {
2825
+ "type": "string",
2826
+ "enum": [
2827
+ "linear",
2828
+ "decelerate",
2829
+ "accelerate",
2830
+ "accelerateDecelerate"
2831
+ ]
2832
+ },
2833
+ "path": {
2834
+ "type": "number"
2835
+ },
2836
+ "found": {
2837
+ "type": "boolean"
2838
+ },
2839
+ "scrollIterations": {
2840
+ "type": "integer"
2841
+ },
2842
+ "elapsedMs": {
2843
+ "type": "integer"
2844
+ },
2845
+ "hierarchyChanged": {
2846
+ "type": "boolean"
2847
+ },
2848
+ "observation": {
2849
+ "type": "object",
2850
+ "properties": {
2851
+ "selectedElements": {
2852
+ "type": "array",
2853
+ "items": {
2854
+ "type": "object",
2855
+ "properties": {
2856
+ "text": {
2857
+ "type": "string"
2858
+ },
2859
+ "resourceId": {
2860
+ "type": "string"
2861
+ },
2862
+ "contentDesc": {
2863
+ "type": "string"
2864
+ },
2865
+ "bounds": {
2866
+ "$ref": "#/properties/element/properties/bounds"
2867
+ },
2868
+ "indexInMatches": {
2869
+ "type": "integer"
2870
+ },
2871
+ "totalMatches": {
2872
+ "type": "integer"
2873
+ },
2874
+ "selectionStrategy": {
2875
+ "type": "string"
2876
+ },
2877
+ "selectedState": {
2878
+ "type": "object",
2879
+ "properties": {
2880
+ "method": {
2881
+ "type": "string",
2882
+ "enum": [
2883
+ "accessibility",
2884
+ "visual"
2885
+ ]
2886
+ },
2887
+ "confidence": {
2888
+ "type": "number"
2889
+ },
2890
+ "reason": {
2891
+ "type": "string"
2892
+ }
2893
+ },
2894
+ "required": [
2895
+ "method",
2896
+ "confidence"
2897
+ ],
2898
+ "additionalProperties": false
2899
+ }
2900
+ },
2901
+ "additionalProperties": true
2902
+ }
2903
+ },
2904
+ "focusedElement": {
2905
+ "$ref": "#/properties/element"
2906
+ },
2907
+ "accessibilityFocusedElement": {
2908
+ "$ref": "#/properties/element"
2909
+ },
2910
+ "activeWindow": {
2911
+ "type": "object",
2912
+ "properties": {
2913
+ "appId": {
2914
+ "type": "string"
2915
+ },
2916
+ "activityName": {
2917
+ "type": "string"
2918
+ },
2919
+ "layoutSeqSum": {
2920
+ "type": "integer"
2921
+ },
2922
+ "type": {
2923
+ "type": "string"
2924
+ }
2925
+ },
2926
+ "additionalProperties": true
2927
+ }
2928
+ },
2929
+ "additionalProperties": true
2930
+ },
2931
+ "a11yTotalTimeMs": {
2932
+ "type": "integer"
2933
+ },
2934
+ "a11yGestureTimeMs": {
2935
+ "type": "integer"
2936
+ },
2937
+ "fallbackReason": {
2938
+ "type": "string"
2939
+ },
2940
+ "debug": {}
2941
+ },
2942
+ "required": [
2943
+ "success",
2944
+ "targetType",
2945
+ "x1",
2946
+ "y1",
2947
+ "x2",
2948
+ "y2",
2949
+ "duration"
2950
+ ],
2951
+ "additionalProperties": true,
2952
+ "$schema": "http://json-schema.org/draft-07/schema#"
2953
+ }
2954
+ },
2955
+ {
2956
+ "name": "systemTray",
2957
+ "description": "System tray actions for notifications (open/find/tap/dismiss/clearAll)",
2958
+ "inputSchema": {
2959
+ "type": "object",
2960
+ "properties": {
2961
+ "action": {
2962
+ "type": "string",
2963
+ "enum": [
2964
+ "open",
2965
+ "find",
2966
+ "tap",
2967
+ "dismiss",
2968
+ "clearAll"
2969
+ ],
2970
+ "description": "System tray action"
2971
+ },
2972
+ "notification": {
2973
+ "type": "object",
2974
+ "properties": {
2975
+ "title": {
2976
+ "type": "string",
2977
+ "description": "Notification title (case-insensitive, partial match)"
2978
+ },
2979
+ "body": {
2980
+ "type": "string",
2981
+ "description": "Notification body (case-insensitive, partial match)"
2982
+ },
2983
+ "appId": {
2984
+ "type": "string",
2985
+ "description": "Notification app package ID (Android only)"
2986
+ },
2987
+ "tapActionLabel": {
2988
+ "type": "string",
2989
+ "description": "Notification action button label to tap (tap only)"
2990
+ }
2991
+ },
2992
+ "additionalProperties": false,
2993
+ "description": "Notification match criteria"
2994
+ },
2995
+ "awaitTimeout": {
2996
+ "type": "integer",
2997
+ "minimum": 0,
2998
+ "description": "Wait timeout ms (default: 5000)"
2999
+ },
3000
+ "platform": {
3001
+ "type": "string",
3002
+ "enum": [
3003
+ "android",
3004
+ "ios"
3005
+ ],
3006
+ "description": "Platform"
3007
+ },
3008
+ "sessionUuid": {
3009
+ "type": "string",
3010
+ "description": "Session UUID for device targeting"
3011
+ },
3012
+ "keepScreenAwake": {
3013
+ "type": "boolean",
3014
+ "description": "Keep physical Android devices awake during the session (default: true)"
3015
+ },
3016
+ "device": {
3017
+ "type": "string",
3018
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
3019
+ }
3020
+ },
3021
+ "required": [
3022
+ "action",
3023
+ "platform"
3024
+ ],
3025
+ "additionalProperties": false,
3026
+ "$schema": "http://json-schema.org/draft-07/schema#"
3027
+ }
3028
+ },
3029
+ {
3030
+ "name": "tapOn",
3031
+ "description": "Tap UI elements by text or ID (returns selectedElement metadata)",
3032
+ "inputSchema": {
3033
+ "type": "object",
3034
+ "properties": {
3035
+ "container": {
3036
+ "anyOf": [
3037
+ {
3038
+ "type": "object",
3039
+ "properties": {
3040
+ "elementId": {
3041
+ "type": "string",
3042
+ "description": "Container resource ID"
3043
+ }
3044
+ },
3045
+ "required": [
3046
+ "elementId"
3047
+ ],
3048
+ "additionalProperties": false
3049
+ },
3050
+ {
3051
+ "type": "object",
3052
+ "properties": {
3053
+ "text": {
3054
+ "type": "string",
3055
+ "description": "Container text"
3056
+ }
3057
+ },
3058
+ "required": [
3059
+ "text"
3060
+ ],
3061
+ "additionalProperties": false
3062
+ }
3063
+ ],
3064
+ "description": "Container selector object to scope search. Provide { \"elementId\": \"<id>\" } or { \"text\": \"<text>\" }."
3065
+ },
3066
+ "selector": {
3067
+ "anyOf": [
3068
+ {
3069
+ "type": "object",
3070
+ "properties": {
3071
+ "text": {
3072
+ "type": "string",
3073
+ "description": "Text to tap"
3074
+ }
3075
+ },
3076
+ "required": [
3077
+ "text"
3078
+ ],
3079
+ "additionalProperties": false
3080
+ },
3081
+ {
3082
+ "type": "object",
3083
+ "properties": {
3084
+ "id": {
3085
+ "type": "string",
3086
+ "description": "Element ID to tap"
3087
+ }
3088
+ },
3089
+ "required": [
3090
+ "id"
3091
+ ],
3092
+ "additionalProperties": false
3093
+ }
3094
+ ],
3095
+ "description": "Element selector - provide { \"text\": \"<text>\" } or { \"id\": \"<id>\" }"
3096
+ },
3097
+ "action": {
3098
+ "type": "string",
3099
+ "enum": [
3100
+ "tap",
3101
+ "doubleTap",
3102
+ "longPress",
3103
+ "focus"
3104
+ ],
3105
+ "description": "Action type"
3106
+ },
3107
+ "selectionStrategy": {
3108
+ "type": "string",
3109
+ "enum": [
3110
+ "first",
3111
+ "random"
3112
+ ],
3113
+ "description": "Element selection strategy when multiple matches are found (default: first)"
3114
+ },
3115
+ "duration": {
3116
+ "type": "number",
3117
+ "description": "Long press duration (ms)"
3118
+ },
3119
+ "searchUntil": {
3120
+ "type": "object",
3121
+ "properties": {
3122
+ "duration": {
3123
+ "type": "number",
3124
+ "minimum": 100,
3125
+ "maximum": 12000,
3126
+ "description": "Polling duration (ms, default: 500)"
3127
+ }
3128
+ },
3129
+ "additionalProperties": false,
3130
+ "description": "Poll for element before tapping"
3131
+ },
3132
+ "platform": {
3133
+ "type": "string",
3134
+ "enum": [
3135
+ "android",
3136
+ "ios"
3137
+ ],
3138
+ "description": "Platform"
3139
+ },
3140
+ "sessionUuid": {
3141
+ "type": "string",
3142
+ "description": "Session UUID for device targeting"
3143
+ },
3144
+ "keepScreenAwake": {
3145
+ "type": "boolean",
3146
+ "description": "Keep physical Android devices awake during the session (default: true)"
3147
+ },
3148
+ "device": {
3149
+ "type": "string",
3150
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
3151
+ }
3152
+ },
3153
+ "required": [
3154
+ "selector",
3155
+ "action",
3156
+ "platform"
3157
+ ],
3158
+ "additionalProperties": false,
3159
+ "$schema": "http://json-schema.org/draft-07/schema#"
3160
+ },
3161
+ "outputSchema": {
3162
+ "type": "object",
3163
+ "properties": {
3164
+ "success": {
3165
+ "type": "boolean"
3166
+ },
3167
+ "action": {
3168
+ "type": "string",
3169
+ "enum": [
3170
+ "tap",
3171
+ "doubleTap",
3172
+ "longPress",
3173
+ "focus"
3174
+ ]
3175
+ },
3176
+ "message": {
3177
+ "type": "string"
3178
+ },
3179
+ "element": {
3180
+ "type": "object",
3181
+ "properties": {
3182
+ "bounds": {
3183
+ "type": "object",
3184
+ "properties": {
3185
+ "left": {
3186
+ "type": "integer"
3187
+ },
3188
+ "top": {
3189
+ "type": "integer"
3190
+ },
3191
+ "right": {
3192
+ "type": "integer"
3193
+ },
3194
+ "bottom": {
3195
+ "type": "integer"
3196
+ },
3197
+ "centerX": {
3198
+ "type": "integer"
3199
+ },
3200
+ "centerY": {
3201
+ "type": "integer"
3202
+ }
3203
+ },
3204
+ "required": [
3205
+ "left",
3206
+ "top",
3207
+ "right",
3208
+ "bottom"
3209
+ ],
3210
+ "additionalProperties": false
3211
+ },
3212
+ "text": {
3213
+ "type": "string"
3214
+ },
3215
+ "resource-id": {
3216
+ "type": "string"
3217
+ },
3218
+ "content-desc": {
3219
+ "type": "string"
3220
+ },
3221
+ "class": {
3222
+ "type": "string"
3223
+ },
3224
+ "package": {
3225
+ "type": "string"
3226
+ },
3227
+ "checkable": {
3228
+ "type": "boolean"
3229
+ },
3230
+ "checked": {
3231
+ "type": "boolean"
3232
+ },
3233
+ "clickable": {
3234
+ "type": "boolean"
3235
+ },
3236
+ "enabled": {
3237
+ "type": "boolean"
3238
+ },
3239
+ "focusable": {
3240
+ "type": "boolean"
3241
+ },
3242
+ "focused": {
3243
+ "type": "boolean"
3244
+ },
3245
+ "accessibility-focused": {
3246
+ "type": "boolean"
3247
+ },
3248
+ "scrollable": {
3249
+ "type": "boolean"
3250
+ },
3251
+ "selected": {
3252
+ "type": "boolean"
3253
+ }
3254
+ },
3255
+ "required": [
3256
+ "bounds"
3257
+ ],
3258
+ "additionalProperties": true
3259
+ },
3260
+ "observation": {
3261
+ "type": "object",
3262
+ "properties": {
3263
+ "selectedElements": {
3264
+ "type": "array",
3265
+ "items": {
3266
+ "type": "object",
3267
+ "properties": {
3268
+ "text": {
3269
+ "type": "string"
3270
+ },
3271
+ "resourceId": {
3272
+ "type": "string"
3273
+ },
3274
+ "contentDesc": {
3275
+ "type": "string"
3276
+ },
3277
+ "bounds": {
3278
+ "$ref": "#/properties/element/properties/bounds"
3279
+ },
3280
+ "indexInMatches": {
3281
+ "type": "integer"
3282
+ },
3283
+ "totalMatches": {
3284
+ "type": "integer"
3285
+ },
3286
+ "selectionStrategy": {
3287
+ "type": "string"
3288
+ },
3289
+ "selectedState": {
3290
+ "type": "object",
3291
+ "properties": {
3292
+ "method": {
3293
+ "type": "string",
3294
+ "enum": [
3295
+ "accessibility",
3296
+ "visual"
3297
+ ]
3298
+ },
3299
+ "confidence": {
3300
+ "type": "number"
3301
+ },
3302
+ "reason": {
3303
+ "type": "string"
3304
+ }
3305
+ },
3306
+ "required": [
3307
+ "method",
3308
+ "confidence"
3309
+ ],
3310
+ "additionalProperties": false
3311
+ }
3312
+ },
3313
+ "additionalProperties": true
3314
+ }
3315
+ },
3316
+ "focusedElement": {
3317
+ "$ref": "#/properties/element"
3318
+ },
3319
+ "accessibilityFocusedElement": {
3320
+ "$ref": "#/properties/element"
3321
+ },
3322
+ "activeWindow": {
3323
+ "type": "object",
3324
+ "properties": {
3325
+ "appId": {
3326
+ "type": "string"
3327
+ },
3328
+ "activityName": {
3329
+ "type": "string"
3330
+ },
3331
+ "layoutSeqSum": {
3332
+ "type": "integer"
3333
+ },
3334
+ "type": {
3335
+ "type": "string"
3336
+ }
3337
+ },
3338
+ "additionalProperties": true
3339
+ }
3340
+ },
3341
+ "additionalProperties": true
3342
+ },
3343
+ "selectedElement": {
3344
+ "$ref": "#/properties/observation/properties/selectedElements/items"
3345
+ },
3346
+ "selectedElements": {
3347
+ "type": "array",
3348
+ "items": {
3349
+ "$ref": "#/properties/observation/properties/selectedElements/items"
3350
+ }
3351
+ },
3352
+ "error": {
3353
+ "type": "string"
3354
+ },
3355
+ "pressRecognized": {
3356
+ "type": "boolean"
3357
+ },
3358
+ "contextMenuOpened": {
3359
+ "type": "boolean"
3360
+ },
3361
+ "selectionStarted": {
3362
+ "type": "boolean"
3363
+ },
3364
+ "searchUntil": {
3365
+ "type": "object",
3366
+ "properties": {
3367
+ "durationMs": {
3368
+ "type": "integer"
3369
+ },
3370
+ "requestCount": {
3371
+ "type": "integer"
3372
+ },
3373
+ "changeCount": {
3374
+ "type": "integer"
3375
+ }
3376
+ },
3377
+ "additionalProperties": false
3378
+ },
3379
+ "debug": {}
3380
+ },
3381
+ "required": [
3382
+ "success",
3383
+ "action"
3384
+ ],
3385
+ "additionalProperties": true,
3386
+ "$schema": "http://json-schema.org/draft-07/schema#"
3387
+ }
3388
+ },
3389
+ {
3390
+ "name": "terminateApp",
3391
+ "description": "Terminate app by package name",
3392
+ "inputSchema": {
3393
+ "type": "object",
3394
+ "properties": {
3395
+ "appId": {
3396
+ "type": "string",
3397
+ "description": "App package ID"
3398
+ },
3399
+ "sessionUuid": {
3400
+ "type": "string",
3401
+ "description": "Session UUID for device targeting"
3402
+ },
3403
+ "keepScreenAwake": {
3404
+ "type": "boolean",
3405
+ "description": "Keep physical Android devices awake during the session (default: true)"
3406
+ },
3407
+ "device": {
3408
+ "type": "string",
3409
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
3410
+ }
3411
+ },
3412
+ "required": [
3413
+ "appId"
3414
+ ],
3415
+ "additionalProperties": false,
3416
+ "$schema": "http://json-schema.org/draft-07/schema#"
3417
+ }
3418
+ },
3419
+ {
3420
+ "name": "videoRecording",
3421
+ "description": "Start or stop a low-overhead video recording for the active device.",
3422
+ "inputSchema": {
3423
+ "type": "object",
3424
+ "properties": {
3425
+ "action": {
3426
+ "type": "string",
3427
+ "enum": [
3428
+ "start",
3429
+ "stop"
3430
+ ],
3431
+ "description": "Action to perform"
3432
+ },
3433
+ "platform": {
3434
+ "type": "string",
3435
+ "enum": [
3436
+ "android",
3437
+ "ios"
3438
+ ],
3439
+ "description": "Target platform"
3440
+ },
3441
+ "deviceId": {
3442
+ "type": "string",
3443
+ "description": "Optional device ID override"
3444
+ },
3445
+ "recordingId": {
3446
+ "type": "string",
3447
+ "description": "Recording ID to stop"
3448
+ },
3449
+ "qualityPreset": {
3450
+ "type": "string",
3451
+ "enum": [
3452
+ "low",
3453
+ "medium",
3454
+ "high"
3455
+ ],
3456
+ "description": "Recording quality preset"
3457
+ },
3458
+ "targetBitrateKbps": {
3459
+ "type": "integer",
3460
+ "exclusiveMinimum": 0,
3461
+ "description": "Target bitrate in Kbps"
3462
+ },
3463
+ "maxThroughputMbps": {
3464
+ "type": "number",
3465
+ "exclusiveMinimum": 0,
3466
+ "description": "Max throughput in Mbps"
3467
+ },
3468
+ "fps": {
3469
+ "type": "integer",
3470
+ "exclusiveMinimum": 0,
3471
+ "description": "Frames per second"
3472
+ },
3473
+ "resolution": {
3474
+ "type": "object",
3475
+ "properties": {
3476
+ "width": {
3477
+ "type": "integer",
3478
+ "exclusiveMinimum": 0,
3479
+ "description": "Override resolution width in pixels"
3480
+ },
3481
+ "height": {
3482
+ "type": "integer",
3483
+ "exclusiveMinimum": 0,
3484
+ "description": "Override resolution height in pixels"
3485
+ }
3486
+ },
3487
+ "required": [
3488
+ "width",
3489
+ "height"
3490
+ ],
3491
+ "additionalProperties": false,
3492
+ "description": "Override capture resolution"
3493
+ },
3494
+ "format": {
3495
+ "type": "string",
3496
+ "enum": [
3497
+ "mp4"
3498
+ ],
3499
+ "description": "Video format"
3500
+ },
3501
+ "maxDuration": {
3502
+ "type": "integer",
3503
+ "exclusiveMinimum": 0,
3504
+ "maximum": 300,
3505
+ "description": "Max seconds to record video for (default 30, max 300)"
3506
+ },
3507
+ "outputName": {
3508
+ "type": "string",
3509
+ "description": "Optional label to identify the recording"
3510
+ },
3511
+ "sessionUuid": {
3512
+ "type": "string",
3513
+ "description": "Session UUID for device targeting"
3514
+ },
3515
+ "keepScreenAwake": {
3516
+ "type": "boolean",
3517
+ "description": "Keep physical Android devices awake during the session (default: true)"
3518
+ },
3519
+ "device": {
3520
+ "type": "string",
3521
+ "description": "Device label for multi-device plans (e.g., \"A\", \"B\")"
3522
+ }
3523
+ },
3524
+ "required": [
3525
+ "action",
3526
+ "platform"
3527
+ ],
3528
+ "additionalProperties": false,
3529
+ "$schema": "http://json-schema.org/draft-07/schema#"
3530
+ }
3531
+ }
3532
+ ]