@devicecloud.dev/dcd 4.1.2 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/commands/cloud.d.ts +26 -34
  2. package/dist/commands/cloud.js +117 -513
  3. package/dist/config/flags/api.flags.d.ts +7 -0
  4. package/dist/config/flags/api.flags.js +19 -0
  5. package/dist/config/flags/binary.flags.d.ts +8 -0
  6. package/dist/config/flags/binary.flags.js +20 -0
  7. package/dist/config/flags/device.flags.d.ts +14 -0
  8. package/dist/config/flags/device.flags.js +46 -0
  9. package/dist/config/flags/environment.flags.d.ts +11 -0
  10. package/dist/config/flags/environment.flags.js +37 -0
  11. package/dist/config/flags/execution.flags.d.ts +13 -0
  12. package/dist/config/flags/execution.flags.js +50 -0
  13. package/dist/config/flags/output.flags.d.ts +18 -0
  14. package/dist/config/flags/output.flags.js +61 -0
  15. package/dist/constants.d.ts +28 -24
  16. package/dist/constants.js +21 -206
  17. package/dist/gateways/api-gateway.d.ts +3 -3
  18. package/dist/methods.d.ts +0 -4
  19. package/dist/methods.js +15 -80
  20. package/dist/services/device-validation.service.d.ts +29 -0
  21. package/dist/services/device-validation.service.js +72 -0
  22. package/dist/{plan.d.ts → services/execution-plan.service.d.ts} +1 -1
  23. package/dist/{plan.js → services/execution-plan.service.js} +10 -10
  24. package/dist/{planMethods.js → services/execution-plan.utils.js} +0 -1
  25. package/dist/services/metadata-extractor.service.d.ts +46 -0
  26. package/dist/services/metadata-extractor.service.js +138 -0
  27. package/dist/services/moropo.service.d.ts +20 -0
  28. package/dist/services/moropo.service.js +113 -0
  29. package/dist/services/report-download.service.d.ts +40 -0
  30. package/dist/services/report-download.service.js +110 -0
  31. package/dist/services/results-polling.service.d.ts +45 -0
  32. package/dist/services/results-polling.service.js +210 -0
  33. package/dist/services/test-submission.service.d.ts +41 -0
  34. package/dist/services/test-submission.service.js +116 -0
  35. package/dist/services/version.service.d.ts +31 -0
  36. package/dist/services/version.service.js +81 -0
  37. package/dist/types/{schema.types.d.ts → generated/schema.types.d.ts} +349 -349
  38. package/dist/types/index.d.ts +6 -0
  39. package/dist/types/index.js +24 -0
  40. package/dist/utils/compatibility.d.ts +5 -0
  41. package/oclif.manifest.json +195 -209
  42. package/package.json +2 -9
  43. /package/dist/{planMethods.d.ts → services/execution-plan.utils.d.ts} +0 -0
  44. /package/dist/types/{device.types.d.ts → domain/device.types.d.ts} +0 -0
  45. /package/dist/types/{device.types.js → domain/device.types.js} +0 -0
  46. /package/dist/types/{schema.types.js → generated/schema.types.js} +0 -0
@@ -3,32 +3,30 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export interface paths {
6
- "/uploads/binary": {
7
- post: operations["UploadsController_createBinary"];
8
- };
9
- "/uploads/getBinaryUploadUrl": {
10
- post: operations["UploadsController_getBinaryUploadUrl"];
11
- };
12
- "/uploads/checkForExistingUpload": {
13
- post: operations["UploadsController_checkForExistingUpload"];
6
+ "/allure/{uploadId}/download": {
7
+ /**
8
+ * Download Allure report as HTML
9
+ * @description Downloads a single-file Allure report as HTML containing all test results. Report is generated once and stored in Supabase Storage for subsequent downloads.
10
+ */
11
+ get: operations["AllureController_downloadAllureReport"];
14
12
  };
15
- "/uploads/finaliseUpload": {
16
- post: operations["UploadsController_finaliseUpload"];
13
+ "/frontend/check-domain-saml": {
14
+ post: operations["FrontendController_checkDomainSaml"];
17
15
  };
18
- "/uploads/flow": {
19
- post: operations["UploadsController_createTest"];
16
+ "/health": {
17
+ get: operations["HealthController_health"];
20
18
  };
21
- "/uploads/retryTest": {
22
- post: operations["UploadsController_retryTest"];
19
+ "/org/accept-invite": {
20
+ post: operations["OrgController_acceptInvite"];
23
21
  };
24
- "/uploads/cancelTest": {
25
- post: operations["UploadsController_cancelTest"];
22
+ "/org/increase_credits": {
23
+ post: operations["OrgController_paddleTransactionCompleted"];
26
24
  };
27
- "/uploads/status": {
28
- get: operations["UploadsController_getUploadStatus"];
25
+ "/org/invite-team-member": {
26
+ post: operations["OrgController_inviteTeamMember"];
29
27
  };
30
- "/uploads/{uploadId}": {
31
- delete: operations["UploadsController_deleteUpload"];
28
+ "/org/update-name": {
29
+ post: operations["OrgController_updateOrgName"];
32
30
  };
33
31
  "/results/{uploadId}": {
34
32
  get: operations["ResultsController_getResults"];
@@ -36,29 +34,49 @@ export interface paths {
36
34
  "/results/{uploadId}/download": {
37
35
  post: operations["ResultsController_getTestRunArtifacts"];
38
36
  };
39
- "/results/notify/{uploadId}": {
40
- post: operations["ResultsController_notifyTestRunComplete"];
37
+ "/results/{uploadId}/html-report": {
38
+ get: operations["ResultsController_downloadHtmlReport"];
41
39
  };
42
40
  "/results/{uploadId}/report": {
43
41
  get: operations["ResultsController_downloadReport"];
44
42
  };
45
- "/results/{uploadId}/html-report": {
46
- get: operations["ResultsController_downloadHtmlReport"];
47
- };
48
43
  "/results/compatibility/data": {
49
44
  get: operations["ResultsController_getCompatibilityData"];
50
45
  };
51
- "/allure/{uploadId}/download": {
52
- /**
53
- * Download Allure report as HTML
54
- * @description Downloads a single-file Allure report as HTML containing all test results. Report is generated once and stored in Supabase Storage for subsequent downloads.
55
- */
56
- get: operations["AllureController_downloadAllureReport"];
46
+ "/results/notify/{uploadId}": {
47
+ post: operations["ResultsController_notifyTestRunComplete"];
48
+ };
49
+ "/uploads/{uploadId}": {
50
+ delete: operations["UploadsController_deleteUpload"];
51
+ };
52
+ "/uploads/binary": {
53
+ post: operations["UploadsController_createBinary"];
54
+ };
55
+ "/uploads/cancelTest": {
56
+ post: operations["UploadsController_cancelTest"];
57
+ };
58
+ "/uploads/checkForExistingUpload": {
59
+ post: operations["UploadsController_checkForExistingUpload"];
60
+ };
61
+ "/uploads/finaliseUpload": {
62
+ post: operations["UploadsController_finaliseUpload"];
63
+ };
64
+ "/uploads/flow": {
65
+ post: operations["UploadsController_createTest"];
66
+ };
67
+ "/uploads/getBinaryUploadUrl": {
68
+ post: operations["UploadsController_getBinaryUploadUrl"];
69
+ };
70
+ "/uploads/retryTest": {
71
+ post: operations["UploadsController_retryTest"];
72
+ };
73
+ "/uploads/status": {
74
+ get: operations["UploadsController_getUploadStatus"];
57
75
  };
58
76
  "/webhooks": {
77
+ delete: operations["WebhooksController_deleteWebhook"];
59
78
  get: operations["WebhooksController_getWebhook"];
60
79
  post: operations["WebhooksController_setWebhook"];
61
- delete: operations["WebhooksController_deleteWebhook"];
62
80
  };
63
81
  "/webhooks/regenerate-secret": {
64
82
  post: operations["WebhooksController_regenerateWebhookSecret"];
@@ -66,60 +84,20 @@ export interface paths {
66
84
  "/webhooks/test": {
67
85
  post: operations["WebhooksController_testWebhook"];
68
86
  };
69
- "/org/increase_credits": {
70
- post: operations["OrgController_paddleTransactionCompleted"];
71
- };
72
- "/org/update-name": {
73
- post: operations["OrgController_updateOrgName"];
74
- };
75
- "/org/invite-team-member": {
76
- post: operations["OrgController_inviteTeamMember"];
77
- };
78
- "/org/accept-invite": {
79
- post: operations["OrgController_acceptInvite"];
80
- };
81
- "/frontend/check-domain-saml": {
82
- post: operations["FrontendController_checkDomainSaml"];
83
- };
84
- "/health": {
85
- get: operations["HealthController_health"];
86
- };
87
87
  }
88
88
  export type webhooks = Record<string, never>;
89
89
  export interface components {
90
+ headers: never;
91
+ parameters: never;
92
+ pathItems: never;
93
+ requestBodies: never;
94
+ responses: never;
90
95
  schemas: {
91
- IDBResult: {
92
- binary_upload_id: string;
93
- cost: number | null;
94
- created_at: string;
95
- env: Record<string, never>;
96
- id: number;
97
- org_id: number;
98
- platform: string;
99
- simulator_name: string;
100
- status: string;
101
- test_file_name: string;
102
- test_upload_id: string;
103
- };
104
- ICreateBinaryUploadArgs: {
105
- /**
106
- * Format: binary
107
- * @description This file must either be an apk or a zip file
108
- */
109
- file: string;
110
- };
111
- ICreateBinaryResponse: {
112
- message: string;
113
- binaryId: string;
114
- };
115
- IGetBinaryUploadUrlArgs: {
116
- platform: Record<string, never>;
117
- };
118
- IGetBinaryUploadUrlResponse: {
119
- message: string;
120
- path: string;
121
- token: string;
122
- id: string;
96
+ ICancelTestArgs: {
97
+ /** @description ID of a specific result to cancel. Either resultId or uploadId must be provided, but not both. */
98
+ resultId?: number;
99
+ /** @description ID of an upload to cancel all pending results for. Either resultId or uploadId must be provided, but not both. */
100
+ uploadId?: string;
123
101
  };
124
102
  ICheckForExistingUploadArgs: {
125
103
  sha: string;
@@ -128,119 +106,167 @@ export interface components {
128
106
  appBinaryId: string;
129
107
  exists: boolean;
130
108
  };
131
- IFinaliseUploadArgs: {
132
- id: string;
133
- path: string;
134
- metadata: Record<string, never>;
135
- sha: string;
109
+ ICreateBinaryResponse: {
110
+ binaryId: string;
111
+ message: string;
136
112
  };
137
- IFinaliseUploadResponse: Record<string, never>;
138
- ICreateTestUploadArgs: {
113
+ ICreateBinaryUploadArgs: {
139
114
  /**
140
115
  * Format: binary
141
- * @description This file must be a zip file
116
+ * @description This file must either be an apk or a zip file
142
117
  */
143
118
  file: string;
119
+ };
120
+ ICreateTestUploadArgs: {
144
121
  /** @enum {string} */
145
122
  androidApiLevel?: "29" | "30" | "31" | "32" | "33" | "34" | "35";
146
123
  /** @enum {string} */
147
- androidDevice?: "pixel-6" | "pixel-6-pro" | "pixel-7" | "pixel-7-pro" | "generic-tablet";
124
+ androidDevice?: "generic-tablet" | "pixel-6" | "pixel-6-pro" | "pixel-7" | "pixel-7-pro";
148
125
  apiKey?: string;
149
126
  apiUrl?: string;
127
+ appBinaryId: string;
150
128
  appFile?: string;
129
+ config: string;
130
+ env: string;
131
+ /**
132
+ * Format: binary
133
+ * @description This file must be a zip file
134
+ */
135
+ file: string;
136
+ flowMetadata?: string;
137
+ googlePlay: boolean;
151
138
  /** @enum {string} */
152
- iOSVersion?: "16" | "17" | "18" | "26";
139
+ iOSDevice?: "ipad-pro-6th-gen" | "iphone-14" | "iphone-14-pro" | "iphone-15" | "iphone-15-pro" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max";
153
140
  /** @enum {string} */
154
- 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";
141
+ iOSVersion?: "16" | "17" | "18" | "26";
142
+ metadata?: string;
143
+ name: string;
155
144
  platform?: string;
156
145
  /** @enum {string} */
157
- runnerType?: "m4" | "m1" | "default" | "gpu1";
158
- metadata?: string;
159
- workspaceConfig?: string;
160
- flowMetadata?: string;
161
- testFileOverrides?: string;
162
- testFileNames?: string;
146
+ runnerType?: "default" | "gpu1" | "m1" | "m4";
163
147
  sequentialFlows?: string;
164
- appBinaryId: string;
165
- env: string;
166
- googlePlay: boolean;
167
- config: string;
168
- name: string;
148
+ testFileNames?: string;
149
+ testFileOverrides?: string;
150
+ workspaceConfig?: string;
151
+ };
152
+ IDBResult: {
153
+ binary_upload_id: string;
154
+ cost: null | number;
155
+ created_at: string;
156
+ env: Record<string, never>;
157
+ id: number;
158
+ org_id: number;
159
+ platform: string;
160
+ simulator_name: string;
161
+ status: string;
162
+ test_file_name: string;
163
+ test_upload_id: string;
164
+ };
165
+ IFinaliseUploadArgs: {
166
+ id: string;
167
+ metadata: Record<string, never>;
168
+ path: string;
169
+ sha: string;
170
+ };
171
+ IFinaliseUploadResponse: Record<string, never>;
172
+ IGetBinaryUploadUrlArgs: {
173
+ platform: Record<string, never>;
174
+ };
175
+ IGetBinaryUploadUrlResponse: {
176
+ id: string;
177
+ message: string;
178
+ path: string;
179
+ token: string;
169
180
  };
170
181
  IRetryTestArgs: {
171
182
  resultId: number;
172
183
  };
173
- ICancelTestArgs: {
174
- /** @description ID of a specific result to cancel. Either resultId or uploadId must be provided, but not both. */
175
- resultId?: number;
176
- /** @description ID of an upload to cancel all pending results for. Either resultId or uploadId must be provided, but not both. */
177
- uploadId?: string;
178
- };
179
184
  TResultResponse: {
185
+ duration_seconds?: number;
186
+ fail_reason?: string;
180
187
  id: number;
181
- test_file_name: string;
182
- status: string;
183
188
  retry_of?: number;
184
- fail_reason?: string;
185
- duration_seconds?: number;
189
+ status: string;
190
+ test_file_name: string;
186
191
  };
187
192
  };
188
- responses: never;
189
- parameters: never;
190
- requestBodies: never;
191
- headers: never;
192
- pathItems: never;
193
193
  }
194
194
  export type $defs = Record<string, never>;
195
195
  export type external = Record<string, never>;
196
196
  export interface operations {
197
- UploadsController_createBinary: {
197
+ /**
198
+ * Download Allure report as HTML
199
+ * @description Downloads a single-file Allure report as HTML containing all test results. Report is generated once and stored in Supabase Storage for subsequent downloads.
200
+ */
201
+ AllureController_downloadAllureReport: {
198
202
  parameters: {
199
203
  header: {
200
204
  "x-app-api-key": string;
201
205
  };
202
- };
203
- requestBody: {
204
- content: {
205
- "multipart/form-data": components["schemas"]["ICreateBinaryUploadArgs"];
206
+ path: {
207
+ /** @description The upload ID to generate Allure report for */
208
+ uploadId: string;
206
209
  };
207
210
  };
208
211
  responses: {
209
- /**
210
- * @description The record has been successfully created.
211
- * @example {
212
- * "message": "Binary uploaded successfully",
213
- * "binaryId": "binary-123-abc-def"
214
- * }
215
- */
216
- 201: {
212
+ /** @description Allure report HTML file download */
213
+ 200: {
217
214
  content: {
218
- "application/json": components["schemas"]["ICreateBinaryResponse"];
215
+ "text/html": string;
219
216
  };
220
217
  };
221
- };
222
- };
223
- UploadsController_getBinaryUploadUrl: {
224
- parameters: {
225
- header: {
226
- "x-app-api-key": string;
218
+ /** @description Upload not found or no results available */
219
+ 404: {
220
+ content: never;
227
221
  };
228
222
  };
223
+ };
224
+ FrontendController_checkDomainSaml: {
225
+ /** @description Domain to check for SAML configuration */
229
226
  requestBody: {
230
227
  content: {
231
- "application/json": components["schemas"]["IGetBinaryUploadUrlArgs"];
228
+ "application/json": {
229
+ /** @example example.com */
230
+ domain: string;
231
+ };
232
232
  };
233
233
  };
234
234
  responses: {
235
- /** @description The url has been successfully created. */
235
+ /** @description SAML status for the domain */
236
+ 200: {
237
+ content: {
238
+ "application/json": {
239
+ forceSaml?: boolean;
240
+ };
241
+ };
242
+ };
236
243
  201: {
244
+ content: never;
245
+ };
246
+ /** @description Bad request - invalid domain or API error */
247
+ 400: {
237
248
  content: {
238
- "application/json": components["schemas"]["IGetBinaryUploadUrlResponse"];
249
+ "application/json": {
250
+ error?: string;
251
+ };
239
252
  };
240
253
  };
241
254
  };
242
255
  };
243
- UploadsController_checkForExistingUpload: {
256
+ HealthController_health: {
257
+ responses: {
258
+ /** @description Health check endpoint */
259
+ 200: {
260
+ content: {
261
+ "application/json": {
262
+ /** @example ok */
263
+ status?: string;
264
+ };
265
+ };
266
+ };
267
+ };
268
+ };
269
+ OrgController_acceptInvite: {
244
270
  parameters: {
245
271
  header: {
246
272
  "x-app-api-key": string;
@@ -248,19 +274,21 @@ export interface operations {
248
274
  };
249
275
  requestBody: {
250
276
  content: {
251
- "application/json": components["schemas"]["ICheckForExistingUploadArgs"];
277
+ "application/json": {
278
+ orgId: string;
279
+ };
252
280
  };
253
281
  };
254
282
  responses: {
255
- /** @description The url has been successfully created. */
283
+ /** @description Team invite accepted successfully. */
256
284
  201: {
257
285
  content: {
258
- "application/json": components["schemas"]["ICheckForExistingUploadResponse"];
286
+ "application/json": boolean;
259
287
  };
260
288
  };
261
289
  };
262
290
  };
263
- UploadsController_finaliseUpload: {
291
+ OrgController_inviteTeamMember: {
264
292
  parameters: {
265
293
  header: {
266
294
  "x-app-api-key": string;
@@ -268,42 +296,40 @@ export interface operations {
268
296
  };
269
297
  requestBody: {
270
298
  content: {
271
- "application/json": components["schemas"]["IFinaliseUploadArgs"];
299
+ "application/json": {
300
+ inviteEmail: string;
301
+ link: string;
302
+ orgId: string;
303
+ orgName: string;
304
+ requesterEmail: string;
305
+ };
272
306
  };
273
307
  };
274
308
  responses: {
275
- /** @description The upload has been completed. */
309
+ /** @description Team member invited successfully. */
276
310
  201: {
277
311
  content: {
278
- "application/json": components["schemas"]["IFinaliseUploadResponse"];
312
+ "application/json": boolean;
279
313
  };
280
314
  };
281
315
  };
282
316
  };
283
- UploadsController_createTest: {
317
+ OrgController_paddleTransactionCompleted: {
284
318
  parameters: {
285
319
  header: {
286
- "x-app-api-key": string;
287
- };
288
- };
289
- requestBody: {
290
- content: {
291
- "multipart/form-data": components["schemas"]["ICreateTestUploadArgs"];
320
+ "paddle-signature": string;
292
321
  };
293
322
  };
294
323
  responses: {
295
- /** @description The record has been successfully created. */
324
+ /** @description Success. */
296
325
  201: {
297
326
  content: {
298
- "application/json": {
299
- message?: string;
300
- results?: components["schemas"]["IDBResult"][];
301
- };
327
+ "application/json": string;
302
328
  };
303
329
  };
304
330
  };
305
331
  };
306
- UploadsController_retryTest: {
332
+ OrgController_updateOrgName: {
307
333
  parameters: {
308
334
  header: {
309
335
  "x-app-api-key": string;
@@ -311,85 +337,74 @@ export interface operations {
311
337
  };
312
338
  requestBody: {
313
339
  content: {
314
- "application/json": components["schemas"]["IRetryTestArgs"];
340
+ "application/json": {
341
+ name: string;
342
+ orgId: string;
343
+ };
315
344
  };
316
345
  };
317
346
  responses: {
318
- /** @description The record has been successfully created. */
347
+ /** @description Organization name updated successfully. */
319
348
  201: {
320
349
  content: {
321
- "application/json": {
322
- message?: string;
323
- results?: components["schemas"]["IDBResult"][];
324
- };
350
+ "application/json": boolean;
325
351
  };
326
352
  };
327
353
  };
328
354
  };
329
- UploadsController_cancelTest: {
355
+ ResultsController_downloadHtmlReport: {
330
356
  parameters: {
331
357
  header: {
332
358
  "x-app-api-key": string;
333
359
  };
334
- };
335
- requestBody: {
336
- content: {
337
- "application/json": components["schemas"]["ICancelTestArgs"];
360
+ path: {
361
+ uploadId: string;
338
362
  };
339
363
  };
340
364
  responses: {
341
- /** @description The record has been successfully cancelled. */
342
- 201: {
365
+ /** @description Download combined HTML test report (report.html) for the upload */
366
+ 200: {
343
367
  content: {
344
- "application/json": {
345
- message?: string;
346
- success?: boolean;
347
- cancelledCount?: number;
348
- };
368
+ "application/json": string;
349
369
  };
350
370
  };
351
371
  };
352
372
  };
353
- UploadsController_getUploadStatus: {
373
+ ResultsController_downloadReport: {
354
374
  parameters: {
355
- query?: {
356
- /** @description Upload ID to get status for */
357
- uploadId?: string;
358
- /** @description Upload name to get status for */
359
- name?: string;
360
- };
361
375
  header: {
362
376
  "x-app-api-key": string;
363
377
  };
378
+ path: {
379
+ uploadId: string;
380
+ };
364
381
  };
365
382
  responses: {
366
- /** @description Upload status */
383
+ /** @description Download combined JUNIT test report (report.xml) for the upload */
367
384
  200: {
368
385
  content: {
369
- "application/json": Record<string, never>;
386
+ "application/json": string;
370
387
  };
371
388
  };
372
389
  };
373
390
  };
374
- UploadsController_deleteUpload: {
391
+ ResultsController_getCompatibilityData: {
375
392
  parameters: {
376
393
  header: {
377
394
  "x-app-api-key": string;
378
395
  };
379
- path: {
380
- uploadId: string;
381
- };
382
396
  };
383
397
  responses: {
398
+ /** @description Device compatibility lookup data */
384
399
  200: {
385
- content: never;
386
- };
387
- /** @description The upload has been successfully deleted. */
388
- 201: {
389
400
  content: {
390
401
  "application/json": {
391
- success?: boolean;
392
- message?: string;
402
+ data?: {
403
+ android?: Record<string, never>;
404
+ androidPlay?: Record<string, never>;
405
+ ios?: Record<string, never>;
406
+ };
407
+ statusCode?: number;
393
408
  };
394
409
  };
395
410
  };
@@ -409,8 +424,8 @@ export interface operations {
409
424
  200: {
410
425
  content: {
411
426
  "application/json": {
412
- statusCode?: number;
413
427
  results?: components["schemas"]["TResultResponse"][];
428
+ statusCode?: number;
414
429
  };
415
430
  };
416
431
  };
@@ -449,121 +464,124 @@ export interface operations {
449
464
  };
450
465
  };
451
466
  };
452
- ResultsController_downloadReport: {
467
+ UploadsController_cancelTest: {
468
+ parameters: {
469
+ header: {
470
+ "x-app-api-key": string;
471
+ };
472
+ };
473
+ requestBody: {
474
+ content: {
475
+ "application/json": components["schemas"]["ICancelTestArgs"];
476
+ };
477
+ };
478
+ responses: {
479
+ /** @description The record has been successfully cancelled. */
480
+ 201: {
481
+ content: {
482
+ "application/json": {
483
+ cancelledCount?: number;
484
+ message?: string;
485
+ success?: boolean;
486
+ };
487
+ };
488
+ };
489
+ };
490
+ };
491
+ UploadsController_checkForExistingUpload: {
453
492
  parameters: {
454
493
  header: {
455
494
  "x-app-api-key": string;
456
495
  };
457
- path: {
458
- uploadId: string;
496
+ };
497
+ requestBody: {
498
+ content: {
499
+ "application/json": components["schemas"]["ICheckForExistingUploadArgs"];
459
500
  };
460
501
  };
461
502
  responses: {
462
- /** @description Download combined JUNIT test report (report.xml) for the upload */
463
- 200: {
503
+ /** @description The url has been successfully created. */
504
+ 201: {
464
505
  content: {
465
- "application/json": string;
506
+ "application/json": components["schemas"]["ICheckForExistingUploadResponse"];
466
507
  };
467
508
  };
468
509
  };
469
510
  };
470
- ResultsController_downloadHtmlReport: {
511
+ UploadsController_createBinary: {
471
512
  parameters: {
472
513
  header: {
473
514
  "x-app-api-key": string;
474
515
  };
475
- path: {
476
- uploadId: string;
516
+ };
517
+ requestBody: {
518
+ content: {
519
+ "multipart/form-data": components["schemas"]["ICreateBinaryUploadArgs"];
477
520
  };
478
521
  };
479
522
  responses: {
480
- /** @description Download combined HTML test report (report.html) for the upload */
481
- 200: {
523
+ /**
524
+ * @description The record has been successfully created.
525
+ * @example {
526
+ * "message": "Binary uploaded successfully",
527
+ * "binaryId": "binary-123-abc-def"
528
+ * }
529
+ */
530
+ 201: {
482
531
  content: {
483
- "application/json": string;
532
+ "application/json": components["schemas"]["ICreateBinaryResponse"];
484
533
  };
485
534
  };
486
535
  };
487
536
  };
488
- ResultsController_getCompatibilityData: {
537
+ UploadsController_createTest: {
489
538
  parameters: {
490
539
  header: {
491
540
  "x-app-api-key": string;
492
541
  };
493
542
  };
543
+ requestBody: {
544
+ content: {
545
+ "multipart/form-data": components["schemas"]["ICreateTestUploadArgs"];
546
+ };
547
+ };
494
548
  responses: {
495
- /** @description Device compatibility lookup data */
496
- 200: {
549
+ /** @description The record has been successfully created. */
550
+ 201: {
497
551
  content: {
498
552
  "application/json": {
499
- statusCode?: number;
500
- data?: {
501
- ios?: Record<string, never>;
502
- android?: Record<string, never>;
503
- androidPlay?: Record<string, never>;
504
- };
553
+ message?: string;
554
+ results?: components["schemas"]["IDBResult"][];
505
555
  };
506
556
  };
507
557
  };
508
558
  };
509
559
  };
510
- /**
511
- * Download Allure report as HTML
512
- * @description Downloads a single-file Allure report as HTML containing all test results. Report is generated once and stored in Supabase Storage for subsequent downloads.
513
- */
514
- AllureController_downloadAllureReport: {
560
+ UploadsController_deleteUpload: {
515
561
  parameters: {
516
562
  header: {
517
563
  "x-app-api-key": string;
518
564
  };
519
565
  path: {
520
- /** @description The upload ID to generate Allure report for */
521
566
  uploadId: string;
522
567
  };
523
568
  };
524
569
  responses: {
525
- /** @description Allure report HTML file download */
526
570
  200: {
527
- content: {
528
- "text/html": string;
529
- };
530
- };
531
- /** @description Upload not found or no results available */
532
- 404: {
533
571
  content: never;
534
572
  };
535
- };
536
- };
537
- WebhooksController_getWebhook: {
538
- parameters: {
539
- query?: {
540
- /** @description Set to true to return full secret instead of masked version */
541
- show_secret?: boolean;
542
- };
543
- header: {
544
- "x-app-api-key": string;
545
- };
546
- };
547
- responses: {
548
- /** @description Current webhook configuration */
549
- 200: {
573
+ /** @description The upload has been successfully deleted. */
574
+ 201: {
550
575
  content: {
551
576
  "application/json": {
552
- webhook_url?: string;
553
- /** @description Full secret (only when show_secret=true) */
554
- secret_key?: string;
555
- /** @description Masked secret (default) */
556
- secret_key_masked?: string;
557
- /** Format: date-time */
558
- created_at?: string;
559
- /** Format: date-time */
560
- updated_at?: string;
577
+ message?: string;
578
+ success?: boolean;
561
579
  };
562
580
  };
563
581
  };
564
582
  };
565
583
  };
566
- WebhooksController_setWebhook: {
584
+ UploadsController_finaliseUpload: {
567
585
  parameters: {
568
586
  header: {
569
587
  "x-app-api-key": string;
@@ -571,55 +589,60 @@ export interface operations {
571
589
  };
572
590
  requestBody: {
573
591
  content: {
574
- "application/json": {
575
- /**
576
- * Format: uri
577
- * @example https://api.example.com/webhook
578
- */
579
- url: string;
580
- };
592
+ "application/json": components["schemas"]["IFinaliseUploadArgs"];
581
593
  };
582
594
  };
583
595
  responses: {
584
- /** @description Webhook URL set successfully */
596
+ /** @description The upload has been completed. */
585
597
  201: {
586
598
  content: {
587
- "application/json": Record<string, never>;
599
+ "application/json": components["schemas"]["IFinaliseUploadResponse"];
588
600
  };
589
601
  };
590
602
  };
591
603
  };
592
- WebhooksController_deleteWebhook: {
604
+ UploadsController_getBinaryUploadUrl: {
593
605
  parameters: {
594
606
  header: {
595
607
  "x-app-api-key": string;
596
608
  };
597
609
  };
610
+ requestBody: {
611
+ content: {
612
+ "application/json": components["schemas"]["IGetBinaryUploadUrlArgs"];
613
+ };
614
+ };
598
615
  responses: {
599
- /** @description Webhook configuration deleted successfully */
600
- 200: {
616
+ /** @description The url has been successfully created. */
617
+ 201: {
601
618
  content: {
602
- "application/json": Record<string, never>;
619
+ "application/json": components["schemas"]["IGetBinaryUploadUrlResponse"];
603
620
  };
604
621
  };
605
622
  };
606
623
  };
607
- WebhooksController_regenerateWebhookSecret: {
624
+ UploadsController_getUploadStatus: {
608
625
  parameters: {
609
626
  header: {
610
627
  "x-app-api-key": string;
611
628
  };
629
+ query?: {
630
+ /** @description Upload name to get status for */
631
+ name?: string;
632
+ /** @description Upload ID to get status for */
633
+ uploadId?: string;
634
+ };
612
635
  };
613
636
  responses: {
614
- /** @description Webhook secret regenerated successfully */
615
- 201: {
637
+ /** @description Upload status */
638
+ 200: {
616
639
  content: {
617
640
  "application/json": Record<string, never>;
618
641
  };
619
642
  };
620
643
  };
621
644
  };
622
- WebhooksController_testWebhook: {
645
+ UploadsController_retryTest: {
623
646
  parameters: {
624
647
  header: {
625
648
  "x-app-api-key": string;
@@ -627,86 +650,81 @@ export interface operations {
627
650
  };
628
651
  requestBody: {
629
652
  content: {
630
- "application/json": {
631
- /** Format: uri */
632
- url?: string;
633
- };
653
+ "application/json": components["schemas"]["IRetryTestArgs"];
634
654
  };
635
655
  };
636
656
  responses: {
637
- /** @description Test webhook sent successfully */
657
+ /** @description The record has been successfully created. */
638
658
  201: {
639
659
  content: {
640
- "application/json": Record<string, never>;
660
+ "application/json": {
661
+ message?: string;
662
+ results?: components["schemas"]["IDBResult"][];
663
+ };
641
664
  };
642
665
  };
643
666
  };
644
667
  };
645
- OrgController_paddleTransactionCompleted: {
668
+ WebhooksController_deleteWebhook: {
646
669
  parameters: {
647
670
  header: {
648
- "paddle-signature": string;
671
+ "x-app-api-key": string;
649
672
  };
650
673
  };
651
674
  responses: {
652
- /** @description Success. */
653
- 201: {
675
+ /** @description Webhook configuration deleted successfully */
676
+ 200: {
654
677
  content: {
655
- "application/json": string;
678
+ "application/json": Record<string, never>;
656
679
  };
657
680
  };
658
681
  };
659
682
  };
660
- OrgController_updateOrgName: {
683
+ WebhooksController_getWebhook: {
661
684
  parameters: {
662
685
  header: {
663
686
  "x-app-api-key": string;
664
687
  };
665
- };
666
- requestBody: {
667
- content: {
668
- "application/json": {
669
- orgId: string;
670
- name: string;
671
- };
688
+ query?: {
689
+ /** @description Set to true to return full secret instead of masked version */
690
+ show_secret?: boolean;
672
691
  };
673
692
  };
674
693
  responses: {
675
- /** @description Organization name updated successfully. */
676
- 201: {
694
+ /** @description Current webhook configuration */
695
+ 200: {
677
696
  content: {
678
- "application/json": boolean;
697
+ "application/json": {
698
+ /** Format: date-time */
699
+ created_at?: string;
700
+ /** @description Full secret (only when show_secret=true) */
701
+ secret_key?: string;
702
+ /** @description Masked secret (default) */
703
+ secret_key_masked?: string;
704
+ /** Format: date-time */
705
+ updated_at?: string;
706
+ webhook_url?: string;
707
+ };
679
708
  };
680
709
  };
681
710
  };
682
711
  };
683
- OrgController_inviteTeamMember: {
712
+ WebhooksController_regenerateWebhookSecret: {
684
713
  parameters: {
685
714
  header: {
686
715
  "x-app-api-key": string;
687
716
  };
688
717
  };
689
- requestBody: {
690
- content: {
691
- "application/json": {
692
- inviteEmail: string;
693
- requesterEmail: string;
694
- link: string;
695
- orgId: string;
696
- orgName: string;
697
- };
698
- };
699
- };
700
718
  responses: {
701
- /** @description Team member invited successfully. */
719
+ /** @description Webhook secret regenerated successfully */
702
720
  201: {
703
721
  content: {
704
- "application/json": boolean;
722
+ "application/json": Record<string, never>;
705
723
  };
706
724
  };
707
725
  };
708
726
  };
709
- OrgController_acceptInvite: {
727
+ WebhooksController_setWebhook: {
710
728
  parameters: {
711
729
  header: {
712
730
  "x-app-api-key": string;
@@ -715,60 +733,42 @@ export interface operations {
715
733
  requestBody: {
716
734
  content: {
717
735
  "application/json": {
718
- orgId: string;
736
+ /**
737
+ * Format: uri
738
+ * @example https://api.example.com/webhook
739
+ */
740
+ url: string;
719
741
  };
720
742
  };
721
743
  };
722
744
  responses: {
723
- /** @description Team invite accepted successfully. */
745
+ /** @description Webhook URL set successfully */
724
746
  201: {
725
747
  content: {
726
- "application/json": boolean;
748
+ "application/json": Record<string, never>;
727
749
  };
728
750
  };
729
751
  };
730
752
  };
731
- FrontendController_checkDomainSaml: {
732
- /** @description Domain to check for SAML configuration */
753
+ WebhooksController_testWebhook: {
754
+ parameters: {
755
+ header: {
756
+ "x-app-api-key": string;
757
+ };
758
+ };
733
759
  requestBody: {
734
760
  content: {
735
761
  "application/json": {
736
- /** @example example.com */
737
- domain: string;
762
+ /** Format: uri */
763
+ url?: string;
738
764
  };
739
765
  };
740
766
  };
741
767
  responses: {
742
- /** @description SAML status for the domain */
743
- 200: {
744
- content: {
745
- "application/json": {
746
- forceSaml?: boolean;
747
- };
748
- };
749
- };
768
+ /** @description Test webhook sent successfully */
750
769
  201: {
751
- content: never;
752
- };
753
- /** @description Bad request - invalid domain or API error */
754
- 400: {
755
- content: {
756
- "application/json": {
757
- error?: string;
758
- };
759
- };
760
- };
761
- };
762
- };
763
- HealthController_health: {
764
- responses: {
765
- /** @description Health check endpoint */
766
- 200: {
767
770
  content: {
768
- "application/json": {
769
- /** @example ok */
770
- status?: string;
771
- };
771
+ "application/json": Record<string, never>;
772
772
  };
773
773
  };
774
774
  };