{
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "canonicalName": "Firebase App Distribution",
  "version_module": true,
  "ownerDomain": "google.com",
  "title": "Firebase App Distribution API",
  "description": "",
  "id": "firebaseappdistribution:v1alpha",
  "revision": "20260518",
  "fullyEncodeReservedExpansion": true,
  "protocol": "rest",
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "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"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "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"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "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"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "resources": {
    "apps": {
      "methods": {
        "getJwt": {
          "id": "firebaseappdistribution.apps.getJwt",
          "path": "v1alpha/apps/{mobilesdkAppId}/jwt",
          "flatPath": "v1alpha/apps/{mobilesdkAppId}/jwt",
          "httpMethod": "GET",
          "parameters": {
            "mobilesdkAppId": {
              "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "mobilesdkAppId"
          ],
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaJwt"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Get a JWT token"
        },
        "get": {
          "id": "firebaseappdistribution.apps.get",
          "path": "v1alpha/apps/{mobilesdkAppId}",
          "flatPath": "v1alpha/apps/{mobilesdkAppId}",
          "httpMethod": "GET",
          "parameters": {
            "mobilesdkAppId": {
              "description": "Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "appView": {
              "description": "App view. When unset or set to BASIC, returns an App with everything set except for aab_state. When set to FULL, returns an App with aab_state set.",
              "location": "query",
              "type": "string",
              "enumDescriptions": [
                "The default / unset value. The API will default to the BASIC view.",
                "Include everything except aab_state.",
                "Include everything."
              ],
              "enum": [
                "APP_VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ]
            }
          },
          "parameterOrder": [
            "mobilesdkAppId"
          ],
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaApp"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Get the app, if it exists"
        }
      },
      "resources": {
        "releases": {
          "methods": {
            "enable_access": {
              "id": "firebaseappdistribution.apps.releases.enable_access",
              "path": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/enable_access",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/enable_access",
              "httpMethod": "POST",
              "parameters": {
                "mobilesdkAppId": {
                  "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "releaseId": {
                  "description": "Required. Release identifier",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "mobilesdkAppId",
                "releaseId"
              ],
              "request": {
                "$ref": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest"
              },
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Enable access on a release for testers."
            }
          },
          "resources": {
            "notes": {
              "methods": {
                "create": {
                  "id": "firebaseappdistribution.apps.releases.notes.create",
                  "path": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/notes",
                  "flatPath": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/notes",
                  "httpMethod": "POST",
                  "parameters": {
                    "mobilesdkAppId": {
                      "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "releaseId": {
                      "description": "Required. Release identifier",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "mobilesdkAppId",
                    "releaseId"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest"
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Create release notes on a release."
                }
              }
            }
          }
        },
        "release_by_hash": {
          "methods": {
            "get": {
              "id": "firebaseappdistribution.apps.release_by_hash.get",
              "path": "v1alpha/apps/{mobilesdkAppId}/release_by_hash/{uploadHash}",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/release_by_hash/{uploadHash}",
              "httpMethod": "GET",
              "parameters": {
                "mobilesdkAppId": {
                  "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "uploadHash": {
                  "description": "Required. The hash for the upload",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "mobilesdkAppId",
                "uploadHash"
              ],
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "GET Release by binary upload hash"
            }
          }
        },
        "upload_status": {
          "methods": {
            "get": {
              "id": "firebaseappdistribution.apps.upload_status.get",
              "path": "v1alpha/apps/{mobilesdkAppId}/upload_status/{uploadToken}",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/upload_status/{uploadToken}",
              "httpMethod": "GET",
              "parameters": {
                "mobilesdkAppId": {
                  "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "uploadToken": {
                  "description": "Required. The token for the upload",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "mobilesdkAppId",
                "uploadToken"
              ],
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "GET Binary upload status by token"
            }
          }
        },
        "testers": {
          "methods": {
            "getTesterUdids": {
              "id": "firebaseappdistribution.apps.testers.getTesterUdids",
              "path": "v1alpha/apps/{mobilesdkAppId}/testers:getTesterUdids",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/testers:getTesterUdids",
              "httpMethod": "GET",
              "parameters": {
                "mobilesdkAppId": {
                  "description": "Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "project": {
                  "description": "The name of the project, which is the parent of testers Format: `projects/{project_number}`",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "mobilesdkAppId"
              ],
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get UDIDs of tester iOS devices in a project"
            }
          }
        }
      }
    },
    "projects": {
      "methods": {
        "getTestQuota": {
          "id": "firebaseappdistribution.projects.getTestQuota",
          "path": "v1alpha/{+name}",
          "flatPath": "v1alpha/projects/{projectsId}/testQuota",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. The name of the `TestQuota` resource to retrieve. Format: `projects/{project_number}/testQuota`",
              "pattern": "^projects/[^/]+/testQuota$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestQuota"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Get information about the quota for `ReleaseTests`."
        }
      },
      "resources": {
        "testers": {
          "methods": {
            "getUdids": {
              "id": "firebaseappdistribution.projects.testers.getUdids",
              "path": "v1alpha/{+project}/testers:udids",
              "flatPath": "v1alpha/projects/{projectsId}/testers:udids",
              "httpMethod": "GET",
              "parameters": {
                "project": {
                  "description": "The name of the project, which is the parent of testers Format: `projects/{project_number}`",
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "mobilesdkAppId": {
                  "description": "Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "project"
              ],
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Get UDIDs of tester iOS devices in a project"
            }
          }
        },
        "apps": {
          "methods": {
            "getTestConfig": {
              "id": "firebaseappdistribution.projects.apps.getTestConfig",
              "path": "v1alpha/{+name}",
              "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testConfig",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. The name of the `TestConfig` resource to retrieve. Format: `projects/{project_number}/apps/{app}/testConfig`",
                  "pattern": "^projects/[^/]+/apps/[^/]+/testConfig$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets configuration for automated tests."
            },
            "updateTestConfig": {
              "id": "firebaseappdistribution.projects.apps.updateTestConfig",
              "path": "v1alpha/{+name}",
              "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testConfig",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app}/testConfig`",
                  "pattern": "^projects/[^/]+/apps/[^/]+/testConfig$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. The list of fields to update.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates automated test configuration."
            }
          },
          "resources": {
            "releases": {
              "resources": {
                "tests": {
                  "methods": {
                    "create": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.create",
                      "path": "v1alpha/{+parent}/tests",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "description": "Required. The name of the release resource, which is the parent of the test Format: `projects/{project_number}/apps/{app}/releases/{release}`",
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        },
                        "releaseTestId": {
                          "description": "Optional. The ID to use for the test, which will become the final component of the test's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. If it is not provided one will be automatically generated.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "request": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      },
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Run automated test(s) on release."
                    },
                    "list": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.list",
                      "path": "v1alpha/{+parent}/tests",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests",
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "description": "Required. The name of the release resource, which is the parent of the tests Format: `projects/{project_number}/apps/{app}/releases/{release}`",
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "Optional. The maximum number of tests to return. The service may return fewer than this value.",
                          "location": "query",
                          "type": "integer",
                          "format": "int32"
                        },
                        "pageToken": {
                          "description": "Optional. A page token, received from a previous `ListReleaseTests` call. Provide this to retrieve the subsequent page.",
                          "location": "query",
                          "type": "string"
                        },
                        "view": {
                          "description": "Optional. The requested view on the returned ReleaseTests. Defaults to the basic view.",
                          "location": "query",
                          "type": "string",
                          "enumDescriptions": [
                            "The default / unset value. The default view depends on the RPC.",
                            "Include basic metadata about the release test and its status, but not the full result details. This is the default value for ListReleaseTests.",
                            "Include everything."
                          ],
                          "enum": [
                            "RELEASE_TEST_VIEW_UNSPECIFIED",
                            "RELEASE_TEST_VIEW_BASIC",
                            "RELEASE_TEST_VIEW_FULL"
                          ]
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "List results for automated tests run on release."
                    },
                    "get": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.get",
                      "path": "v1alpha/{+name}",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests/{testsId}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`",
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+/tests/[^/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Get results for automated test run on release."
                    },
                    "cancel": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.cancel",
                      "path": "v1alpha/{+name}:cancel",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests/{testsId}:cancel",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`",
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+/tests/[^/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Abort automated test run on release."
                    }
                  }
                }
              }
            },
            "testCases": {
              "methods": {
                "create": {
                  "id": "firebaseappdistribution.projects.apps.testCases.create",
                  "path": "v1alpha/{+parent}/testCases",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent resource where this test case will be created. Format: `projects/{project_number}/apps/{app}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "testCaseId": {
                      "description": "Optional. The ID to use for the test case, which will become the final component of the test case's resource name. This value should be 4-63 characters, and valid characters are /a-z-/.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Create a new test case."
                },
                "list": {
                  "id": "firebaseappdistribution.projects.apps.testCases.list",
                  "path": "v1alpha/{+parent}/testCases",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent resource from which to list test cases. Format: `projects/{project_number}/apps/{app}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of test cases to return. The service may return fewer than this value. If unspecified, at most 50 test cases will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListTestCases` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTestCases` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaListTestCasesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "List test cases."
                },
                "get": {
                  "id": "firebaseappdistribution.projects.apps.testCases.get",
                  "path": "v1alpha/{+name}",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the test case resource to retrieve. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get a test case."
                },
                "patch": {
                  "id": "firebaseappdistribution.projects.apps.testCases.patch",
                  "path": "v1alpha/{+name}",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "Identifier. The name of the test case resource. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "allowMissing": {
                      "description": "Optional. If set to true, and the test case is not found, a new test case will be created.",
                      "location": "query",
                      "type": "boolean"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Update a test case."
                },
                "clearTestCaseCache": {
                  "id": "firebaseappdistribution.projects.apps.testCases.clearTestCaseCache",
                  "path": "v1alpha/{+testCase}:clearTestCaseCache",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}:clearTestCaseCache",
                  "httpMethod": "POST",
                  "parameters": {
                    "testCase": {
                      "description": "Required. The name of the test case resource for which to clear the cache. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "testCase"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest"
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Clears cached test runs for a specific test case and device(s)."
                },
                "batchUpdate": {
                  "id": "firebaseappdistribution.projects.apps.testCases.batchUpdate",
                  "path": "v1alpha/{+parent}/testCases:batchUpdate",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases:batchUpdate",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent resource of the test cases being updated. Format: `projects/{project_number}/apps/{app}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest"
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Updates multiple test cases."
                },
                "delete": {
                  "id": "firebaseappdistribution.projects.apps.testCases.delete",
                  "path": "v1alpha/{+name}",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the test case resource to delete. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Delete a test case."
                },
                "batchDelete": {
                  "id": "firebaseappdistribution.projects.apps.testCases.batchDelete",
                  "path": "v1alpha/{+parent}/testCases:batchDelete",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases:batchDelete",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent resource of the test cases being deleted. Format: `projects/{project_number}/apps/{app}`",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest"
                  },
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Deletes multiple test cases."
                }
              }
            }
          }
        }
      }
    }
  },
  "version": "v1alpha",
  "basePath": "",
  "schemas": {
    "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest",
      "description": "The request message for `CreateReleaseNotes`.",
      "type": "object",
      "properties": {
        "releaseNotes": {
          "description": "The actual release notes body from the user",
          "$ref": "GoogleFirebaseAppdistroV1alphaReleaseNotes"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaReleaseNotes": {
      "id": "GoogleFirebaseAppdistroV1alphaReleaseNotes",
      "description": "Release notes for a release.",
      "type": "object",
      "properties": {
        "releaseNotes": {
          "description": "The actual release notes text from the user.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse",
      "description": "The response message for `CreateReleaseNotes`.",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest",
      "description": "The request message for `EnableAccessOnRelease`.",
      "type": "object",
      "properties": {
        "displayVersion": {
          "description": "Optional. Ignored. Used to be display version of the app release if an instance identifier was provided for the release_id.",
          "deprecated": true,
          "type": "string"
        },
        "buildVersion": {
          "description": "Optional. Ignored. Used to be build version of the app release if an instance identifier was provided for the release_id.",
          "deprecated": true,
          "type": "string"
        },
        "emails": {
          "description": "Optional. An email address which should get access to this release, for example rebeccahe@google.com",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "groupIds": {
          "description": "Optional. A repeated list of group aliases to enable access to a release for Note: This field is misnamed, but can't be changed because we need to maintain compatibility with old build tools",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse",
      "description": "The response message for `EnableAccessOnRelease`.",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaJwt": {
      "id": "GoogleFirebaseAppdistroV1alphaJwt",
      "description": "A JWT token.",
      "type": "object",
      "properties": {
        "token": {
          "description": "The JWT token (three Base64URL-encoded strings joined by dots).",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse",
      "description": "Response object to get the release given a upload hash",
      "type": "object",
      "properties": {
        "release": {
          "description": "Release object",
          "$ref": "GoogleFirebaseAppdistroV1alphaRelease"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaRelease": {
      "id": "GoogleFirebaseAppdistroV1alphaRelease",
      "description": "Proto defining a release object",
      "type": "object",
      "properties": {
        "distributedAt": {
          "description": "Timestamp when the release was created",
          "type": "string",
          "format": "google-datetime"
        },
        "instanceId": {
          "description": "Instance id of the release",
          "type": "string"
        },
        "id": {
          "description": "Release Id",
          "type": "string"
        },
        "testerCount": {
          "description": "Count of testers added to the release",
          "type": "integer",
          "format": "int32"
        },
        "testerWithInstallCount": {
          "description": "Number of testers who have installed the release",
          "type": "integer",
          "format": "int32"
        },
        "openInvitationCount": {
          "description": "Number of testers who have open invitations for the release",
          "type": "integer",
          "format": "int32"
        },
        "lastActivityAt": {
          "description": "Last activity timestamp",
          "type": "string",
          "format": "google-datetime"
        },
        "receivedAt": {
          "description": "unused. ",
          "deprecated": true,
          "type": "string",
          "format": "google-datetime"
        },
        "releaseNotesSummary": {
          "description": "Release notes summary",
          "type": "string"
        },
        "displayVersion": {
          "description": "Release version",
          "type": "string"
        },
        "buildVersion": {
          "description": "Release build version",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse",
      "description": "The response message for `GetUploadStatus`.",
      "type": "object",
      "properties": {
        "status": {
          "description": "The status of the upload",
          "type": "string",
          "enumDescriptions": [
            "Status unspecified.",
            "The upload is in progress.",
            "The binary has already been uploaded.",
            "The upload was successful.",
            "The upload failed."
          ],
          "enum": [
            "STATUS_UNSPECIFIED",
            "IN_PROGRESS",
            "ALREADY_UPLOADED",
            "SUCCESS",
            "ERROR"
          ]
        },
        "message": {
          "description": "Any additional context for the given upload status (e.g. error message) Meant to be displayed to the client",
          "type": "string"
        },
        "errorCode": {
          "description": "The error code associated with (only set on \"FAILURE\")",
          "type": "string",
          "enumDescriptions": [
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "Happens if the Firebase app no longer exists by the time of extraction",
            "",
            "A corresponding Android Developer Console account for this app's Play Console account was not found."
          ],
          "enum": [
            "ERROR_UNSPECIFIED",
            "INVALID_ZIP",
            "MISSING_PLIST",
            "MISSING_PROFILE",
            "VERSION_TOO_LONG",
            "MISSING_UUIDS",
            "MISSING_RESOURCES",
            "MISSING_MANIFEST",
            "IOS_METADATA_ERROR",
            "ANDROID_METADATA_ERROR",
            "UNSUPPORTED_PLATFORM_TYPE",
            "BUNDLE_ID_MISMATCH",
            "APK_NOT_ZIP_ALIGNED",
            "INVALID_CERTIFICATE",
            "APK_TOO_LARGE",
            "AAB_NOT_PUBLISHED",
            "INVALID_PLIST_DEVICE_FAMILIES",
            "AAB_TOS_NOT_ACCEPTED",
            "APP_NAME_TOO_LONG",
            "AAB_DEVELOPER_ACCOUNT_NOT_LINKED",
            "AAB_NO_APP_WITH_GIVEN_PACKAGE_NAME_IN_ACCOUNT",
            "AAB_UPLOAD_ERROR",
            "APP_NOT_FOUND",
            "AAB_ADHOC_SHARING_KEY_NOT_REGISTERED",
            "AAB_ANDROID_DEVELOPER_CONSOLE_ACCOUNT_NOT_FOUND"
          ]
        },
        "release": {
          "description": "The release that was created from the upload (only set on \"SUCCESS\")",
          "$ref": "GoogleFirebaseAppdistroV1alphaRelease"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaApp": {
      "id": "GoogleFirebaseAppdistroV1alphaApp",
      "description": "An app.",
      "type": "object",
      "properties": {
        "projectNumber": {
          "description": "Project number of the Firebase project, for example 300830567303.",
          "type": "string"
        },
        "appId": {
          "description": "Firebase gmp app id",
          "type": "string"
        },
        "platform": {
          "description": "iOS or Android",
          "type": "string"
        },
        "bundleId": {
          "description": "Bundle identifier",
          "type": "string"
        },
        "contactEmail": {
          "description": "Developer contact email for testers to reach out to about privacy or support issues.",
          "type": "string"
        },
        "aabState": {
          "description": "App bundle state. Only valid for android apps. The app_view field in the request must be set to FULL in order for this to be populated.",
          "type": "string",
          "enumDescriptions": [
            "Aab state unspecified",
            "App can receive app bundle uploads",
            "Firebase project is not linked to a Play developer account",
            "There is no app in linked Play developer account with the same bundle id",
            "The app in Play developer account is not in a published state",
            "Play App status is unavailable",
            "Play IAS terms not accepted"
          ],
          "enum": [
            "AAB_STATE_UNSPECIFIED",
            "ACTIVE",
            "PLAY_ACCOUNT_NOT_LINKED",
            "NO_APP_WITH_GIVEN_BUNDLE_ID_IN_PLAY_ACCOUNT",
            "APP_NOT_PUBLISHED",
            "AAB_STATE_UNAVAILABLE",
            "PLAY_IAS_TERMS_NOT_ACCEPTED"
          ]
        },
        "aabCertificate": {
          "description": "App bundle test certificate generated for the app.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAabCertificate"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAabCertificate": {
      "id": "GoogleFirebaseAppdistroV1alphaAabCertificate",
      "description": "App bundle test certificate",
      "type": "object",
      "properties": {
        "certificateHashSha1": {
          "description": "SHA1 hash of the certificate used to resign the AAB",
          "type": "string"
        },
        "certificateHashSha256": {
          "description": "SHA256 hash of the certificate used to resign the AAB",
          "type": "string"
        },
        "certificateHashMd5": {
          "description": "MD5 hash of the certificate used to resign the AAB",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse",
      "description": "Response containing the UDIDs of tester iOS devices in a project",
      "type": "object",
      "properties": {
        "testerUdids": {
          "description": "The UDIDs of tester iOS devices in a project",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTesterUdid"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaTesterUdid": {
      "id": "GoogleFirebaseAppdistroV1alphaTesterUdid",
      "description": "The UDIDs of a tester's iOS device",
      "type": "object",
      "properties": {
        "udid": {
          "description": "The UDID of the tester's device",
          "type": "string"
        },
        "name": {
          "description": "The name of the tester's device",
          "type": "string"
        },
        "platform": {
          "description": "The platform of the tester's device",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaReleaseTest": {
      "id": "GoogleFirebaseAppdistroV1alphaReleaseTest",
      "description": "Instance of an automated test for a release.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. Timestamp when the test was run.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "deviceExecutions": {
          "description": "Required. The results of the test on each device.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaDeviceExecution"
          }
        },
        "loginCredential": {
          "description": "Optional. Input only. Login credentials for the test. Input only.",
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredential"
        },
        "aiInstructions": {
          "description": "Optional. Instructions for AI driven test.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions"
        },
        "testState": {
          "description": "Output only. The state of the release test.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Test state unspecified.",
            "The test is in progress.",
            "The test has passed.",
            "The test has failed.",
            "The test was inconclusive."
          ],
          "enum": [
            "TEST_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "INCONCLUSIVE"
          ]
        },
        "displayName": {
          "description": "Optional. Display name of the release test. Required if the release test is created with multiple goals.",
          "type": "string"
        },
        "testCase": {
          "description": "Optional. The test case that was used to generate this release test. Note: The test case may have changed or been deleted since the release test was created. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "type": "string"
        },
        "resultsBucket": {
          "description": "Optional. Input only. The custom Cloud Storage bucket where test results are stored. Format: `projects/{project_number}/buckets/{bucket}` If not provided, the default test lab bucket is used.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceExecution": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceExecution",
      "description": "The results of running an automated test on a particular device.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the device execution resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}/deviceExecutions/{device_execution}`",
          "type": "string"
        },
        "originDeviceExecution": {
          "description": "Output only. The device execution from which cached steps were used during this execution. Note: This field is only populated for ACTION_BASED_REPLAY executions. If the original device execution no longer exists, this field will be empty. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}/deviceExecutions/{device_execution}`",
          "readOnly": true,
          "type": "string"
        },
        "device": {
          "description": "Required. The device that the test was run on.",
          "$ref": "GoogleFirebaseAppdistroV1alphaTestDevice"
        },
        "state": {
          "description": "Output only. The state of the test.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Test state unspecified.",
            "The test is in progress.",
            "The test has passed.",
            "The test has failed.",
            "The test was inconclusive."
          ],
          "enum": [
            "TEST_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "INCONCLUSIVE"
          ]
        },
        "appCrash": {
          "description": "Output only. An app crash, if any occurred during the test.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaAppCrash"
        },
        "videoUri": {
          "description": "Output only. A URI to a video of the test run.",
          "readOnly": true,
          "type": "string"
        },
        "videoStartTime": {
          "description": "Output only. The time at which the video started recording.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "roboStats": {
          "description": "Output only. The statistics collected during the Robo test.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaRoboStats"
        },
        "resultsStoragePath": {
          "description": "Output only. The path to a directory in Cloud Storage that will eventually contain the results for this execution. For example, gs://bucket/Nexus5-18-en-portrait.",
          "readOnly": true,
          "type": "string"
        },
        "crawlGraphUri": {
          "description": "Output only. A URI to an image of the Robo crawl graph.",
          "readOnly": true,
          "type": "string"
        },
        "screenshotUris": {
          "description": "Output only. A list of screenshot image URIs taken from the Robo crawl. The file names are numbered by the order in which they were taken.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "aiStepResults": {
          "description": "Output only. Results of the AI steps if passed in",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaAiStepResult"
          }
        },
        "executionType": {
          "description": "Output only. The type of execution for the test.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Execution type unspecified.",
            "An AI-driven test.",
            "A replay of a previous test run.",
            "A failed replay that was rerun using the AI agent.",
            "A random Robo test."
          ],
          "enum": [
            "EXECUTION_TYPE_UNSPECIFIED",
            "AI",
            "ACTION_BASED_REPLAY",
            "AI_REPLAY",
            "RANDOM_CRAWL"
          ]
        },
        "finalAiAssertionMissing": {
          "description": "Output only. Indicates that the test replayed saved actions and concluded without a final AI assertion.",
          "readOnly": true,
          "type": "boolean"
        },
        "failedReason": {
          "description": "Output only. The reason why the test failed.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Reason unspecified.",
            "The app crashed during the test.",
            "If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform.",
            "If the app could not be crawled (possibly because the app did not start).",
            "If the device ran out of memory during the test.",
            "At least one AI step failed.",
            "The crawl reached the time limit before the test could be completed."
          ],
          "enum": [
            "FAILED_REASON_UNSPECIFIED",
            "CRASHED",
            "NOT_INSTALLED",
            "UNABLE_TO_CRAWL",
            "DEVICE_OUT_OF_MEMORY",
            "FAILED_AI_STEP",
            "TIMED_OUT"
          ]
        },
        "inconclusiveReason": {
          "description": "Output only. The reason why the test was inconclusive.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Reason unspecified.",
            "Not enough quota remained to run the test.",
            "The outcome of the test could not be determined because of a failure in the test running infrastructure.",
            "A required cloud service api is not activated (Google Cloud Testing API or Cloud Tool Results API).",
            "The app was not signed.",
            "A main launcher activity could not be found.",
            "The app declares one or more permissions that are not allowed.",
            "Device administrator applications are not allowed.",
            "APK contains no code. See also https://developer.android.com/guide/topics/manifest/application-element.html#code",
            "APK is built for a preview SDK which is unsupported."
          ],
          "enum": [
            "INCONCLUSIVE_REASON_UNSPECIFIED",
            "QUOTA_EXCEEDED",
            "INFRASTRUCTURE_FAILURE",
            "SERVICE_NOT_ACTIVATED",
            "NO_SIGNATURE",
            "NO_LAUNCHER_ACTIVITY",
            "FORBIDDEN_PERMISSIONS",
            "DEVICE_ADMIN_RECEIVER",
            "NO_CODE_APK",
            "INVALID_APK_PREVIEW_SDK"
          ]
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaTestDevice": {
      "id": "GoogleFirebaseAppdistroV1alphaTestDevice",
      "description": "A device on which automated tests can be run.",
      "type": "object",
      "properties": {
        "model": {
          "description": "Required. The device model.",
          "type": "string"
        },
        "version": {
          "description": "Required. The version of the device (API level on Android).",
          "type": "string"
        },
        "orientation": {
          "description": "Optional. The orientation of the device during the test.",
          "type": "string"
        },
        "locale": {
          "description": "Optional. The locale of the device (e.g. \"en_US\" for US English) during the test.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAppCrash": {
      "id": "GoogleFirebaseAppdistroV1alphaAppCrash",
      "description": "An app crash that occurred during an automated test.",
      "type": "object",
      "properties": {
        "message": {
          "description": "Output only. The message associated with the crash.",
          "readOnly": true,
          "type": "string"
        },
        "stackTrace": {
          "description": "Output only. The raw stack trace.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaRoboStats": {
      "id": "GoogleFirebaseAppdistroV1alphaRoboStats",
      "description": "Statistics collected during a Robo test.",
      "type": "object",
      "properties": {
        "distinctVisitedScreens": {
          "description": "Output only. Number of distinct screens visited.",
          "readOnly": true,
          "type": "integer",
          "format": "int32"
        },
        "actionsPerformed": {
          "description": "Output only. Number of actions that crawler performed.",
          "readOnly": true,
          "type": "integer",
          "format": "int32"
        },
        "crawlDuration": {
          "description": "Output only. Duration of crawl.",
          "readOnly": true,
          "type": "string",
          "format": "google-duration"
        },
        "mainActivityCrawlTimedOut": {
          "description": "Output only. Whether the main activity crawl timed out.",
          "readOnly": true,
          "type": "boolean"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAiStepResult": {
      "id": "GoogleFirebaseAppdistroV1alphaAiStepResult",
      "description": "Captures the results of an AiStep",
      "type": "object",
      "properties": {
        "step": {
          "description": "Required. The step performed by the AI",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiStep"
        },
        "state": {
          "description": "Output only. The current state of the step",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Step state unspecified",
            "The step is in progress",
            "The step has completed successfully",
            "The step has failed",
            "The test timed out during this step",
            "The number of actions needed to reach the goal exceeded its limit"
          ],
          "enum": [
            "STEP_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "TIMED_OUT",
            "GOAL_ACTION_LIMIT_REACHED"
          ]
        },
        "assertionDetails": {
          "description": "Output only. Details for an assertion step.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaAssertionDetails"
        },
        "goalDetails": {
          "description": "Output only. Details for a goal step.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaGoalDetails"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAiStep": {
      "id": "GoogleFirebaseAppdistroV1alphaAiStep",
      "description": "A step to be accomplished by the AI",
      "type": "object",
      "properties": {
        "goal": {
          "description": "A goal to be accomplished by the AI",
          "type": "string"
        },
        "assertion": {
          "description": "An assertion to be checked by the AI",
          "type": "string"
        },
        "hint": {
          "description": "Optional. Hint text containing suggestions to help the agent accomplish the goal",
          "type": "string"
        },
        "successCriteria": {
          "description": "Optional. A visual description of the screen's expected state after the step has been successfully completed. This is referred to as the \"final screen assertion\" in the Firebase console and CLI tools. This field must be provided for the last step in a test case, and is optional for all other steps.",
          "type": "string"
        },
        "testCase": {
          "description": "Output only. The test case that contained this step. Note: The test case may have changed or been deleted since this step was created. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAssertionDetails": {
      "id": "GoogleFirebaseAppdistroV1alphaAssertionDetails",
      "description": "Details for an assertion step.",
      "type": "object",
      "properties": {
        "screenshot": {
          "description": "Output only. The screenshot used in the context of this assertion.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot"
        },
        "result": {
          "description": "Output only. The result of the assertion.",
          "readOnly": true,
          "type": "boolean"
        },
        "explanation": {
          "description": "Output only. An explanation justifying the assertion result.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaScreenshot": {
      "id": "GoogleFirebaseAppdistroV1alphaScreenshot",
      "description": "A device screenshot taken during a test.",
      "type": "object",
      "properties": {
        "uri": {
          "description": "Output only. The URI of the screenshot.",
          "readOnly": true,
          "type": "string"
        },
        "width": {
          "description": "Output only. The width of the screenshot, in pixels.",
          "readOnly": true,
          "type": "integer",
          "format": "int32"
        },
        "height": {
          "description": "Output only. The height of the screenshot, in pixels.",
          "readOnly": true,
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGoalDetails": {
      "id": "GoogleFirebaseAppdistroV1alphaGoalDetails",
      "description": "Details for a goal step.",
      "type": "object",
      "properties": {
        "goalActions": {
          "description": "Output only. The actions taken by the AI while attempting to accomplish the goal.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaGoalAction"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGoalAction": {
      "id": "GoogleFirebaseAppdistroV1alphaGoalAction",
      "description": "An action taken by the AI agent while attempting to accomplish a goal.",
      "type": "object",
      "properties": {
        "explanation": {
          "description": "Output only. An explanation justifying why the action was taken.",
          "readOnly": true,
          "type": "string"
        },
        "deviceAction": {
          "description": "Output only. A high level action taken by the AI on the device.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceAction"
        },
        "terminalAction": {
          "description": "Output only. An action taken by the AI to end the goal.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaTerminalAction"
        },
        "debugInfo": {
          "description": "Output only. Debug information explaining why the agent to the specific action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo"
        },
        "startTime": {
          "description": "Output only. The time at which the action started.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "cachingType": {
          "description": "Output only. The type of caching used to determine the action.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Caching type unspecified.",
            "The model alone was used to determine the action with no caching.",
            "The model used information from a previous successful run to determine the action.",
            "The action was replayed from a previous successful run without model input."
          ],
          "enum": [
            "CACHING_TYPE_UNSPECIFIED",
            "NO_CACHING",
            "CACHE_AND_MODEL",
            "CACHE_ONLY"
          ]
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceAction": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceAction",
      "description": "A high level action taken by the AI on the device, potentially involving multiple taps, text entries, waits, etc.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Output only. A short description of the high level action taken by the AI agent.",
          "readOnly": true,
          "type": "string"
        },
        "deviceInteractions": {
          "description": "Output only. The interactions made with the device as part of this higher level action taken by the agent, such as taps, text entries, waits, etc.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteraction"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteraction": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteraction",
      "description": "An interaction with the device, such as a tap, text entry, wait, etc.",
      "type": "object",
      "properties": {
        "screenshot": {
          "description": "Output only. The screenshot used in the context of this action. The screen may have changed before the action was actually taken.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot"
        },
        "tap": {
          "description": "Output only. A tap action.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        },
        "swipe": {
          "description": "Output only. A swipe action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe"
        },
        "textInput": {
          "description": "Output only. A text input action, that types some text into whatever field is currently focused, if any. Unlike `enter_text` this action requires that the field be brought into focus first, for example by emitting a tap action before this one.",
          "readOnly": true,
          "type": "string"
        },
        "enterText": {
          "description": "Output only. A text entry action, that enters text into a particular text field, clearing any existing text in the field. Unlike `text_input` this action does not require any other actions such as a tap to be performed before it can enter the text.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText"
        },
        "wait": {
          "description": "Output only. A wait action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait"
        },
        "keyCode": {
          "description": "Output only. Key code for a key event action.",
          "readOnly": true,
          "type": "string"
        },
        "longPress": {
          "description": "Output only. A long press (tap and hold) action.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        },
        "dragAndDrop": {
          "description": "Output only. A drag and drop action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop"
        },
        "backAction": {
          "description": "Output only. A back action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack"
        },
        "targetFoldedState": {
          "description": "Output only. The target folded state of the device in a set folded state action. The valid string values are device-dependent, and can be found using `adb shell cmd device_state print-states`.",
          "readOnly": true,
          "type": "string"
        },
        "targetOrientation": {
          "description": "Output only. The target orientation of the device in a set orientation action.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Orientation unspecified.",
            "Portrait orientation.",
            "Landscape orientation."
          ],
          "enum": [
            "ORIENTATION_UNSPECIFIED",
            "PORTRAIT",
            "LANDSCAPE"
          ]
        }
      }
    },
    "AndroidxCrawlerOutputPoint": {
      "id": "AndroidxCrawlerOutputPoint",
      "description": "Point for describing bounding boxes tap locations Top left is 0,0",
      "type": "object",
      "properties": {
        "xCoordinate": {
          "type": "integer",
          "format": "int32"
        },
        "yCoordinate": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe",
      "description": "A swipe action.",
      "type": "object",
      "properties": {
        "start": {
          "description": "Output only. The start point of the swipe.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        },
        "end": {
          "description": "Output only. The end point of the swipe.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText",
      "description": "A text entry action, that enters text into a particular text field, clearing any existing text in the field.",
      "type": "object",
      "properties": {
        "text": {
          "description": "Output only. The text to enter.",
          "readOnly": true,
          "type": "string"
        },
        "elementBounds": {
          "description": "Output only. The visible bounds of the element to enter text into.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputRectangle"
        }
      }
    },
    "AndroidxCrawlerOutputRectangle": {
      "id": "AndroidxCrawlerOutputRectangle",
      "description": "Rectangle for describing bounding boxes",
      "type": "object",
      "properties": {
        "left": {
          "type": "integer",
          "format": "int32"
        },
        "top": {
          "type": "integer",
          "format": "int32"
        },
        "right": {
          "type": "integer",
          "format": "int32"
        },
        "bottom": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait",
      "description": "A wait action.",
      "type": "object",
      "properties": {
        "duration": {
          "description": "Output only. The duration of the wait.",
          "readOnly": true,
          "type": "string",
          "format": "google-duration"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop",
      "description": "A drag and drop action.",
      "type": "object",
      "properties": {
        "start": {
          "description": "Output only. The start point of the drag and drop.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        },
        "end": {
          "description": "Output only. The end point of the drag and drop.",
          "readOnly": true,
          "$ref": "AndroidxCrawlerOutputPoint"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack",
      "description": "A back action.",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaTerminalAction": {
      "id": "GoogleFirebaseAppdistroV1alphaTerminalAction",
      "description": "An action taken by the AI to end the goal.",
      "type": "object",
      "properties": {
        "screenshot": {
          "description": "Output only. The screenshot used in the context of this terminal action.",
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot"
        },
        "reason": {
          "description": "Output only. The reason why this goal was ended.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Reason unspecified.",
            "The goal failed to be completed. Note that \"impossible\" is a legacy term and the goal is reported to the customer as having \"failed\".",
            "The goal was completed successfully."
          ],
          "enum": [
            "REASON_UNSPECIFIED",
            "GOAL_IMPOSSIBLE",
            "GOAL_COMPLETE"
          ]
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo": {
      "id": "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo",
      "description": "Information to help the customer understand why the agent took this action.",
      "type": "object",
      "properties": {
        "annotatedScreenshotUri": {
          "description": "Output only. URI of the screenshot with elements labeled which was used by the agent.",
          "readOnly": true,
          "type": "string"
        },
        "jsonUri": {
          "description": "Output only. Structured data explaining the agent's choice.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaLoginCredential": {
      "id": "GoogleFirebaseAppdistroV1alphaLoginCredential",
      "description": "Login credential for automated tests",
      "type": "object",
      "properties": {
        "username": {
          "description": "Optional. Username for automated tests",
          "type": "string"
        },
        "password": {
          "description": "Optional. Password for automated tests",
          "type": "string"
        },
        "google": {
          "description": "Optional. Are these credentials for Google?",
          "type": "boolean"
        },
        "fieldHints": {
          "description": "Optional. Hints to the crawler for identifying input fields",
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints": {
      "id": "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints",
      "description": "Hints to the crawler for identifying input fields",
      "type": "object",
      "properties": {
        "usernameResourceName": {
          "description": "Required. The Android resource name of the username UI element. For example, in Java: R.string.foo in xml: @string/foo Only the \"foo\" part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html",
          "type": "string"
        },
        "passwordResourceName": {
          "description": "Required. The Android resource name of the password UI element. For example, in Java: R.string.foo in xml: @string/foo Only the \"foo\" part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaAiInstructions": {
      "id": "GoogleFirebaseAppdistroV1alphaAiInstructions",
      "type": "object",
      "properties": {
        "steps": {
          "description": "Required. Steps to be accomplished by the AI",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaAiStep"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse",
      "description": "The response message for `ListReleaseTests`.",
      "type": "object",
      "properties": {
        "releaseTests": {
          "description": "The tests listed.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
          }
        },
        "nextPageToken": {
          "description": "A short-lived token, which can be sent as `pageToken` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse",
      "description": "The (empty) response message for `CancelReleaseTest`.",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaTestConfig": {
      "id": "GoogleFirebaseAppdistroV1alphaTestConfig",
      "description": "Configuration for automated tests",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app}/testConfig`",
          "type": "string"
        },
        "roboCrawler": {
          "description": "Optional. Configuration for Robo crawler",
          "$ref": "GoogleFirebaseAppdistroV1alphaRoboCrawler"
        },
        "testDevices": {
          "description": "Optional. Tests will be run on this list of devices",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestDevice"
          }
        },
        "displayName": {
          "description": "Optional. Display name of the AI driven test. Required if the release test is created with multiple goals.",
          "type": "string"
        },
        "resultsBucket": {
          "description": "Optional. The custom Cloud Storage bucket where test results are stored. Format: `projects/{project_number}/buckets/{bucket}` If not provided, the default test lab bucket is used.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaRoboCrawler": {
      "id": "GoogleFirebaseAppdistroV1alphaRoboCrawler",
      "description": "Configuration for Robo crawler",
      "type": "object",
      "properties": {
        "loginCredential": {
          "description": "Optional. Login credential for automated tests",
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredential"
        },
        "aiInstructions": {
          "description": "Optional. Instructions for AI driven test",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaTestCase": {
      "id": "GoogleFirebaseAppdistroV1alphaTestCase",
      "description": "AI test cases",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the test case resource. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "type": "string"
        },
        "displayName": {
          "description": "Required. Display name of the test case.",
          "type": "string"
        },
        "aiInstructions": {
          "description": "Optional. Instructions for AI driven test.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions"
        },
        "createTime": {
          "description": "Output only. Timestamp when the test case was created",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "prerequisiteTestCase": {
          "description": "Optional. Test case that must be run before this test case.",
          "type": "string"
        },
        "dependentTestCases": {
          "description": "Output only. Other test cases that depend on this test case as a prerequisite.",
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaListTestCasesResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaListTestCasesResponse",
      "description": "The response message for `ListTestCases`.",
      "type": "object",
      "properties": {
        "testCases": {
          "description": "The test cases from the specified app.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest",
      "description": "Request message for `ClearTestCaseCache`.",
      "type": "object",
      "properties": {
        "testDevices": {
          "description": "Optional. The list of devices for which to clear the cache. If not present, clear all of them.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestDevice"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse",
      "description": "Response empty (google.protobuf.Empty) message for `ClearTestCaseCache`",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest",
      "description": "The request message for `BatchUpdateTestCase`.",
      "type": "object",
      "properties": {
        "requests": {
          "description": "Required. The update requests. A maximum number of 1000 test cases can be updated in one batch",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaUpdateTestCaseRequest"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaUpdateTestCaseRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaUpdateTestCaseRequest",
      "description": "The request message for `UpdateTestCase`.",
      "type": "object",
      "properties": {
        "testCase": {
          "description": "Required. The test case to update. The test case's `name` field is used to identify the test case to update. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
        },
        "allowMissing": {
          "description": "Optional. If set to true, and the test case is not found, a new test case will be created.",
          "type": "boolean"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse",
      "description": "The response message for `BatchUpdateTestCase`.",
      "type": "object",
      "properties": {
        "testCases": {
          "description": "The updated test cases.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
          }
        }
      }
    },
    "GoogleProtobufEmpty": {
      "id": "GoogleProtobufEmpty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest",
      "description": "The request message for `BatchDeleteTestCase`.",
      "type": "object",
      "properties": {
        "names": {
          "description": "Required. The name of the test cases to delete. A maximum number of 1000 test cases can be deleted in one batch Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaTestQuota": {
      "id": "GoogleFirebaseAppdistroV1alphaTestQuota",
      "description": "Customer quota information for `ReleaseTests`. Note: This quota only applies to tests with `AiInstructions` and is separate from the quota which might apply to the device time used by any tests.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Identifier. The name of the `TestQuota` resource. Format: `projects/{project_number}/testQuota`",
          "type": "string"
        },
        "usage": {
          "description": "Output only. Number of `ReleaseTests` run in the current month",
          "readOnly": true,
          "type": "string",
          "format": "int64"
        },
        "limit": {
          "description": "Output only. Maximum number of `ReleaseTests` allotted for the current month.",
          "readOnly": true,
          "type": "string",
          "format": "int64"
        }
      }
    },
    "GoogleFirebaseAppdistroV1Release": {
      "id": "GoogleFirebaseAppdistroV1Release",
      "description": "A release of a Firebase app.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the release resource. Format: `projects/{project_number}/apps/{app}/releases/{release}`",
          "type": "string"
        },
        "releaseNotes": {
          "description": "Notes of the release.",
          "$ref": "GoogleFirebaseAppdistroV1ReleaseNotes"
        },
        "displayVersion": {
          "description": "Output only. Display version of the release. For an Android release, the display version is the `versionName`. For an iOS release, the display version is the `CFBundleShortVersionString`.",
          "readOnly": true,
          "type": "string"
        },
        "buildVersion": {
          "description": "Output only. Build version of the release. For an Android release, the build version is the `versionCode`. For an iOS release, the build version is the `CFBundleVersion`.",
          "readOnly": true,
          "type": "string"
        },
        "createTime": {
          "description": "Output only. The time the release was created.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. The time the release was last updated.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "expireTime": {
          "description": "Output only. The time the release will expire.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "firebaseConsoleUri": {
          "description": "Output only. A link to the Firebase console displaying a single release.",
          "readOnly": true,
          "type": "string"
        },
        "testingUri": {
          "description": "Output only. A link to the release in the tester web clip or Android app that lets testers (which were granted access to the app) view release notes and install the app onto their devices.",
          "readOnly": true,
          "type": "string"
        },
        "binaryDownloadUri": {
          "description": "Output only. A signed link (which expires in one hour) to directly download the app binary (IPA/APK/AAB) file.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1ReleaseNotes": {
      "id": "GoogleFirebaseAppdistroV1ReleaseNotes",
      "description": "Notes that belong to a release.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The text of the release notes.",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1UploadReleaseMetadata": {
      "id": "GoogleFirebaseAppdistroV1UploadReleaseMetadata",
      "description": "Operation metadata for `UploadRelease`.",
      "type": "object",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1UploadReleaseResponse": {
      "id": "GoogleFirebaseAppdistroV1UploadReleaseResponse",
      "description": "Response message for `UploadRelease`.",
      "type": "object",
      "properties": {
        "result": {
          "description": "Result of upload release.",
          "type": "string",
          "enumDescriptions": [
            "Upload binary result unspecified",
            "Upload binary resulted in a new release",
            "Upload binary updated an existing release",
            "Upload binary resulted in a no-op. A release with the exact same binary already exists."
          ],
          "enum": [
            "UPLOAD_RELEASE_RESULT_UNSPECIFIED",
            "RELEASE_CREATED",
            "RELEASE_UPDATED",
            "RELEASE_UNMODIFIED"
          ]
        },
        "release": {
          "description": "Release associated with the uploaded binary.",
          "$ref": "GoogleFirebaseAppdistroV1Release"
        }
      }
    }
  },
  "name": "firebaseappdistribution",
  "documentationLink": "https://firebase.google.com/products/app-distribution",
  "discoveryVersion": "v1",
  "batchPath": "batch",
  "baseUrl": "https://firebaseappdistribution.googleapis.com/",
  "mtlsRootUrl": "https://firebaseappdistribution.mtls.googleapis.com/",
  "rootUrl": "https://firebaseappdistribution.googleapis.com/",
  "ownerName": "Google",
  "servicePath": "",
  "kind": "discovery#restDescription"
}
