{
  "basePath": "",
  "baseUrl": "https://www.googleapis.com/",
  "batchPath": "batch",
  "canonicalName": "Tool Results",
  "description": "API to publish and access results from developer tools.",
  "discoveryVersion": "v1",
  "documentationLink": "https://firebase.google.com/docs/test-lab/",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "id": "toolresults:v1",
  "kind": "discovery#restDescription",
  "mtlsRootUrl": "https://www.mtls.googleapis.com/",
  "name": "toolresults",
  "ownerDomain": "google.com",
  "ownerName": "Google",
  "parameters": {
    "$.xgafv": {
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query",
      "type": "string"
    },
    "access_token": {
      "description": "OAuth access token.",
      "location": "query",
      "type": "string"
    },
    "alt": {
      "default": "json",
      "description": "Data format for response.",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query",
      "type": "string"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "key": {
      "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.",
      "location": "query",
      "type": "string"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "type": "boolean"
    },
    "quotaUser": {
      "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.",
      "location": "query",
      "type": "string"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    }
  },
  "protocol": "rest",
  "resources": {},
  "revision": "20200224",
  "rootUrl": "https://www.googleapis.com/",
  "schemas": {
    "ANR": {
      "description": "Additional details for an ANR crash.",
      "id": "ANR",
      "properties": {
        "stackTrace": {
          "$ref": "StackTrace",
          "description": "The stack trace of the ANR crash.\nOptional."
        }
      },
      "type": "object"
    },
    "AvailableDeepLinks": {
      "description": "A suggestion to use deep links for a Robo run.",
      "id": "AvailableDeepLinks",
      "properties": {},
      "type": "object"
    },
    "BlankScreen": {
      "description": "A warning that Robo encountered a screen that was mostly blank; this may\nindicate a problem with the app.",
      "id": "BlankScreen",
      "properties": {
        "screenId": {
          "description": "The screen id of the element",
          "type": "string"
        }
      },
      "type": "object"
    },
    "CrashDialogError": {
      "description": "Crash dialog was detected during the test execution",
      "id": "CrashDialogError",
      "properties": {
        "crashPackage": {
          "description": "The name of the package that caused the dialog.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "EncounteredLoginScreen": {
      "description": "Additional details about encountered login screens.",
      "id": "EncounteredLoginScreen",
      "properties": {
        "distinctScreens": {
          "description": "Number of encountered distinct login screens.",
          "format": "int32",
          "type": "integer"
        },
        "screenIds": {
          "description": "Subset of login screens.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "EncounteredNonAndroidUiWidgetScreen": {
      "description": "Additional details about encountered screens with elements that are not\nAndroid UI widgets.",
      "id": "EncounteredNonAndroidUiWidgetScreen",
      "properties": {
        "distinctScreens": {
          "description": "Number of encountered distinct screens with non Android UI widgets.",
          "format": "int32",
          "type": "integer"
        },
        "screenIds": {
          "description": "Subset of screens which contain non Android UI widgets.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "FailedToInstall": {
      "description": "Failed to install the APK.",
      "id": "FailedToInstall",
      "properties": {},
      "type": "object"
    },
    "FatalException": {
      "description": "Additional details for a fatal exception.",
      "id": "FatalException",
      "properties": {
        "stackTrace": {
          "$ref": "StackTrace",
          "description": "The stack trace of the fatal exception.\nOptional."
        }
      },
      "type": "object"
    },
    "InAppPurchasesFound": {
      "description": "Additional details of in-app purchases encountered during the crawl.",
      "id": "InAppPurchasesFound",
      "properties": {
        "inAppPurchasesFlowsExplored": {
          "description": "The total number of in-app purchases flows explored: how many times the\nrobo tries to buy a SKU.",
          "format": "int32",
          "type": "integer"
        },
        "inAppPurchasesFlowsStarted": {
          "description": "The total number of in-app purchases flows started.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "InsufficientCoverage": {
      "description": "A warning that Robo did not crawl potentially important parts of the app.",
      "id": "InsufficientCoverage",
      "properties": {},
      "type": "object"
    },
    "IosAppCrashed": {
      "description": "Additional details for an iOS app crash.",
      "id": "IosAppCrashed",
      "properties": {
        "stackTrace": {
          "$ref": "StackTrace",
          "description": "The stack trace, if one is available.\nOptional."
        }
      },
      "type": "object"
    },
    "LauncherActivityNotFound": {
      "description": "Failed to find the launcher activity of an app.",
      "id": "LauncherActivityNotFound",
      "properties": {},
      "type": "object"
    },
    "NativeCrash": {
      "description": "Additional details for a native crash.",
      "id": "NativeCrash",
      "properties": {
        "stackTrace": {
          "$ref": "StackTrace",
          "description": "The stack trace of the native crash.\nOptional."
        }
      },
      "type": "object"
    },
    "NonSdkApi": {
      "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",
      "id": "NonSdkApi",
      "properties": {
        "apiSignature": {
          "description": "The signature of the Non-SDK API",
          "type": "string"
        },
        "exampleStackTraces": {
          "description": "Example stack traces of this API being called.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "insights": {
          "description": "Optional debugging insights for non-SDK API violations.",
          "items": {
            "$ref": "NonSdkApiInsight"
          },
          "type": "array"
        },
        "invocationCount": {
          "description": "The total number of times this API was observed to have been called.",
          "format": "int32",
          "type": "integer"
        },
        "list": {
          "description": "Which list this API appears on",
          "enum": [
            "NONE",
            "WHITE",
            "BLACK",
            "GREY",
            "GREY_MAX_O",
            "GREY_MAX_P",
            "GREY_MAX_Q"
          ],
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            ""
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "NonSdkApiInsight": {
      "description": "Non-SDK API insights (to address debugging solutions).",
      "id": "NonSdkApiInsight",
      "properties": {
        "exampleTraceMessages": {
          "description": "Optional sample stack traces, for which this insight applies (there\nshould be at least one).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "matcherId": {
          "description": "A unique ID, to be used for determining the effectiveness of this\nparticular insight in the context of a matcher. (required)",
          "type": "string"
        },
        "pendingGoogleUpdateInsight": {
          "$ref": "PendingGoogleUpdateInsight",
          "description": "An insight indicating that the hidden API usage originates from a\nGoogle-provided library."
        },
        "upgradeInsight": {
          "$ref": "UpgradeInsight",
          "description": "An insight indicating that the hidden API usage originates from the\nuse of a library that needs to be upgraded."
        }
      },
      "type": "object"
    },
    "NonSdkApiUsageViolation": {
      "description": "Additional details for a non-sdk API usage violation.",
      "id": "NonSdkApiUsageViolation",
      "properties": {
        "apiSignatures": {
          "description": "Signatures of a subset of those hidden API's.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "uniqueApis": {
          "description": "Total number of unique hidden API's accessed.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "NonSdkApiUsageViolationReport": {
      "description": "Contains a summary and examples of non-sdk API usage violations.",
      "id": "NonSdkApiUsageViolationReport",
      "properties": {
        "exampleApis": {
          "description": "Examples of the detected API usages.",
          "items": {
            "$ref": "NonSdkApi"
          },
          "type": "array"
        },
        "minSdkVersion": {
          "description": "Minimum API level required for the application to run.",
          "format": "int32",
          "type": "integer"
        },
        "targetSdkVersion": {
          "description": "Specifies the API Level on which the application is designed to run.",
          "format": "int32",
          "type": "integer"
        },
        "uniqueApis": {
          "description": "Total number of unique Non-SDK API's accessed.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "OverlappingUIElements": {
      "description": "A warning that Robo encountered a screen that has overlapping clickable\nelements; this may indicate a potential UI issue.",
      "id": "OverlappingUIElements",
      "properties": {
        "resourceName": {
          "description": "Resource names of the overlapping screen elements",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "screenId": {
          "description": "The screen id of the elements",
          "type": "string"
        }
      },
      "type": "object"
    },
    "PendingGoogleUpdateInsight": {
      "description": "This insight indicates that the hidden API usage originates from a\nGoogle-provided library. Users need not take any action.",
      "id": "PendingGoogleUpdateInsight",
      "properties": {
        "nameOfGoogleLibrary": {
          "description": "The name of the Google-provided library with the non-SDK API dependency.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "PerformedGoogleLogin": {
      "description": "A notification that Robo signed in with Google.",
      "id": "PerformedGoogleLogin",
      "properties": {},
      "type": "object"
    },
    "PerformedMonkeyActions": {
      "description": "A notification that Robo performed some monkey actions.",
      "id": "PerformedMonkeyActions",
      "properties": {
        "totalActions": {
          "description": "The total number of monkey actions performed during the crawl.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "RoboScriptExecution": {
      "description": "Execution stats for a user-provided Robo script.",
      "id": "RoboScriptExecution",
      "properties": {
        "successfulActions": {
          "description": "The number of Robo script actions executed successfully.",
          "format": "int32",
          "type": "integer"
        },
        "totalActions": {
          "description": "The total number of actions in the Robo script.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "StackTrace": {
      "description": "A stacktrace.",
      "id": "StackTrace",
      "properties": {
        "exception": {
          "description": "The stack trace message.\n\nRequired",
          "type": "string"
        }
      },
      "type": "object"
    },
    "StartActivityNotFound": {
      "description": "User provided intent failed to resolve to an activity.",
      "id": "StartActivityNotFound",
      "properties": {
        "action": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "UIElementTooDeep": {
      "description": "A warning that the screen hierarchy is deeper than the recommended threshold.",
      "id": "UIElementTooDeep",
      "properties": {
        "depth": {
          "description": "The depth of the screen element",
          "format": "int32",
          "type": "integer"
        },
        "screenId": {
          "description": "The screen id of the element",
          "type": "string"
        },
        "screenStateId": {
          "description": "The screen state id of the element",
          "type": "string"
        }
      },
      "type": "object"
    },
    "UnspecifiedWarning": {
      "description": "Default unspecified warning.",
      "id": "UnspecifiedWarning",
      "properties": {},
      "type": "object"
    },
    "UnusedRoboDirective": {
      "description": "Additional details of an unused robodirective.",
      "id": "UnusedRoboDirective",
      "properties": {
        "resourceName": {
          "description": "The name of the resource that was unused.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "UpgradeInsight": {
      "description": "This insight is a recommendation to upgrade a given library to the specified\nversion, in order to avoid dependencies on non-SDK APIs.",
      "id": "UpgradeInsight",
      "properties": {
        "packageName": {
          "description": "The name of the package to be upgraded.",
          "type": "string"
        },
        "upgradeToVersion": {
          "description": "The suggested version to upgrade to.\nOptional: In case we are not sure which version solves this problem",
          "type": "string"
        }
      },
      "type": "object"
    },
    "UsedRoboDirective": {
      "description": "Additional details of a used Robo directive.",
      "id": "UsedRoboDirective",
      "properties": {
        "resourceName": {
          "description": "The name of the resource that was used.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "UsedRoboIgnoreDirective": {
      "description": "Additional details of a used Robo directive with an ignore action.\nNote: This is a different scenario than unused directive.",
      "id": "UsedRoboIgnoreDirective",
      "properties": {
        "resourceName": {
          "description": "The name of the resource that was ignored.",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "servicePath": "",
  "title": "Cloud Tool Results API",
  "version": "v1",
  "version_module": true
}