{
  "protocol": "rest",
  "schemas": {
    "GoogleFirebaseAppdistroV1alphaAssertionDetails": {
      "type": "object",
      "description": "Details for an assertion step.",
      "properties": {
        "screenshot": {
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot",
          "description": "Output only. The screenshot used in the context of this assertion."
        },
        "result": {
          "description": "Output only. The result of the assertion.",
          "type": "boolean",
          "readOnly": true
        },
        "explanation": {
          "description": "Output only. An explanation justifying the assertion result.",
          "type": "string",
          "readOnly": true
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaAssertionDetails"
    },
    "GoogleProtobufEmpty": {
      "id": "GoogleProtobufEmpty",
      "type": "object",
      "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); }",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest": {
      "description": "The request message for `BatchDeleteTestCase`.",
      "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"
          }
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest"
    },
    "GoogleFirebaseAppdistroV1alphaScreenshot": {
      "id": "GoogleFirebaseAppdistroV1alphaScreenshot",
      "type": "object",
      "description": "A device screenshot taken during a test.",
      "properties": {
        "width": {
          "type": "integer",
          "description": "Output only. The width of the screenshot, in pixels.",
          "readOnly": true,
          "format": "int32"
        },
        "height": {
          "type": "integer",
          "description": "Output only. The height of the screenshot, in pixels.",
          "readOnly": true,
          "format": "int32"
        },
        "uri": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The URI of the screenshot."
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaReleaseNotes": {
      "type": "object",
      "description": "Release notes for a release.",
      "properties": {
        "releaseNotes": {
          "description": "The actual release notes text from the user.",
          "type": "string"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaReleaseNotes"
    },
    "GoogleFirebaseAppdistroV1alphaApp": {
      "type": "object",
      "description": "An app.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "Bundle identifier"
        },
        "contactEmail": {
          "description": "Developer contact email for testers to reach out to about privacy or support issues.",
          "type": "string"
        },
        "appId": {
          "description": "Firebase gmp app id",
          "type": "string"
        },
        "projectNumber": {
          "type": "string",
          "description": "Project number of the Firebase project, for example 300830567303."
        },
        "aabCertificate": {
          "description": "App bundle test certificate generated for the app.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAabCertificate"
        },
        "platform": {
          "description": "iOS or Android",
          "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.",
          "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"
          ],
          "type": "string",
          "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"
          ]
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaApp"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText",
      "description": "A text entry action, that enters text into a particular text field, clearing any existing text in the field.",
      "properties": {
        "text": {
          "readOnly": true,
          "description": "Output only. The text to enter.",
          "type": "string"
        },
        "elementBounds": {
          "readOnly": true,
          "description": "Output only. The visible bounds of the element to enter text into.",
          "$ref": "AndroidxCrawlerOutputRectangle"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaReleaseTest": {
      "id": "GoogleFirebaseAppdistroV1alphaReleaseTest",
      "description": "Instance of an automated test for a release.",
      "properties": {
        "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"
        },
        "testState": {
          "enum": [
            "TEST_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "INCONCLUSIVE"
          ],
          "readOnly": true,
          "description": "Output only. The state of the release test.",
          "enumDescriptions": [
            "Test state unspecified.",
            "The test is in progress.",
            "The test has passed.",
            "The test has failed.",
            "The test was inconclusive."
          ],
          "type": "string"
        },
        "displayName": {
          "description": "Optional. Display name of the release test. Required if the release test is created with multiple goals.",
          "type": "string"
        },
        "deviceExecutions": {
          "description": "Required. The results of the test on each device.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaDeviceExecution"
          }
        },
        "loginCredential": {
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredential",
          "description": "Optional. Input only. Login credentials for the test. Input only."
        },
        "name": {
          "description": "The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`",
          "type": "string"
        },
        "aiInstructions": {
          "description": "Optional. Instructions for AI driven test.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions"
        },
        "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"
        },
        "createTime": {
          "type": "string",
          "description": "Output only. Timestamp when the test was run.",
          "readOnly": true,
          "format": "google-datetime"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack": {
      "description": "A back action.",
      "properties": {},
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack"
    },
    "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest",
      "description": "Request message for `ClearTestCaseCache`.",
      "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"
          }
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaRoboCrawler": {
      "type": "object",
      "description": "Configuration for Robo crawler",
      "properties": {
        "loginCredential": {
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredential",
          "description": "Optional. Login credential for automated tests"
        },
        "aiInstructions": {
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions",
          "description": "Optional. Instructions for AI driven test"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaRoboCrawler"
    },
    "GoogleFirebaseAppdistroV1UploadReleaseResponse": {
      "description": "Response message for `UploadRelease`.",
      "properties": {
        "result": {
          "enum": [
            "UPLOAD_RELEASE_RESULT_UNSPECIFIED",
            "RELEASE_CREATED",
            "RELEASE_UPDATED",
            "RELEASE_UNMODIFIED"
          ],
          "type": "string",
          "description": "Result of upload release.",
          "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."
          ]
        },
        "release": {
          "description": "Release associated with the uploaded binary.",
          "$ref": "GoogleFirebaseAppdistroV1Release"
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1UploadReleaseResponse"
    },
    "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse",
      "type": "object",
      "description": "The response message for `CreateReleaseNotes`.",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaRoboStats": {
      "description": "Statistics collected during a Robo test.",
      "properties": {
        "distinctVisitedScreens": {
          "readOnly": true,
          "format": "int32",
          "type": "integer",
          "description": "Output only. Number of distinct screens visited."
        },
        "crawlDuration": {
          "description": "Output only. Duration of crawl.",
          "type": "string",
          "readOnly": true,
          "format": "google-duration"
        },
        "mainActivityCrawlTimedOut": {
          "readOnly": true,
          "description": "Output only. Whether the main activity crawl timed out.",
          "type": "boolean"
        },
        "actionsPerformed": {
          "description": "Output only. Number of actions that crawler performed.",
          "type": "integer",
          "readOnly": true,
          "format": "int32"
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaRoboStats"
    },
    "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo": {
      "id": "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo",
      "description": "Information to help the customer understand why the agent took this action.",
      "properties": {
        "jsonUri": {
          "type": "string",
          "description": "Output only. Structured data explaining the agent's choice.",
          "readOnly": true
        },
        "annotatedScreenshotUri": {
          "description": "Output only. URI of the screenshot with elements labeled which was used by the agent.",
          "type": "string",
          "readOnly": true
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteraction": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteraction",
      "type": "object",
      "description": "An interaction with the device, such as a tap, text entry, wait, etc.",
      "properties": {
        "tap": {
          "$ref": "AndroidxCrawlerOutputPoint",
          "description": "Output only. A tap action.",
          "readOnly": true
        },
        "keyCode": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Key code for a key event action."
        },
        "dragAndDrop": {
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop",
          "description": "Output only. A drag and drop action."
        },
        "backAction": {
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionBack",
          "description": "Output only. A back action.",
          "readOnly": true
        },
        "targetFoldedState": {
          "readOnly": true,
          "type": "string",
          "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`."
        },
        "targetOrientation": {
          "type": "string",
          "description": "Output only. The target orientation of the device in a set orientation action.",
          "enumDescriptions": [
            "Orientation unspecified.",
            "Portrait orientation.",
            "Landscape orientation."
          ],
          "readOnly": true,
          "enum": [
            "ORIENTATION_UNSPECIFIED",
            "PORTRAIT",
            "LANDSCAPE"
          ]
        },
        "swipe": {
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe",
          "description": "Output only. A swipe action."
        },
        "longPress": {
          "$ref": "AndroidxCrawlerOutputPoint",
          "description": "Output only. A long press (tap and hold) action.",
          "readOnly": true
        },
        "wait": {
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait",
          "description": "Output only. A wait action.",
          "readOnly": true
        },
        "textInput": {
          "type": "string",
          "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
        },
        "screenshot": {
          "description": "Output only. The screenshot used in the context of this action. The screen may have changed before the action was actually taken.",
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot",
          "readOnly": true
        },
        "enterText": {
          "readOnly": true,
          "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.",
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteractionEnterText"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaRelease": {
      "id": "GoogleFirebaseAppdistroV1alphaRelease",
      "description": "Proto defining a release object",
      "properties": {
        "buildVersion": {
          "type": "string",
          "description": "Release build version"
        },
        "instanceId": {
          "type": "string",
          "description": "Instance id of the release"
        },
        "distributedAt": {
          "type": "string",
          "description": "Timestamp when the release was created",
          "format": "google-datetime"
        },
        "id": {
          "description": "Release Id",
          "type": "string"
        },
        "openInvitationCount": {
          "description": "Number of testers who have open invitations for the release",
          "type": "integer",
          "format": "int32"
        },
        "displayVersion": {
          "type": "string",
          "description": "Release version"
        },
        "lastActivityAt": {
          "format": "google-datetime",
          "description": "Last activity timestamp",
          "type": "string"
        },
        "receivedAt": {
          "description": "unused. ",
          "deprecated": true,
          "type": "string",
          "format": "google-datetime"
        },
        "testerWithInstallCount": {
          "format": "int32",
          "description": "Number of testers who have installed the release",
          "type": "integer"
        },
        "releaseNotesSummary": {
          "type": "string",
          "description": "Release notes summary"
        },
        "testerCount": {
          "type": "integer",
          "description": "Count of testers added to the release",
          "format": "int32"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaAiStepResult": {
      "id": "GoogleFirebaseAppdistroV1alphaAiStepResult",
      "description": "Captures the results of an AiStep",
      "properties": {
        "assertionDetails": {
          "$ref": "GoogleFirebaseAppdistroV1alphaAssertionDetails",
          "description": "Output only. Details for an assertion step.",
          "readOnly": true
        },
        "goalDetails": {
          "$ref": "GoogleFirebaseAppdistroV1alphaGoalDetails",
          "description": "Output only. Details for a goal step.",
          "readOnly": true
        },
        "state": {
          "description": "Output only. The current state of the step",
          "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"
          ],
          "type": "string",
          "enum": [
            "STEP_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "TIMED_OUT",
            "GOAL_ACTION_LIMIT_REACHED"
          ],
          "readOnly": true
        },
        "step": {
          "$ref": "GoogleFirebaseAppdistroV1alphaAiStep",
          "description": "Required. The step performed by the AI"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1Release": {
      "type": "object",
      "description": "A release of a Firebase app.",
      "properties": {
        "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`.",
          "type": "string",
          "readOnly": true
        },
        "firebaseConsoleUri": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. A link to the Firebase console displaying a single release."
        },
        "testingUri": {
          "readOnly": true,
          "type": "string",
          "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."
        },
        "updateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The time the release was last updated."
        },
        "expireTime": {
          "type": "string",
          "description": "Output only. The time the release will expire.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "name": {
          "description": "The name of the release resource. Format: `projects/{project_number}/apps/{app}/releases/{release}`",
          "type": "string"
        },
        "buildVersion": {
          "type": "string",
          "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
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time the release was created.",
          "type": "string"
        },
        "binaryDownloadUri": {
          "readOnly": true,
          "description": "Output only. A signed link (which expires in one hour) to directly download the app binary (IPA/APK/AAB) file.",
          "type": "string"
        }
      },
      "id": "GoogleFirebaseAppdistroV1Release"
    },
    "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse",
      "description": "The response message for `BatchUpdateTestCase`.",
      "properties": {
        "testCases": {
          "description": "The updated test cases.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
          }
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse",
      "description": "Response object to get the release given a upload hash",
      "properties": {
        "release": {
          "$ref": "GoogleFirebaseAppdistroV1alphaRelease",
          "description": "Release object"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceExecution": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceExecution",
      "description": "The results of running an automated test on a particular device.",
      "properties": {
        "executionType": {
          "enum": [
            "EXECUTION_TYPE_UNSPECIFIED",
            "AI",
            "ACTION_BASED_REPLAY",
            "AI_REPLAY",
            "RANDOM_CRAWL"
          ],
          "readOnly": true,
          "description": "Output only. The type of execution for the test.",
          "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."
          ],
          "type": "string"
        },
        "state": {
          "description": "Output only. The state of the test.",
          "enumDescriptions": [
            "Test state unspecified.",
            "The test is in progress.",
            "The test has passed.",
            "The test has failed.",
            "The test was inconclusive."
          ],
          "type": "string",
          "enum": [
            "TEST_STATE_UNSPECIFIED",
            "IN_PROGRESS",
            "PASSED",
            "FAILED",
            "INCONCLUSIVE"
          ],
          "readOnly": true
        },
        "roboStats": {
          "description": "Output only. The statistics collected during the Robo test.",
          "$ref": "GoogleFirebaseAppdistroV1alphaRoboStats",
          "readOnly": true
        },
        "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"
        },
        "aiStepResults": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaAiStepResult"
          },
          "description": "Output only. Results of the AI steps if passed in"
        },
        "failedReason": {
          "description": "Output only. The reason why the test failed.",
          "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."
          ],
          "type": "string",
          "enum": [
            "FAILED_REASON_UNSPECIFIED",
            "CRASHED",
            "NOT_INSTALLED",
            "UNABLE_TO_CRAWL",
            "DEVICE_OUT_OF_MEMORY",
            "FAILED_AI_STEP",
            "TIMED_OUT"
          ],
          "readOnly": true
        },
        "inconclusiveReason": {
          "readOnly": true,
          "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"
          ],
          "type": "string",
          "description": "Output only. The reason why the test was inconclusive.",
          "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."
          ]
        },
        "screenshotUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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
        },
        "device": {
          "description": "Required. The device that the test was run on.",
          "$ref": "GoogleFirebaseAppdistroV1alphaTestDevice"
        },
        "videoStartTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time at which the video started recording.",
          "type": "string"
        },
        "finalAiAssertionMissing": {
          "type": "boolean",
          "description": "Output only. Indicates that the test replayed saved actions and concluded without a final AI assertion.",
          "readOnly": true
        },
        "videoUri": {
          "description": "Output only. A URI to a video of the test run.",
          "type": "string",
          "readOnly": true
        },
        "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.",
          "type": "string",
          "readOnly": true
        },
        "appCrash": {
          "$ref": "GoogleFirebaseAppdistroV1alphaAppCrash",
          "description": "Output only. An app crash, if any occurred during the test.",
          "readOnly": true
        },
        "crawlGraphUri": {
          "readOnly": true,
          "description": "Output only. A URI to an image of the Robo crawl graph.",
          "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}`",
          "type": "string",
          "readOnly": true
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaAiStep": {
      "description": "A step to be accomplished by the AI",
      "properties": {
        "hint": {
          "type": "string",
          "description": "Optional. Hint text containing suggestions to help the agent accomplish the goal"
        },
        "successCriteria": {
          "type": "string",
          "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."
        },
        "testCase": {
          "type": "string",
          "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
        },
        "assertion": {
          "type": "string",
          "description": "An assertion to be checked by the AI"
        },
        "goal": {
          "type": "string",
          "description": "A goal to be accomplished by the AI"
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaAiStep"
    },
    "GoogleFirebaseAppdistroV1alphaAppCrash": {
      "description": "An app crash that occurred during an automated test.",
      "properties": {
        "stackTrace": {
          "type": "string",
          "description": "Output only. The raw stack trace.",
          "readOnly": true
        },
        "message": {
          "readOnly": true,
          "description": "Output only. The message associated with the crash.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaAppCrash"
    },
    "GoogleFirebaseAppdistroV1alphaJwt": {
      "type": "object",
      "description": "A JWT token.",
      "properties": {
        "token": {
          "type": "string",
          "description": "The JWT token (three Base64URL-encoded strings joined by dots)."
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaJwt"
    },
    "GoogleFirebaseAppdistroV1alphaAabCertificate": {
      "type": "object",
      "description": "App bundle test certificate",
      "properties": {
        "certificateHashMd5": {
          "description": "MD5 hash of the certificate used to resign the AAB",
          "type": "string"
        },
        "certificateHashSha256": {
          "type": "string",
          "description": "SHA256 hash of the certificate used to resign the AAB"
        },
        "certificateHashSha1": {
          "type": "string",
          "description": "SHA1 hash of the certificate used to resign the AAB"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaAabCertificate"
    },
    "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse": {
      "type": "object",
      "description": "The response message for `ListReleaseTests`.",
      "properties": {
        "releaseTests": {
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
          },
          "description": "The tests listed."
        },
        "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"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse"
    },
    "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse",
      "type": "object",
      "description": "The response message for `GetUploadStatus`.",
      "properties": {
        "message": {
          "type": "string",
          "description": "Any additional context for the given upload status (e.g. error message) Meant to be displayed to the client"
        },
        "errorCode": {
          "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"
          ],
          "description": "The error code associated with (only set on \"FAILURE\")",
          "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."
          ],
          "type": "string"
        },
        "release": {
          "$ref": "GoogleFirebaseAppdistroV1alphaRelease",
          "description": "The release that was created from the upload (only set on \"SUCCESS\")"
        },
        "status": {
          "enum": [
            "STATUS_UNSPECIFIED",
            "IN_PROGRESS",
            "ALREADY_UPLOADED",
            "SUCCESS",
            "ERROR"
          ],
          "description": "The status of the upload",
          "enumDescriptions": [
            "Status unspecified.",
            "The upload is in progress.",
            "The binary has already been uploaded.",
            "The upload was successful.",
            "The upload failed."
          ],
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionWait",
      "type": "object",
      "description": "A wait action.",
      "properties": {
        "duration": {
          "readOnly": true,
          "format": "google-duration",
          "type": "string",
          "description": "Output only. The duration of the wait."
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse",
      "type": "object",
      "description": "The (empty) response message for `CancelReleaseTest`.",
      "properties": {}
    },
    "GoogleFirebaseAppdistroV1alphaTerminalAction": {
      "id": "GoogleFirebaseAppdistroV1alphaTerminalAction",
      "description": "An action taken by the AI to end the goal.",
      "properties": {
        "screenshot": {
          "$ref": "GoogleFirebaseAppdistroV1alphaScreenshot",
          "description": "Output only. The screenshot used in the context of this terminal action.",
          "readOnly": true
        },
        "reason": {
          "type": "string",
          "description": "Output only. The reason why this goal was ended.",
          "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."
          ],
          "readOnly": true,
          "enum": [
            "REASON_UNSPECIFIED",
            "GOAL_IMPOSSIBLE",
            "GOAL_COMPLETE"
          ]
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest": {
      "description": "The request message for `BatchUpdateTestCase`.",
      "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"
          }
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop": {
      "description": "A drag and drop action.",
      "properties": {
        "start": {
          "description": "Output only. The start point of the drag and drop.",
          "$ref": "AndroidxCrawlerOutputPoint",
          "readOnly": true
        },
        "end": {
          "readOnly": true,
          "description": "Output only. The end point of the drag and drop.",
          "$ref": "AndroidxCrawlerOutputPoint"
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionDragAndDrop"
    },
    "GoogleFirebaseAppdistroV1UploadReleaseMetadata": {
      "type": "object",
      "description": "Operation metadata for `UploadRelease`.",
      "properties": {},
      "id": "GoogleFirebaseAppdistroV1UploadReleaseMetadata"
    },
    "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse": {
      "description": "The response message for `EnableAccessOnRelease`.",
      "properties": {},
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse"
    },
    "GoogleFirebaseAppdistroV1alphaGoalAction": {
      "description": "An action taken by the AI agent while attempting to accomplish a goal.",
      "properties": {
        "startTime": {
          "description": "Output only. The time at which the action started.",
          "type": "string",
          "readOnly": true,
          "format": "google-datetime"
        },
        "terminalAction": {
          "$ref": "GoogleFirebaseAppdistroV1alphaTerminalAction",
          "description": "Output only. An action taken by the AI to end the goal.",
          "readOnly": true
        },
        "deviceAction": {
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaDeviceAction",
          "description": "Output only. A high level action taken by the AI on the device."
        },
        "debugInfo": {
          "readOnly": true,
          "$ref": "GoogleFirebaseAppdistroV1alphaGoalActionDebugInfo",
          "description": "Output only. Debug information explaining why the agent to the specific action."
        },
        "explanation": {
          "readOnly": true,
          "description": "Output only. An explanation justifying why the action was taken.",
          "type": "string"
        },
        "cachingType": {
          "readOnly": true,
          "enum": [
            "CACHING_TYPE_UNSPECIFIED",
            "NO_CACHING",
            "CACHE_AND_MODEL",
            "CACHE_ONLY"
          ],
          "type": "string",
          "description": "Output only. The type of caching used to determine the action.",
          "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."
          ]
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaGoalAction"
    },
    "GoogleFirebaseAppdistroV1alphaDeviceAction": {
      "type": "object",
      "description": "A high level action taken by the AI on the device, potentially involving multiple taps, text entries, waits, etc.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Output only. A short description of the high level action taken by the AI agent.",
          "readOnly": true
        },
        "deviceInteractions": {
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaDeviceInteraction"
          },
          "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
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaDeviceAction"
    },
    "GoogleFirebaseAppdistroV1alphaUpdateTestCaseRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaUpdateTestCaseRequest",
      "description": "The request message for `UpdateTestCase`.",
      "properties": {
        "testCase": {
          "$ref": "GoogleFirebaseAppdistroV1alphaTestCase",
          "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}`"
        },
        "allowMissing": {
          "description": "Optional. If set to true, and the test case is not found, a new test case will be created.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaAiInstructions": {
      "type": "object",
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaAiStep"
          },
          "description": "Required. Steps to be accomplished by the AI"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaAiInstructions"
    },
    "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.",
      "properties": {
        "usage": {
          "type": "string",
          "description": "Output only. Number of `ReleaseTests` run in the current month",
          "readOnly": true,
          "format": "int64"
        },
        "limit": {
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Maximum number of `ReleaseTests` allotted for the current month.",
          "type": "string"
        },
        "name": {
          "description": "Identifier. The name of the `TestQuota` resource. Format: `projects/{project_number}/testQuota`",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1ReleaseNotes": {
      "description": "Notes that belong to a release.",
      "properties": {
        "text": {
          "type": "string",
          "description": "The text of the release notes."
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1ReleaseNotes"
    },
    "GoogleFirebaseAppdistroV1alphaListTestCasesResponse": {
      "description": "The response message for `ListTestCases`.",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "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."
        },
        "testCases": {
          "description": "The test cases from the specified app.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
          }
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaListTestCasesResponse"
    },
    "GoogleFirebaseAppdistroV1alphaGoalDetails": {
      "type": "object",
      "description": "Details for a goal step.",
      "properties": {
        "goalActions": {
          "description": "Output only. The actions taken by the AI while attempting to accomplish the goal.",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaGoalAction"
          },
          "readOnly": true
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaGoalDetails"
    },
    "GoogleFirebaseAppdistroV1alphaLoginCredential": {
      "id": "GoogleFirebaseAppdistroV1alphaLoginCredential",
      "type": "object",
      "description": "Login credential for automated tests",
      "properties": {
        "username": {
          "description": "Optional. Username for automated tests",
          "type": "string"
        },
        "google": {
          "description": "Optional. Are these credentials for Google?",
          "type": "boolean"
        },
        "fieldHints": {
          "$ref": "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints",
          "description": "Optional. Hints to the crawler for identifying input fields"
        },
        "password": {
          "description": "Optional. Password for automated tests",
          "type": "string"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe": {
      "id": "GoogleFirebaseAppdistroV1alphaDeviceInteractionSwipe",
      "type": "object",
      "description": "A swipe action.",
      "properties": {
        "start": {
          "readOnly": true,
          "description": "Output only. The start point of the swipe.",
          "$ref": "AndroidxCrawlerOutputPoint"
        },
        "end": {
          "description": "Output only. The end point of the swipe.",
          "$ref": "AndroidxCrawlerOutputPoint",
          "readOnly": true
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest": {
      "type": "object",
      "description": "The request message for `CreateReleaseNotes`.",
      "properties": {
        "releaseNotes": {
          "$ref": "GoogleFirebaseAppdistroV1alphaReleaseNotes",
          "description": "The actual release notes body from the user"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest"
    },
    "GoogleFirebaseAppdistroV1alphaTestDevice": {
      "description": "A device on which automated tests can be run.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Required. The device model."
        },
        "locale": {
          "description": "Optional. The locale of the device (e.g. \"en_US\" for US English) during the test.",
          "type": "string"
        },
        "version": {
          "type": "string",
          "description": "Required. The version of the device (API level on Android)."
        },
        "orientation": {
          "type": "string",
          "description": "Optional. The orientation of the device during the test."
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaTestDevice"
    },
    "AndroidxCrawlerOutputPoint": {
      "id": "AndroidxCrawlerOutputPoint",
      "description": "Point for describing bounding boxes tap locations Top left is 0,0",
      "properties": {
        "xCoordinate": {
          "type": "integer",
          "format": "int32"
        },
        "yCoordinate": {
          "type": "integer",
          "format": "int32"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest": {
      "id": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest",
      "description": "The request message for `EnableAccessOnRelease`.",
      "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"
        },
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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"
        },
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. An email address which should get access to this release, for example rebeccahe@google.com"
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse": {
      "description": "Response containing the UDIDs of tester iOS devices in a project",
      "properties": {
        "testerUdids": {
          "description": "The UDIDs of tester iOS devices in a project",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTesterUdid"
          }
        }
      },
      "type": "object",
      "id": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse"
    },
    "GoogleFirebaseAppdistroV1alphaTestConfig": {
      "id": "GoogleFirebaseAppdistroV1alphaTestConfig",
      "description": "Configuration for automated tests",
      "properties": {
        "resultsBucket": {
          "type": "string",
          "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."
        },
        "testDevices": {
          "description": "Optional. Tests will be run on this list of devices",
          "type": "array",
          "items": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestDevice"
          }
        },
        "name": {
          "type": "string",
          "description": "Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app}/testConfig`"
        },
        "roboCrawler": {
          "$ref": "GoogleFirebaseAppdistroV1alphaRoboCrawler",
          "description": "Optional. Configuration for Robo crawler"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name of the AI driven test. Required if the release test is created with multiple goals."
        }
      },
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse": {
      "id": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse",
      "description": "Response empty (google.protobuf.Empty) message for `ClearTestCaseCache`",
      "properties": {},
      "type": "object"
    },
    "GoogleFirebaseAppdistroV1alphaTesterUdid": {
      "type": "object",
      "description": "The UDIDs of a tester's iOS device",
      "properties": {
        "name": {
          "description": "The name of the tester's device",
          "type": "string"
        },
        "platform": {
          "description": "The platform of the tester's device",
          "type": "string"
        },
        "udid": {
          "description": "The UDID of the tester's device",
          "type": "string"
        }
      },
      "id": "GoogleFirebaseAppdistroV1alphaTesterUdid"
    },
    "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints": {
      "id": "GoogleFirebaseAppdistroV1alphaLoginCredentialFieldHints",
      "description": "Hints to the crawler for identifying input fields",
      "properties": {
        "usernameResourceName": {
          "type": "string",
          "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"
        },
        "passwordResourceName": {
          "type": "string",
          "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": "object"
    },
    "AndroidxCrawlerOutputRectangle": {
      "id": "AndroidxCrawlerOutputRectangle",
      "type": "object",
      "description": "Rectangle for describing bounding boxes",
      "properties": {
        "right": {
          "type": "integer",
          "format": "int32"
        },
        "left": {
          "type": "integer",
          "format": "int32"
        },
        "top": {
          "type": "integer",
          "format": "int32"
        },
        "bottom": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "GoogleFirebaseAppdistroV1alphaTestCase": {
      "id": "GoogleFirebaseAppdistroV1alphaTestCase",
      "type": "object",
      "description": "AI test cases",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Required. Display name of the test case."
        },
        "name": {
          "description": "Identifier. The name of the test case resource. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
          "type": "string"
        },
        "prerequisiteTestCase": {
          "type": "string",
          "description": "Optional. Test case that must be run before this test case."
        },
        "dependentTestCases": {
          "description": "Output only. Other test cases that depend on this test case as a prerequisite.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true
        },
        "createTime": {
          "type": "string",
          "description": "Output only. Timestamp when the test case was created",
          "readOnly": true,
          "format": "google-datetime"
        },
        "aiInstructions": {
          "description": "Optional. Instructions for AI driven test.",
          "$ref": "GoogleFirebaseAppdistroV1alphaAiInstructions"
        }
      }
    }
  },
  "discoveryVersion": "v1",
  "servicePath": "",
  "revision": "20260622",
  "resources": {
    "apps": {
      "methods": {
        "getJwt": {
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaJwt"
          },
          "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",
              "type": "string",
              "required": true
            }
          },
          "description": "Get a JWT token",
          "flatPath": "v1alpha/apps/{mobilesdkAppId}/jwt",
          "parameterOrder": [
            "mobilesdkAppId"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1alpha/apps/{mobilesdkAppId}/jwt",
          "httpMethod": "GET",
          "id": "firebaseappdistribution.apps.getJwt"
        },
        "get": {
          "httpMethod": "GET",
          "id": "firebaseappdistribution.apps.get",
          "flatPath": "v1alpha/apps/{mobilesdkAppId}",
          "parameterOrder": [
            "mobilesdkAppId"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1alpha/apps/{mobilesdkAppId}",
          "description": "Get the app, if it exists",
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaApp"
          },
          "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",
              "type": "string",
              "required": true
            },
            "appView": {
              "location": "query",
              "enum": [
                "APP_VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ],
              "type": "string",
              "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.",
              "enumDescriptions": [
                "The default / unset value. The API will default to the BASIC view.",
                "Include everything except aab_state.",
                "Include everything."
              ]
            }
          }
        }
      },
      "resources": {
        "releases": {
          "methods": {
            "enable_access": {
              "parameters": {
                "mobilesdkAppId": {
                  "required": true,
                  "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",
                  "type": "string"
                },
                "releaseId": {
                  "location": "path",
                  "type": "string",
                  "description": "Required. Release identifier",
                  "required": true
                }
              },
              "request": {
                "$ref": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseRequest"
              },
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaEnableAccessOnReleaseResponse"
              },
              "description": "Enable access on a release for testers.",
              "path": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/enable_access",
              "parameterOrder": [
                "mobilesdkAppId",
                "releaseId"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/enable_access",
              "id": "firebaseappdistribution.apps.releases.enable_access",
              "httpMethod": "POST"
            }
          },
          "resources": {
            "notes": {
              "methods": {
                "create": {
                  "description": "Create release notes on a release.",
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesResponse"
                  },
                  "parameters": {
                    "mobilesdkAppId": {
                      "required": true,
                      "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",
                      "type": "string"
                    },
                    "releaseId": {
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "description": "Required. Release identifier"
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaCreateReleaseNotesRequest"
                  },
                  "httpMethod": "POST",
                  "id": "firebaseappdistribution.apps.releases.notes.create",
                  "flatPath": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/notes",
                  "path": "v1alpha/apps/{mobilesdkAppId}/releases/{releaseId}/notes",
                  "parameterOrder": [
                    "mobilesdkAppId",
                    "releaseId"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            }
          }
        },
        "upload_status": {
          "methods": {
            "get": {
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetUploadStatusResponse"
              },
              "parameters": {
                "uploadToken": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "description": "Required. The token for the upload"
                },
                "mobilesdkAppId": {
                  "required": true,
                  "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",
                  "type": "string"
                }
              },
              "description": "GET Binary upload status by token",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/upload_status/{uploadToken}",
              "path": "v1alpha/apps/{mobilesdkAppId}/upload_status/{uploadToken}",
              "parameterOrder": [
                "mobilesdkAppId",
                "uploadToken"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "id": "firebaseappdistribution.apps.upload_status.get"
            }
          }
        },
        "testers": {
          "methods": {
            "getTesterUdids": {
              "httpMethod": "GET",
              "id": "firebaseappdistribution.apps.testers.getTesterUdids",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/testers:getTesterUdids",
              "parameterOrder": [
                "mobilesdkAppId"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1alpha/apps/{mobilesdkAppId}/testers:getTesterUdids",
              "description": "Get UDIDs of tester iOS devices in a project",
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse"
              },
              "parameters": {
                "mobilesdkAppId": {
                  "location": "path",
                  "type": "string",
                  "description": "Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "required": true
                },
                "project": {
                  "description": "The name of the project, which is the parent of testers Format: `projects/{project_number}`",
                  "location": "query",
                  "type": "string"
                }
              }
            }
          }
        },
        "release_by_hash": {
          "methods": {
            "get": {
              "description": "GET Release by binary upload hash",
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetReleaseByUploadHashResponse"
              },
              "parameters": {
                "mobilesdkAppId": {
                  "location": "path",
                  "type": "string",
                  "description": "Required. Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289",
                  "required": true
                },
                "uploadHash": {
                  "location": "path",
                  "type": "string",
                  "description": "Required. The hash for the upload",
                  "required": true
                }
              },
              "httpMethod": "GET",
              "id": "firebaseappdistribution.apps.release_by_hash.get",
              "flatPath": "v1alpha/apps/{mobilesdkAppId}/release_by_hash/{uploadHash}",
              "parameterOrder": [
                "mobilesdkAppId",
                "uploadHash"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1alpha/apps/{mobilesdkAppId}/release_by_hash/{uploadHash}"
            }
          }
        }
      }
    },
    "projects": {
      "methods": {
        "getTestQuota": {
          "httpMethod": "GET",
          "id": "firebaseappdistribution.projects.getTestQuota",
          "flatPath": "v1alpha/projects/{projectsId}/testQuota",
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1alpha/{+name}",
          "description": "Get information about the quota for `ReleaseTests`.",
          "response": {
            "$ref": "GoogleFirebaseAppdistroV1alphaTestQuota"
          },
          "parameters": {
            "name": {
              "location": "path",
              "pattern": "^projects/[^/]+/testQuota$",
              "required": true,
              "description": "Required. The name of the `TestQuota` resource to retrieve. Format: `projects/{project_number}/testQuota`",
              "type": "string"
            }
          }
        }
      },
      "resources": {
        "testers": {
          "methods": {
            "getUdids": {
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaGetTesterUdidsResponse"
              },
              "parameters": {
                "project": {
                  "type": "string",
                  "description": "The name of the project, which is the parent of testers Format: `projects/{project_number}`",
                  "required": true,
                  "pattern": "^projects/[^/]+$",
                  "location": "path"
                },
                "mobilesdkAppId": {
                  "location": "query",
                  "type": "string",
                  "description": "Unique id for a Firebase app of the format: {version}:{project_number}:{platform}:{hash(bundle_id)} Example: 1:581234567376:android:aa0a3c7b135e90289"
                }
              },
              "description": "Get UDIDs of tester iOS devices in a project",
              "flatPath": "v1alpha/projects/{projectsId}/testers:udids",
              "parameterOrder": [
                "project"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1alpha/{+project}/testers:udids",
              "httpMethod": "GET",
              "id": "firebaseappdistribution.projects.testers.getUdids"
            }
          }
        },
        "apps": {
          "resources": {
            "testCases": {
              "methods": {
                "patch": {
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Identifier. The name of the test case resource. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$"
                    },
                    "allowMissing": {
                      "location": "query",
                      "type": "boolean",
                      "description": "Optional. If set to true, and the test case is not found, a new test case will be created."
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "description": "Update a test case.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "path": "v1alpha/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PATCH",
                  "id": "firebaseappdistribution.projects.apps.testCases.patch"
                },
                "batchUpdate": {
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesResponse"
                  },
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "required": true,
                      "description": "Required. The parent resource of the test cases being updated. Format: `projects/{project_number}/apps/{app}`",
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchUpdateTestCasesRequest"
                  },
                  "description": "Updates multiple test cases.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases:batchUpdate",
                  "path": "v1alpha/{+parent}/testCases:batchUpdate",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "id": "firebaseappdistribution.projects.apps.testCases.batchUpdate"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "type": "string",
                      "description": "Required. The parent resource where this test case will be created. Format: `projects/{project_number}/apps/{app}`"
                    },
                    "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"
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "description": "Create a new test case.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1alpha/{+parent}/testCases",
                  "httpMethod": "POST",
                  "id": "firebaseappdistribution.projects.apps.testCases.create"
                },
                "delete": {
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "parameters": {
                    "name": {
                      "location": "path",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "required": true,
                      "description": "Required. The name of the test case resource to delete. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "type": "string"
                    }
                  },
                  "description": "Delete a test case.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "path": "v1alpha/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "id": "firebaseappdistribution.projects.apps.testCases.delete"
                },
                "batchDelete": {
                  "httpMethod": "POST",
                  "id": "firebaseappdistribution.projects.apps.testCases.batchDelete",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases:batchDelete",
                  "path": "v1alpha/{+parent}/testCases:batchDelete",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Deletes multiple test cases.",
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "required": true,
                      "description": "Required. The parent resource of the test cases being deleted. Format: `projects/{project_number}/apps/{app}`",
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaBatchDeleteTestCasesRequest"
                  }
                },
                "list": {
                  "description": "List test cases.",
                  "parameters": {
                    "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"
                    },
                    "parent": {
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "required": true,
                      "location": "path",
                      "description": "Required. The parent resource from which to list test cases. Format: `projects/{project_number}/apps/{app}`",
                      "type": "string"
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "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.",
                      "format": "int32"
                    }
                  },
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaListTestCasesResponse"
                  },
                  "id": "firebaseappdistribution.projects.apps.testCases.list",
                  "httpMethod": "GET",
                  "path": "v1alpha/{+parent}/testCases",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases"
                },
                "get": {
                  "httpMethod": "GET",
                  "id": "firebaseappdistribution.projects.apps.testCases.get",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1alpha/{+name}",
                  "description": "Get a test case.",
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaTestCase"
                  },
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the test case resource to retrieve. Format: `projects/{project_number}/apps/{app}/testCases/{test_case}`",
                      "type": "string",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "required": true,
                      "location": "path"
                    }
                  }
                },
                "clearTestCaseCache": {
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testCases/{testCasesId}:clearTestCaseCache",
                  "path": "v1alpha/{+testCase}:clearTestCaseCache",
                  "parameterOrder": [
                    "testCase"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "id": "firebaseappdistribution.projects.apps.testCases.clearTestCaseCache",
                  "response": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheResponse"
                  },
                  "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}`",
                      "type": "string",
                      "pattern": "^projects/[^/]+/apps/[^/]+/testCases/[^/]+$",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "request": {
                    "$ref": "GoogleFirebaseAppdistroV1alphaClearTestCaseCacheRequest"
                  },
                  "description": "Clears cached test runs for a specific test case and device(s)."
                }
              }
            },
            "releases": {
              "resources": {
                "tests": {
                  "methods": {
                    "list": {
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests",
                      "path": "v1alpha/{+parent}/tests",
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "id": "firebaseappdistribution.projects.apps.releases.tests.list",
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaListReleaseTestsResponse"
                      },
                      "parameters": {
                        "parent": {
                          "type": "string",
                          "description": "Required. The name of the release resource, which is the parent of the tests Format: `projects/{project_number}/apps/{app}/releases/{release}`",
                          "required": true,
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+$",
                          "location": "path"
                        },
                        "pageSize": {
                          "location": "query",
                          "type": "integer",
                          "description": "Optional. The maximum number of tests to return. The service may return fewer than this value.",
                          "format": "int32"
                        },
                        "pageToken": {
                          "location": "query",
                          "type": "string",
                          "description": "Optional. A page token, received from a previous `ListReleaseTests` call. Provide this to retrieve the subsequent page."
                        },
                        "view": {
                          "location": "query",
                          "enum": [
                            "RELEASE_TEST_VIEW_UNSPECIFIED",
                            "RELEASE_TEST_VIEW_BASIC",
                            "RELEASE_TEST_VIEW_FULL"
                          ],
                          "description": "Optional. The requested view on the returned ReleaseTests. Defaults to the basic view.",
                          "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."
                          ],
                          "type": "string"
                        }
                      },
                      "description": "List results for automated tests run on release."
                    },
                    "get": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.get",
                      "httpMethod": "GET",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1alpha/{+name}",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests/{testsId}",
                      "description": "Get results for automated test run on release.",
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`",
                          "type": "string",
                          "location": "path",
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+/tests/[^/]+$",
                          "required": true
                        }
                      },
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      }
                    },
                    "cancel": {
                      "id": "firebaseappdistribution.projects.apps.releases.tests.cancel",
                      "httpMethod": "GET",
                      "path": "v1alpha/{+name}:cancel",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests/{testsId}:cancel",
                      "description": "Abort automated test run on release.",
                      "parameters": {
                        "name": {
                          "required": true,
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+/tests/[^/]+$",
                          "location": "path",
                          "type": "string",
                          "description": "Required. The name of the release test resource. Format: `projects/{project_number}/apps/{app}/releases/{release}/tests/{test}`"
                        }
                      },
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaCancelReleaseTestResponse"
                      }
                    },
                    "create": {
                      "response": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      },
                      "parameters": {
                        "parent": {
                          "type": "string",
                          "description": "Required. The name of the release resource, which is the parent of the test Format: `projects/{project_number}/apps/{app}/releases/{release}`",
                          "required": true,
                          "pattern": "^projects/[^/]+/apps/[^/]+/releases/[^/]+$",
                          "location": "path"
                        },
                        "releaseTestId": {
                          "location": "query",
                          "type": "string",
                          "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."
                        }
                      },
                      "request": {
                        "$ref": "GoogleFirebaseAppdistroV1alphaReleaseTest"
                      },
                      "description": "Run automated test(s) on release.",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/releases/{releasesId}/tests",
                      "path": "v1alpha/{+parent}/tests",
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "POST",
                      "id": "firebaseappdistribution.projects.apps.releases.tests.create"
                    }
                  }
                }
              }
            }
          },
          "methods": {
            "getTestConfig": {
              "description": "Gets configuration for automated tests.",
              "parameters": {
                "name": {
                  "pattern": "^projects/[^/]+/apps/[^/]+/testConfig$",
                  "required": true,
                  "location": "path",
                  "description": "Required. The name of the `TestConfig` resource to retrieve. Format: `projects/{project_number}/apps/{app}/testConfig`",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "id": "firebaseappdistribution.projects.apps.getTestConfig",
              "httpMethod": "GET",
              "path": "v1alpha/{+name}",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testConfig"
            },
            "updateTestConfig": {
              "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/testConfig",
              "path": "v1alpha/{+name}",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "PATCH",
              "id": "firebaseappdistribution.projects.apps.updateTestConfig",
              "response": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "pattern": "^projects/[^/]+/apps/[^/]+/testConfig$",
                  "type": "string",
                  "description": "Identifier. The name of the test configuration resource. Format: `projects/{project_number}/apps/{app}/testConfig`"
                },
                "updateMask": {
                  "format": "google-fieldmask",
                  "description": "Optional. The list of fields to update.",
                  "location": "query",
                  "type": "string"
                }
              },
              "request": {
                "$ref": "GoogleFirebaseAppdistroV1alphaTestConfig"
              },
              "description": "Updates automated test configuration."
            }
          }
        }
      }
    }
  },
  "kind": "discovery#restDescription",
  "description": "",
  "version": "v1alpha",
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "basePath": "",
  "parameters": {
    "fields": {
      "type": "string",
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "type": "string",
      "location": "query"
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "$.xgafv": {
      "enum": [
        "1",
        "2"
      ],
      "location": "query",
      "type": "string",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ]
    },
    "quotaUser": {
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string",
      "location": "query"
    },
    "prettyPrint": {
      "description": "Returns response with indentations and line breaks.",
      "type": "boolean",
      "location": "query",
      "default": "true"
    },
    "callback": {
      "description": "JSONP",
      "type": "string",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query"
    },
    "access_token": {
      "description": "OAuth access token.",
      "type": "string",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth 2.0 token for the current user."
    }
  },
  "baseUrl": "https://firebaseappdistribution.googleapis.com/",
  "title": "Firebase App Distribution API",
  "ownerName": "Google",
  "id": "firebaseappdistribution:v1alpha",
  "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."
        }
      }
    }
  },
  "mtlsRootUrl": "https://firebaseappdistribution.mtls.googleapis.com/",
  "name": "firebaseappdistribution",
  "fullyEncodeReservedExpansion": true,
  "version_module": true,
  "ownerDomain": "google.com",
  "batchPath": "batch",
  "documentationLink": "https://firebase.google.com/products/app-distribution",
  "canonicalName": "Firebase App Distribution",
  "rootUrl": "https://firebaseappdistribution.googleapis.com/"
}
