1{
2  "basePath": "",
3  "baseUrl": "https://www.googleapis.com/",
4  "batchPath": "batch",
5  "canonicalName": "Tool Results",
6  "description": "API to publish and access results from developer tools.",
7  "discoveryVersion": "v1",
8  "documentationLink": "https://firebase.google.com/docs/test-lab/",
9  "icons": {
10    "x16": "http://www.google.com/images/icons/product/search-16.gif",
11    "x32": "http://www.google.com/images/icons/product/search-32.gif"
12  },
13  "id": "toolresults:v1",
14  "kind": "discovery#restDescription",
15  "mtlsRootUrl": "https://www.mtls.googleapis.com/",
16  "name": "toolresults",
17  "ownerDomain": "google.com",
18  "ownerName": "Google",
19  "parameters": {
20    "$.xgafv": {
21      "description": "V1 error format.",
22      "enum": [
23        "1",
24        "2"
25      ],
26      "enumDescriptions": [
27        "v1 error format",
28        "v2 error format"
29      ],
30      "location": "query",
31      "type": "string"
32    },
33    "access_token": {
34      "description": "OAuth access token.",
35      "location": "query",
36      "type": "string"
37    },
38    "alt": {
39      "default": "json",
40      "description": "Data format for response.",
41      "enum": [
42        "json",
43        "media",
44        "proto"
45      ],
46      "enumDescriptions": [
47        "Responses with Content-Type of application/json",
48        "Media download with context-dependent Content-Type",
49        "Responses with Content-Type of application/x-protobuf"
50      ],
51      "location": "query",
52      "type": "string"
53    },
54    "callback": {
55      "description": "JSONP",
56      "location": "query",
57      "type": "string"
58    },
59    "fields": {
60      "description": "Selector specifying which fields to include in a partial response.",
61      "location": "query",
62      "type": "string"
63    },
64    "key": {
65      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
66      "location": "query",
67      "type": "string"
68    },
69    "oauth_token": {
70      "description": "OAuth 2.0 token for the current user.",
71      "location": "query",
72      "type": "string"
73    },
74    "prettyPrint": {
75      "default": "true",
76      "description": "Returns response with indentations and line breaks.",
77      "location": "query",
78      "type": "boolean"
79    },
80    "quotaUser": {
81      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
82      "location": "query",
83      "type": "string"
84    },
85    "uploadType": {
86      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
87      "location": "query",
88      "type": "string"
89    },
90    "upload_protocol": {
91      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
92      "location": "query",
93      "type": "string"
94    }
95  },
96  "protocol": "rest",
97  "resources": {},
98  "revision": "20200224",
99  "rootUrl": "https://www.googleapis.com/",
100  "schemas": {
101    "ANR": {
102      "description": "Additional details for an ANR crash.",
103      "id": "ANR",
104      "properties": {
105        "stackTrace": {
106          "$ref": "StackTrace",
107          "description": "The stack trace of the ANR crash.\nOptional."
108        }
109      },
110      "type": "object"
111    },
112    "AvailableDeepLinks": {
113      "description": "A suggestion to use deep links for a Robo run.",
114      "id": "AvailableDeepLinks",
115      "properties": {},
116      "type": "object"
117    },
118    "BlankScreen": {
119      "description": "A warning that Robo encountered a screen that was mostly blank; this may\nindicate a problem with the app.",
120      "id": "BlankScreen",
121      "properties": {
122        "screenId": {
123          "description": "The screen id of the element",
124          "type": "string"
125        }
126      },
127      "type": "object"
128    },
129    "CrashDialogError": {
130      "description": "Crash dialog was detected during the test execution",
131      "id": "CrashDialogError",
132      "properties": {
133        "crashPackage": {
134          "description": "The name of the package that caused the dialog.",
135          "type": "string"
136        }
137      },
138      "type": "object"
139    },
140    "EncounteredLoginScreen": {
141      "description": "Additional details about encountered login screens.",
142      "id": "EncounteredLoginScreen",
143      "properties": {
144        "distinctScreens": {
145          "description": "Number of encountered distinct login screens.",
146          "format": "int32",
147          "type": "integer"
148        },
149        "screenIds": {
150          "description": "Subset of login screens.",
151          "items": {
152            "type": "string"
153          },
154          "type": "array"
155        }
156      },
157      "type": "object"
158    },
159    "EncounteredNonAndroidUiWidgetScreen": {
160      "description": "Additional details about encountered screens with elements that are not\nAndroid UI widgets.",
161      "id": "EncounteredNonAndroidUiWidgetScreen",
162      "properties": {
163        "distinctScreens": {
164          "description": "Number of encountered distinct screens with non Android UI widgets.",
165          "format": "int32",
166          "type": "integer"
167        },
168        "screenIds": {
169          "description": "Subset of screens which contain non Android UI widgets.",
170          "items": {
171            "type": "string"
172          },
173          "type": "array"
174        }
175      },
176      "type": "object"
177    },
178    "FailedToInstall": {
179      "description": "Failed to install the APK.",
180      "id": "FailedToInstall",
181      "properties": {},
182      "type": "object"
183    },
184    "FatalException": {
185      "description": "Additional details for a fatal exception.",
186      "id": "FatalException",
187      "properties": {
188        "stackTrace": {
189          "$ref": "StackTrace",
190          "description": "The stack trace of the fatal exception.\nOptional."
191        }
192      },
193      "type": "object"
194    },
195    "InAppPurchasesFound": {
196      "description": "Additional details of in-app purchases encountered during the crawl.",
197      "id": "InAppPurchasesFound",
198      "properties": {
199        "inAppPurchasesFlowsExplored": {
200          "description": "The total number of in-app purchases flows explored: how many times the\nrobo tries to buy a SKU.",
201          "format": "int32",
202          "type": "integer"
203        },
204        "inAppPurchasesFlowsStarted": {
205          "description": "The total number of in-app purchases flows started.",
206          "format": "int32",
207          "type": "integer"
208        }
209      },
210      "type": "object"
211    },
212    "InsufficientCoverage": {
213      "description": "A warning that Robo did not crawl potentially important parts of the app.",
214      "id": "InsufficientCoverage",
215      "properties": {},
216      "type": "object"
217    },
218    "IosAppCrashed": {
219      "description": "Additional details for an iOS app crash.",
220      "id": "IosAppCrashed",
221      "properties": {
222        "stackTrace": {
223          "$ref": "StackTrace",
224          "description": "The stack trace, if one is available.\nOptional."
225        }
226      },
227      "type": "object"
228    },
229    "LauncherActivityNotFound": {
230      "description": "Failed to find the launcher activity of an app.",
231      "id": "LauncherActivityNotFound",
232      "properties": {},
233      "type": "object"
234    },
235    "NativeCrash": {
236      "description": "Additional details for a native crash.",
237      "id": "NativeCrash",
238      "properties": {
239        "stackTrace": {
240          "$ref": "StackTrace",
241          "description": "The stack trace of the native crash.\nOptional."
242        }
243      },
244      "type": "object"
245    },
246    "NonSdkApi": {
247      "description": "A non-sdk API and examples of it being called along with other metadata\nSee\nhttps://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces",
248      "id": "NonSdkApi",
249      "properties": {
250        "apiSignature": {
251          "description": "The signature of the Non-SDK API",
252          "type": "string"
253        },
254        "exampleStackTraces": {
255          "description": "Example stack traces of this API being called.",
256          "items": {
257            "type": "string"
258          },
259          "type": "array"
260        },
261        "insights": {
262          "description": "Optional debugging insights for non-SDK API violations.",
263          "items": {
264            "$ref": "NonSdkApiInsight"
265          },
266          "type": "array"
267        },
268        "invocationCount": {
269          "description": "The total number of times this API was observed to have been called.",
270          "format": "int32",
271          "type": "integer"
272        },
273        "list": {
274          "description": "Which list this API appears on",
275          "enum": [
276            "NONE",
277            "WHITE",
278            "BLACK",
279            "GREY",
280            "GREY_MAX_O",
281            "GREY_MAX_P",
282            "GREY_MAX_Q"
283          ],
284          "enumDescriptions": [
285            "",
286            "",
287            "",
288            "",
289            "",
290            "",
291            ""
292          ],
293          "type": "string"
294        }
295      },
296      "type": "object"
297    },
298    "NonSdkApiInsight": {
299      "description": "Non-SDK API insights (to address debugging solutions).",
300      "id": "NonSdkApiInsight",
301      "properties": {
302        "exampleTraceMessages": {
303          "description": "Optional sample stack traces, for which this insight applies (there\nshould be at least one).",
304          "items": {
305            "type": "string"
306          },
307          "type": "array"
308        },
309        "matcherId": {
310          "description": "A unique ID, to be used for determining the effectiveness of this\nparticular insight in the context of a matcher. (required)",
311          "type": "string"
312        },
313        "pendingGoogleUpdateInsight": {
314          "$ref": "PendingGoogleUpdateInsight",
315          "description": "An insight indicating that the hidden API usage originates from a\nGoogle-provided library."
316        },
317        "upgradeInsight": {
318          "$ref": "UpgradeInsight",
319          "description": "An insight indicating that the hidden API usage originates from the\nuse of a library that needs to be upgraded."
320        }
321      },
322      "type": "object"
323    },
324    "NonSdkApiUsageViolation": {
325      "description": "Additional details for a non-sdk API usage violation.",
326      "id": "NonSdkApiUsageViolation",
327      "properties": {
328        "apiSignatures": {
329          "description": "Signatures of a subset of those hidden API's.",
330          "items": {
331            "type": "string"
332          },
333          "type": "array"
334        },
335        "uniqueApis": {
336          "description": "Total number of unique hidden API's accessed.",
337          "format": "int32",
338          "type": "integer"
339        }
340      },
341      "type": "object"
342    },
343    "NonSdkApiUsageViolationReport": {
344      "description": "Contains a summary and examples of non-sdk API usage violations.",
345      "id": "NonSdkApiUsageViolationReport",
346      "properties": {
347        "exampleApis": {
348          "description": "Examples of the detected API usages.",
349          "items": {
350            "$ref": "NonSdkApi"
351          },
352          "type": "array"
353        },
354        "minSdkVersion": {
355          "description": "Minimum API level required for the application to run.",
356          "format": "int32",
357          "type": "integer"
358        },
359        "targetSdkVersion": {
360          "description": "Specifies the API Level on which the application is designed to run.",
361          "format": "int32",
362          "type": "integer"
363        },
364        "uniqueApis": {
365          "description": "Total number of unique Non-SDK API's accessed.",
366          "format": "int32",
367          "type": "integer"
368        }
369      },
370      "type": "object"
371    },
372    "OverlappingUIElements": {
373      "description": "A warning that Robo encountered a screen that has overlapping clickable\nelements; this may indicate a potential UI issue.",
374      "id": "OverlappingUIElements",
375      "properties": {
376        "resourceName": {
377          "description": "Resource names of the overlapping screen elements",
378          "items": {
379            "type": "string"
380          },
381          "type": "array"
382        },
383        "screenId": {
384          "description": "The screen id of the elements",
385          "type": "string"
386        }
387      },
388      "type": "object"
389    },
390    "PendingGoogleUpdateInsight": {
391      "description": "This insight indicates that the hidden API usage originates from a\nGoogle-provided library. Users need not take any action.",
392      "id": "PendingGoogleUpdateInsight",
393      "properties": {
394        "nameOfGoogleLibrary": {
395          "description": "The name of the Google-provided library with the non-SDK API dependency.",
396          "type": "string"
397        }
398      },
399      "type": "object"
400    },
401    "PerformedGoogleLogin": {
402      "description": "A notification that Robo signed in with Google.",
403      "id": "PerformedGoogleLogin",
404      "properties": {},
405      "type": "object"
406    },
407    "PerformedMonkeyActions": {
408      "description": "A notification that Robo performed some monkey actions.",
409      "id": "PerformedMonkeyActions",
410      "properties": {
411        "totalActions": {
412          "description": "The total number of monkey actions performed during the crawl.",
413          "format": "int32",
414          "type": "integer"
415        }
416      },
417      "type": "object"
418    },
419    "RoboScriptExecution": {
420      "description": "Execution stats for a user-provided Robo script.",
421      "id": "RoboScriptExecution",
422      "properties": {
423        "successfulActions": {
424          "description": "The number of Robo script actions executed successfully.",
425          "format": "int32",
426          "type": "integer"
427        },
428        "totalActions": {
429          "description": "The total number of actions in the Robo script.",
430          "format": "int32",
431          "type": "integer"
432        }
433      },
434      "type": "object"
435    },
436    "StackTrace": {
437      "description": "A stacktrace.",
438      "id": "StackTrace",
439      "properties": {
440        "exception": {
441          "description": "The stack trace message.\n\nRequired",
442          "type": "string"
443        }
444      },
445      "type": "object"
446    },
447    "StartActivityNotFound": {
448      "description": "User provided intent failed to resolve to an activity.",
449      "id": "StartActivityNotFound",
450      "properties": {
451        "action": {
452          "type": "string"
453        },
454        "uri": {
455          "type": "string"
456        }
457      },
458      "type": "object"
459    },
460    "UIElementTooDeep": {
461      "description": "A warning that the screen hierarchy is deeper than the recommended threshold.",
462      "id": "UIElementTooDeep",
463      "properties": {
464        "depth": {
465          "description": "The depth of the screen element",
466          "format": "int32",
467          "type": "integer"
468        },
469        "screenId": {
470          "description": "The screen id of the element",
471          "type": "string"
472        },
473        "screenStateId": {
474          "description": "The screen state id of the element",
475          "type": "string"
476        }
477      },
478      "type": "object"
479    },
480    "UnspecifiedWarning": {
481      "description": "Default unspecified warning.",
482      "id": "UnspecifiedWarning",
483      "properties": {},
484      "type": "object"
485    },
486    "UnusedRoboDirective": {
487      "description": "Additional details of an unused robodirective.",
488      "id": "UnusedRoboDirective",
489      "properties": {
490        "resourceName": {
491          "description": "The name of the resource that was unused.",
492          "type": "string"
493        }
494      },
495      "type": "object"
496    },
497    "UpgradeInsight": {
498      "description": "This insight is a recommendation to upgrade a given library to the specified\nversion, in order to avoid dependencies on non-SDK APIs.",
499      "id": "UpgradeInsight",
500      "properties": {
501        "packageName": {
502          "description": "The name of the package to be upgraded.",
503          "type": "string"
504        },
505        "upgradeToVersion": {
506          "description": "The suggested version to upgrade to.\nOptional: In case we are not sure which version solves this problem",
507          "type": "string"
508        }
509      },
510      "type": "object"
511    },
512    "UsedRoboDirective": {
513      "description": "Additional details of a used Robo directive.",
514      "id": "UsedRoboDirective",
515      "properties": {
516        "resourceName": {
517          "description": "The name of the resource that was used.",
518          "type": "string"
519        }
520      },
521      "type": "object"
522    },
523    "UsedRoboIgnoreDirective": {
524      "description": "Additional details of a used Robo directive with an ignore action.\nNote: This is a different scenario than unused directive.",
525      "id": "UsedRoboIgnoreDirective",
526      "properties": {
527        "resourceName": {
528          "description": "The name of the resource that was ignored.",
529          "type": "string"
530        }
531      },
532      "type": "object"
533    }
534  },
535  "servicePath": "",
536  "title": "Cloud Tool Results API",
537  "version": "v1",
538  "version_module": true
539}