@devicecloud.dev/dcd 4.2.5 → 4.3.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.
@@ -343,7 +343,7 @@ export interface paths {
343
343
  patch?: never;
344
344
  trace?: never;
345
345
  };
346
- "/org/increase_credits": {
346
+ "/org/paddle-webhook": {
347
347
  parameters: {
348
348
  query?: never;
349
349
  header?: never;
@@ -352,7 +352,7 @@ export interface paths {
352
352
  };
353
353
  get?: never;
354
354
  put?: never;
355
- post: operations["OrgController_paddleTransactionCompleted"];
355
+ post: operations["OrgController_handlePaddleWebhook"];
356
356
  delete?: never;
357
357
  options?: never;
358
358
  head?: never;
@@ -407,6 +407,54 @@ export interface paths {
407
407
  patch?: never;
408
408
  trace?: never;
409
409
  };
410
+ "/org/subscriptions": {
411
+ parameters: {
412
+ query?: never;
413
+ header?: never;
414
+ path?: never;
415
+ cookie?: never;
416
+ };
417
+ get?: never;
418
+ put?: never;
419
+ post: operations["OrgController_getAllSubscriptions"];
420
+ delete?: never;
421
+ options?: never;
422
+ head?: never;
423
+ patch?: never;
424
+ trace?: never;
425
+ };
426
+ "/org/update-overage-limit": {
427
+ parameters: {
428
+ query?: never;
429
+ header?: never;
430
+ path?: never;
431
+ cookie?: never;
432
+ };
433
+ get?: never;
434
+ put?: never;
435
+ post: operations["OrgController_updateOverageLimit"];
436
+ delete?: never;
437
+ options?: never;
438
+ head?: never;
439
+ patch?: never;
440
+ trace?: never;
441
+ };
442
+ "/org/usage-history": {
443
+ parameters: {
444
+ query?: never;
445
+ header?: never;
446
+ path?: never;
447
+ cookie?: never;
448
+ };
449
+ get?: never;
450
+ put?: never;
451
+ post: operations["OrgController_getUsageHistory"];
452
+ delete?: never;
453
+ options?: never;
454
+ head?: never;
455
+ patch?: never;
456
+ trace?: never;
457
+ };
410
458
  "/frontend/check-domain-saml": {
411
459
  parameters: {
412
460
  query?: never;
@@ -423,6 +471,22 @@ export interface paths {
423
471
  patch?: never;
424
472
  trace?: never;
425
473
  };
474
+ "/frontend/validate-email": {
475
+ parameters: {
476
+ query?: never;
477
+ header?: never;
478
+ path?: never;
479
+ cookie?: never;
480
+ };
481
+ get?: never;
482
+ put?: never;
483
+ post: operations["FrontendController_validateEmail"];
484
+ delete?: never;
485
+ options?: never;
486
+ head?: never;
487
+ patch?: never;
488
+ trace?: never;
489
+ };
426
490
  "/health": {
427
491
  parameters: {
428
492
  query?: never;
@@ -439,6 +503,38 @@ export interface paths {
439
503
  patch?: never;
440
504
  trace?: never;
441
505
  };
506
+ "/billing/create-subscription": {
507
+ parameters: {
508
+ query?: never;
509
+ header?: never;
510
+ path?: never;
511
+ cookie?: never;
512
+ };
513
+ get?: never;
514
+ put?: never;
515
+ post: operations["BillingController_createSubscription"];
516
+ delete?: never;
517
+ options?: never;
518
+ head?: never;
519
+ patch?: never;
520
+ trace?: never;
521
+ };
522
+ "/stats/marketing": {
523
+ parameters: {
524
+ query?: never;
525
+ header?: never;
526
+ path?: never;
527
+ cookie?: never;
528
+ };
529
+ get: operations["StatsController_getMarketingStats"];
530
+ put?: never;
531
+ post?: never;
532
+ delete?: never;
533
+ options?: never;
534
+ head?: never;
535
+ patch?: never;
536
+ trace?: never;
537
+ };
442
538
  }
443
539
  export type webhooks = Record<string, never>;
444
540
  export interface components {
@@ -457,11 +553,15 @@ export interface components {
457
553
  test_upload_id: string;
458
554
  };
459
555
  IGetBinaryUploadUrlArgs: {
556
+ /**
557
+ * @description Platform for the binary upload (ios or android)
558
+ * @enum {string}
559
+ */
560
+ platform: "ios" | "android";
460
561
  /** @description File size in bytes (optional, for Backblaze upload strategy) */
461
562
  fileSize?: number;
462
563
  /** @description Whether client uses TUS resumable uploads (true for new clients, undefined/false for legacy) */
463
564
  useTus?: boolean;
464
- platform: Record<string, never>;
465
565
  };
466
566
  B2SimpleUpload: {
467
567
  uploadUrl: string;
@@ -497,6 +597,7 @@ export interface components {
497
597
  token?: string;
498
598
  };
499
599
  ICheckForExistingUploadArgs: {
600
+ /** @description SHA-256 hash of the binary file */
500
601
  sha: string;
501
602
  };
502
603
  ICheckForExistingUploadResponse: {
@@ -504,6 +605,10 @@ export interface components {
504
605
  exists: boolean;
505
606
  };
506
607
  IFinaliseUploadArgs: {
608
+ /** @description Unique upload identifier */
609
+ id: string;
610
+ /** @description Storage path for the uploaded file */
611
+ path: string;
507
612
  /** @description File metadata (bundle ID, package name, platform) - required for new clients */
508
613
  metadata?: Record<string, never>;
509
614
  /** @description SHA-256 hash of the file - required for new clients */
@@ -520,8 +625,8 @@ export interface components {
520
625
  backblazeSuccess: boolean;
521
626
  /** @description Whether client uses TUS resumable uploads (true for new clients, undefined/false for legacy) */
522
627
  useTus?: boolean;
523
- id: string;
524
- path: string;
628
+ /** @description File size in bytes */
629
+ bytes?: number;
525
630
  };
526
631
  IFinaliseUploadResponse: Record<string, never>;
527
632
  IFinishLargeFileArgs: {
@@ -549,18 +654,25 @@ export interface components {
549
654
  * @description This file must be a zip file
550
655
  */
551
656
  file: string;
657
+ testFileNames?: string;
658
+ sequentialFlows?: string;
552
659
  /** @enum {string} */
553
660
  androidApiLevel?: "29" | "30" | "31" | "32" | "33" | "34" | "35" | "36";
554
661
  /** @enum {string} */
555
662
  androidDevice?: "pixel-6" | "pixel-6-pro" | "pixel-7" | "pixel-7-pro" | "generic-tablet";
556
663
  apiKey?: string;
557
664
  apiUrl?: string;
665
+ appBinaryId: string;
558
666
  appFile?: string;
667
+ env: string;
559
668
  /** @enum {string} */
560
669
  iOSVersion?: "16" | "17" | "18" | "26";
561
670
  /** @enum {string} */
562
- iOSDevice?: "iphone-14" | "iphone-14-pro" | "iphone-15" | "iphone-15-pro" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max" | "ipad-pro-6th-gen";
671
+ iOSDevice?: "iphone-14" | "iphone-15" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max" | "ipad-pro-6th-gen";
563
672
  platform?: string;
673
+ googlePlay: boolean;
674
+ config: string;
675
+ name?: string;
564
676
  /** @enum {string} */
565
677
  runnerType?: "m4" | "m1" | "default" | "gpu1" | "cpu1";
566
678
  metadata?: string;
@@ -569,13 +681,6 @@ export interface components {
569
681
  testFileOverrides?: string;
570
682
  /** @description SHA-256 hash of the flow ZIP file */
571
683
  sha?: string;
572
- testFileNames?: string;
573
- sequentialFlows?: string;
574
- appBinaryId: string;
575
- env: string;
576
- googlePlay: boolean;
577
- config: string;
578
- name: string;
579
684
  };
580
685
  IRetryTestArgs: {
581
686
  resultId: number;
@@ -1119,17 +1224,6 @@ export interface operations {
1119
1224
  * "iphone-14": {
1120
1225
  * "name": "iPhone 14",
1121
1226
  * "versions": [
1122
- * "15",
1123
- * "16",
1124
- * "17",
1125
- * "18"
1126
- * ],
1127
- * "deprecated": false
1128
- * },
1129
- * "iphone-14-pro": {
1130
- * "name": "iPhone 14 Pro",
1131
- * "versions": [
1132
- * "15",
1133
1227
  * "16",
1134
1228
  * "17",
1135
1229
  * "18"
@@ -1139,77 +1233,47 @@ export interface operations {
1139
1233
  * "iphone-15": {
1140
1234
  * "name": "iPhone 15",
1141
1235
  * "versions": [
1142
- * "16",
1143
- * "17",
1144
- * "18"
1145
- * ],
1146
- * "deprecated": false
1147
- * },
1148
- * "iphone-15-pro": {
1149
- * "name": "iPhone 15 Pro",
1150
- * "versions": [
1151
- * "16",
1152
- * "17",
1153
- * "18"
1236
+ * "17"
1154
1237
  * ],
1155
1238
  * "deprecated": false
1156
1239
  * },
1157
1240
  * "iphone-16": {
1158
1241
  * "name": "iPhone 16",
1159
1242
  * "versions": [
1160
- * "17",
1161
- * "18"
1243
+ * "18",
1244
+ * "26"
1162
1245
  * ],
1163
1246
  * "deprecated": false
1164
1247
  * },
1165
1248
  * "iphone-16-plus": {
1166
1249
  * "name": "iPhone 16 Plus",
1167
1250
  * "versions": [
1168
- * "17",
1169
- * "18"
1251
+ * "18",
1252
+ * "26"
1170
1253
  * ],
1171
1254
  * "deprecated": false
1172
1255
  * },
1173
1256
  * "iphone-16-pro": {
1174
1257
  * "name": "iPhone 16 Pro",
1175
1258
  * "versions": [
1176
- * "17",
1177
- * "18"
1259
+ * "18",
1260
+ * "26"
1178
1261
  * ],
1179
1262
  * "deprecated": false
1180
1263
  * },
1181
1264
  * "iphone-16-pro-max": {
1182
1265
  * "name": "iPhone 16 Pro Max",
1183
1266
  * "versions": [
1184
- * "17",
1185
- * "18"
1186
- * ],
1187
- * "deprecated": false
1188
- * },
1189
- * "iphone-13": {
1190
- * "name": "iPhone 13",
1191
- * "versions": [
1192
- * "15",
1193
- * "16",
1194
- * "17"
1195
- * ],
1196
- * "deprecated": true
1197
- * },
1198
- * "ipad-air": {
1199
- * "name": "iPad Air",
1200
- * "versions": [
1201
- * "15",
1202
- * "16",
1203
- * "17"
1267
+ * "18",
1268
+ * "26"
1204
1269
  * ],
1205
1270
  * "deprecated": false
1206
1271
  * },
1207
1272
  * "ipad-pro-6th-gen": {
1208
1273
  * "name": "iPad Pro (6th gen)",
1209
1274
  * "versions": [
1210
- * "16",
1211
- * "17",
1212
- * "18"
1275
+ * "18",
1276
+ * "26"
1213
1277
  * ],
1214
1278
  * "deprecated": false
1215
1279
  * }
@@ -1302,10 +1366,11 @@ export interface operations {
1302
1366
  * "2.0.2",
1303
1367
  * "2.0.3",
1304
1368
  * "2.0.4",
1305
- * "2.0.9"
1369
+ * "2.0.9",
1370
+ * "2.1.0"
1306
1371
  * ],
1307
1372
  * "defaultVersion": "1.41.0",
1308
- * "latestVersion": "2.0.9"
1373
+ * "latestVersion": "2.1.0"
1309
1374
  * }
1310
1375
  * }
1311
1376
  * }
@@ -1499,7 +1564,7 @@ export interface operations {
1499
1564
  };
1500
1565
  };
1501
1566
  };
1502
- OrgController_paddleTransactionCompleted: {
1567
+ OrgController_handlePaddleWebhook: {
1503
1568
  parameters: {
1504
1569
  query?: never;
1505
1570
  header: {
@@ -1510,7 +1575,7 @@ export interface operations {
1510
1575
  };
1511
1576
  requestBody?: never;
1512
1577
  responses: {
1513
- /** @description Success. */
1578
+ /** @description Paddle webhook handler. */
1514
1579
  201: {
1515
1580
  headers: {
1516
1581
  [name: string]: unknown;
@@ -1605,6 +1670,97 @@ export interface operations {
1605
1670
  };
1606
1671
  };
1607
1672
  };
1673
+ OrgController_getAllSubscriptions: {
1674
+ parameters: {
1675
+ query?: never;
1676
+ header: {
1677
+ "x-app-api-key": string;
1678
+ };
1679
+ path?: never;
1680
+ cookie?: never;
1681
+ };
1682
+ requestBody: {
1683
+ content: {
1684
+ "application/json": {
1685
+ orgId: string;
1686
+ };
1687
+ };
1688
+ };
1689
+ responses: {
1690
+ /** @description All subscription data fetched successfully. */
1691
+ 201: {
1692
+ headers: {
1693
+ [name: string]: unknown;
1694
+ };
1695
+ content: {
1696
+ "application/json": Record<string, never>;
1697
+ };
1698
+ };
1699
+ };
1700
+ };
1701
+ OrgController_updateOverageLimit: {
1702
+ parameters: {
1703
+ query?: never;
1704
+ header: {
1705
+ "x-app-api-key": string;
1706
+ };
1707
+ path?: never;
1708
+ cookie?: never;
1709
+ };
1710
+ requestBody: {
1711
+ content: {
1712
+ "application/json": {
1713
+ orgId: string;
1714
+ overageLimit: number;
1715
+ };
1716
+ };
1717
+ };
1718
+ responses: {
1719
+ /** @description Overage limit updated successfully. */
1720
+ 201: {
1721
+ headers: {
1722
+ [name: string]: unknown;
1723
+ };
1724
+ content: {
1725
+ "application/json": Record<string, never>;
1726
+ };
1727
+ };
1728
+ };
1729
+ };
1730
+ OrgController_getUsageHistory: {
1731
+ parameters: {
1732
+ query?: never;
1733
+ header: {
1734
+ "x-app-api-key": string;
1735
+ };
1736
+ path?: never;
1737
+ cookie?: never;
1738
+ };
1739
+ requestBody: {
1740
+ content: {
1741
+ "application/json": {
1742
+ orgId: string;
1743
+ /** @enum {string} */
1744
+ format?: "json" | "csv";
1745
+ /** Format: date-time */
1746
+ startDate?: string;
1747
+ /** Format: date-time */
1748
+ endDate?: string;
1749
+ };
1750
+ };
1751
+ };
1752
+ responses: {
1753
+ /** @description Usage history fetched successfully. */
1754
+ 201: {
1755
+ headers: {
1756
+ [name: string]: unknown;
1757
+ };
1758
+ content: {
1759
+ "application/json": unknown[];
1760
+ };
1761
+ };
1762
+ };
1763
+ };
1608
1764
  FrontendController_checkDomainSaml: {
1609
1765
  parameters: {
1610
1766
  query?: never;
@@ -1652,6 +1808,54 @@ export interface operations {
1652
1808
  };
1653
1809
  };
1654
1810
  };
1811
+ FrontendController_validateEmail: {
1812
+ parameters: {
1813
+ query?: never;
1814
+ header?: never;
1815
+ path?: never;
1816
+ cookie?: never;
1817
+ };
1818
+ /** @description Email address to validate */
1819
+ requestBody: {
1820
+ content: {
1821
+ "application/json": {
1822
+ /** @example user@example.com */
1823
+ email: string;
1824
+ };
1825
+ };
1826
+ };
1827
+ responses: {
1828
+ /** @description Email validation result */
1829
+ 200: {
1830
+ headers: {
1831
+ [name: string]: unknown;
1832
+ };
1833
+ content: {
1834
+ "application/json": {
1835
+ valid?: boolean;
1836
+ reason?: string;
1837
+ };
1838
+ };
1839
+ };
1840
+ 201: {
1841
+ headers: {
1842
+ [name: string]: unknown;
1843
+ };
1844
+ content?: never;
1845
+ };
1846
+ /** @description Bad request - invalid email or API error */
1847
+ 400: {
1848
+ headers: {
1849
+ [name: string]: unknown;
1850
+ };
1851
+ content: {
1852
+ "application/json": {
1853
+ error?: string;
1854
+ };
1855
+ };
1856
+ };
1857
+ };
1858
+ };
1655
1859
  HealthController_health: {
1656
1860
  parameters: {
1657
1861
  query?: never;
@@ -1680,4 +1884,64 @@ export interface operations {
1680
1884
  };
1681
1885
  };
1682
1886
  };
1887
+ BillingController_createSubscription: {
1888
+ parameters: {
1889
+ query?: never;
1890
+ header?: never;
1891
+ path?: never;
1892
+ cookie?: never;
1893
+ };
1894
+ requestBody: {
1895
+ content: {
1896
+ "application/json": {
1897
+ items: {
1898
+ price_id?: string;
1899
+ quantity?: number;
1900
+ }[];
1901
+ customer_email?: string;
1902
+ custom_data?: {
1903
+ orgId?: string;
1904
+ userId?: string;
1905
+ };
1906
+ billing_details?: {
1907
+ enable_checkout?: boolean;
1908
+ };
1909
+ };
1910
+ };
1911
+ };
1912
+ responses: {
1913
+ /** @description Subscription created successfully. */
1914
+ 201: {
1915
+ headers: {
1916
+ [name: string]: unknown;
1917
+ };
1918
+ content: {
1919
+ "application/json": Record<string, never>;
1920
+ };
1921
+ };
1922
+ };
1923
+ };
1924
+ StatsController_getMarketingStats: {
1925
+ parameters: {
1926
+ query?: never;
1927
+ header?: never;
1928
+ path?: never;
1929
+ cookie?: never;
1930
+ };
1931
+ requestBody?: never;
1932
+ responses: {
1933
+ /** @description Public marketing statistics */
1934
+ 200: {
1935
+ headers: {
1936
+ [name: string]: unknown;
1937
+ };
1938
+ content: {
1939
+ "application/json": {
1940
+ /** @example 150000 */
1941
+ total_count?: number;
1942
+ };
1943
+ };
1944
+ };
1945
+ };
1946
+ };
1683
1947
  }
@@ -181,6 +181,12 @@
181
181
  "allowNo": false,
182
182
  "type": "boolean"
183
183
  },
184
+ "enable-animations": {
185
+ "description": "[Android only] Keep device animations enabled during test execution. By default, animations are disabled to reduce CPU load and improve test reliability.",
186
+ "name": "enable-animations",
187
+ "allowNo": false,
188
+ "type": "boolean"
189
+ },
184
190
  "env": {
185
191
  "char": "e",
186
192
  "description": "One or more environment variables to inject into your flows",
@@ -279,7 +285,7 @@
279
285
  "aliases": [
280
286
  "maestroVersion"
281
287
  ],
282
- "description": "Maestro version to run your flow against. Use \"latest\" for the most recent version. Supported versions are fetched from the API.",
288
+ "description": "Maestro version to run your flow against. Use \"latest\" for the most recent version. See https://docs.devicecloud.dev/reference/maestro-versions for supported versions.",
283
289
  "name": "maestro-version",
284
290
  "hasDynamicHelp": false,
285
291
  "multiple": false,
@@ -411,7 +417,8 @@
411
417
  "options": [
412
418
  "allure",
413
419
  "junit",
414
- "html"
420
+ "html",
421
+ "html-detailed"
415
422
  ],
416
423
  "type": "option"
417
424
  }
@@ -673,5 +680,5 @@
673
680
  ]
674
681
  }
675
682
  },
676
- "version": "4.2.5"
683
+ "version": "4.3.0"
677
684
  }
package/package.json CHANGED
@@ -67,7 +67,7 @@
67
67
  "type": "git",
68
68
  "url": "https://devicecloud.dev"
69
69
  },
70
- "version": "4.2.5",
70
+ "version": "4.3.0",
71
71
  "bugs": {
72
72
  "url": "https://discord.gg/gm3mJwcNw8"
73
73
  },