{"openapi":"3.1.0","info":{"title":"TesterArmy API","version":"1.0.0"},"paths":{"/v1/projects":{"get":{"operationId":"list-projects","summary":"List projects","description":"List projects available to the authenticated API key's team.","tags":["projects"],"parameters":[{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of projects","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjects_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-project","summary":"Create a project","description":"Create a project for the authenticated API key's team.","tags":["projects"],"parameters":[{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Project created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_createAProject_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestUnauthorizedError"}}}},"403":{"description":"Project limit exceeded for the current plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestForbiddenError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"url":{"type":"string","minLength":1,"maxLength":500,"description":"Required for web projects; optional for mobile projects."},"projectType":{"$ref":"#/components/schemas/V1ProjectsPostRequestBodyContentApplicationJsonSchemaProjectType"},"description":{"type":["string","null"],"maxLength":2000}},"required":["name"]}}}}}},"/v1/projects/{projectId}":{"get":{"operationId":"get-a-project","summary":"Get a project","description":"Get a single project by ID or shortId.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDetail"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectRequestGatewayTimeoutError"}}}}}},"delete":{"operationId":"delete-a-project","summary":"Delete a project","description":"Delete a project. Cascades to groups, tests, runs, and associated artifacts.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_deleteAProject_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectRequestGatewayTimeoutError"}}}}}},"patch":{"operationId":"update-a-project","summary":"Update a project","description":"Update project name, URL, description, or settings.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_updateAProject_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAProjectRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAProjectRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAProjectRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAProjectRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAProjectRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"browserRegion":{"oneOf":[{"$ref":"#/components/schemas/V1ProjectsProjectIdPatchRequestBodyContentApplicationJsonSchemaBrowserRegion"},{"type":"null"}],"description":"Default proxy exit region for web runs. null keeps the provider's default networking. Web projects only."},"prTestingEnabled":{"type":"boolean","description":"Test PR deployments automatically."},"prTestingInstructions":{"type":["string","null"],"maxLength":2000,"description":"Free-form instructions for the PR exploration agent."},"prTestingDebounceMinutes":{"type":"integer","minimum":0,"maximum":60,"description":"Quiet period before a PR deployment is tested. 0 disables debouncing."},"prTestingBlockMerge":{"type":"boolean","description":"Conclude the GitHub check run as failed when tests fail, so a required TesterArmy check blocks the merge. Off by default."},"includeExampleMobileApp":{"type":"boolean","description":"Offer the example app as a run target. Mobile projects only."},"autoDeleteOldestMobileApp":{"type":"boolean","description":"Delete the oldest unused app builds when an upload exceeds the storage quota. Mobile projects only."},"accessibilityAuditEnabled":{"type":"boolean","description":"Scan visited pages with axe-core during web runs and report critical accessibility violations as non-blocking warnings. On by default. Web projects only."},"name":{"type":"string","minLength":1,"maxLength":255},"url":{"type":"string","minLength":1,"maxLength":500},"description":{"type":["string","null"],"maxLength":2000}}}}}}}},"/v1/projects/{projectId}/pull-request-runs":{"post":{"operationId":"trigger-a-dynamic-pull-request-run","summary":"Trigger a dynamic pull request run","description":"Trigger the dynamic PR agent from CI using PR metadata. Callers do not send changed files; TesterArmy enriches with changed files and GitHub reporting only when the project has a supported GitHub connection.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Dynamic PR run queued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_triggerADynamicPullRequestRun_Response_202"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestNotFoundError"}}}},"413":{"description":"Request body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestContentTooLargeError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADynamicPullRequestRunRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DynamicPrRunRequest"}}}}}},"/v1/projects/{projectId}/discovery-runs":{"post":{"operationId":"trigger-a-discovery-run","summary":"Trigger a discovery run","description":"Queue a free-roam discovery run: the QA agent gets only a goal, decides what to test itself, and reports every bug it finds. Supports web, iOS, and Android; mobile platforms explore the uploaded app. FAILED means bugs were found.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Discovery run queued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryRunResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestNotFoundError"}}}},"413":{"description":"Request body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestContentTooLargeError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerADiscoveryRunRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryRunRequest"}}}}}},"/v1/projects/{projectId}/environments":{"get":{"operationId":"list-project-environments","summary":"List project environments","description":"List all run environments for a project, including built-in Production and PR Preview plus static environments.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of project environments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectEnvironments_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectEnvironmentsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-project-environment","summary":"Create a project environment","description":"Create a static project environment with a stable HTTPS URL. Built-in Production and PR Preview environments are managed by TesterArmy.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Project environment created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_createAProjectEnvironment_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestNotFoundError"}}}},"409":{"description":"Environment name conflicts with an existing environment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestConflictError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectEnvironmentRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"url":{"type":"string","minLength":1,"maxLength":500}},"required":["name","url"]}}}}}},"/v1/projects/{projectId}/environments/{environmentId}":{"delete":{"operationId":"delete-a-project-environment","summary":"Delete a project environment","description":"Delete a static project environment. Built-in Production and PR Preview environments are not deletable.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"environmentId","in":"path","description":"Static environment ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project environment deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_deleteAProjectEnvironment_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestUnauthorizedError"}}}},"404":{"description":"Project or environment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectEnvironmentRequestGatewayTimeoutError"}}}}}}},"/v1/projects/{projectId}/credentials":{"get":{"operationId":"list-project-credentials","summary":"List project credentials","description":"List credentials for a project. Passwords are not returned.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectCredentials_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectCredentialsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-project-credential","summary":"Create a project credential","description":"Create a login or inbox credential for a project. Passwords are not returned.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Credential created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_createAProjectCredential_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectCredentialRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectCredentialRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectCredentialRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectCredentialRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectCredentialRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_createAProjectCredential_Request"}}}}}},"/v1/projects/{projectId}/memories":{"get":{"operationId":"list-project-memories","summary":"List project memories","description":"List manual project memories used as context for dashboard tests and agents.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of project memories","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectMemories_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMemoriesRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-project-memory","summary":"Create a project memory","description":"Create a manual project memory that agents can use as project context.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Project memory created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_createAProjectMemory_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestNotFoundError"}}}},"409":{"description":"Memory limit reached and no lower-priority memories can be pruned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestConflictError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAProjectMemoryRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"$ref":"#/components/schemas/V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaCategory"},"title":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","minLength":1},"importance":{"$ref":"#/components/schemas/V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaImportance"}},"required":["category","title","content","importance"]}}}}}},"/v1/projects/{projectId}/issues":{"get":{"operationId":"list-project-issues","summary":"List project issues","description":"List a project's tracked issues: bugs and warnings surfaced by QA runs, deduplicated across runs with occurrence counts and triage status. Open issues sort first, then by most recently seen.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter to one triage status.","required":false,"schema":{"$ref":"#/components/schemas/V1ProjectsProjectIdIssuesGetParametersStatus"}},{"name":"environment","in":"query","description":"Filter to issues seen on one deployment environment.","required":false,"schema":{"$ref":"#/components/schemas/V1ProjectsProjectIdIssuesGetParametersEnvironment"}},{"name":"limit","in":"query","description":"Maximum issues to return (1-100, default 50).","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of project issues","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectIssues_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectIssuesRequestGatewayTimeoutError"}}}}}}},"/v1/projects/{projectId}/issues/{issueId}":{"get":{"operationId":"get-a-project-issue","summary":"Get a project issue","description":"Get one tracked issue with its full details and recent run occurrences: which runs surfaced it and when.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"issueId","in":"path","description":"Issue ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Issue detail with recent occurrences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_getAProjectIssue_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestUnauthorizedError"}}}},"404":{"description":"Project or issue not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAProjectIssueRequestGatewayTimeoutError"}}}}}}},"/v1/projects/{projectId}/memories/{memoryId}":{"delete":{"operationId":"delete-a-project-memory","summary":"Delete a project memory","description":"Delete a manual project memory used as agent context.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"memoryId","in":"path","description":"Memory ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project memory deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_deleteAProjectMemory_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestUnauthorizedError"}}}},"404":{"description":"Project or memory not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMemoryRequestGatewayTimeoutError"}}}}}}},"/v1/projects/{projectId}/files":{"get":{"operationId":"list-project-files","summary":"List project files","description":"List uploaded files for a project.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of files","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectFiles_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectFilesRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"initiate-a-project-file-upload","summary":"Initiate a project file upload","description":"Validate a project file and create a presigned direct-upload URL. Mobile projects only accept photos and videos (.png, .jpg, .jpeg, .mp4, .mov); runs preload them into the device photo library.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presigned project-file upload details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_initiateAProjectFileUpload_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectFileUploadRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1},"fileSize":{"type":"integer","maximum":52428800,"exclusiveMinimum":0},"mediaType":{"type":"string"}},"required":["filename","fileSize"]}}}}},"put":{"operationId":"confirm-a-project-file-upload","summary":"Confirm a project file upload","description":"Verify uploaded bytes and register the file on the project.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID or shortId","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Project file uploaded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_confirmAProjectFileUpload_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectFileUploadRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"storageKey":{"type":"string","minLength":1},"fileSize":{"type":"integer","maximum":52428800,"exclusiveMinimum":0},"description":{"type":["string","null"]}},"required":["storageKey","fileSize"]}}}}}},"/v1/projects/{projectId}/mobile":{"get":{"operationId":"list-project-mobile-apps","summary":"List project mobile apps","description":"List uploaded mobile apps for a mobile project.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of project mobile apps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_listProjectMobileApps_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProjectMobileAppsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"upload-a-project-mobile-app","summary":"Upload a project mobile app","description":"Upload a mobile app binary to a mobile project. Optionally set removeAfter to delete temporary uploads after a delay.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Mobile app uploaded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_uploadAProjectMobileApp_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestUnauthorizedError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAProjectMobileAppRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"removeAfter":{"type":"string","description":"Optional expiration in seconds for temporary uploads, from 60 to 604800. Temporary uploads have a 20 GB storage cap per project."}},"required":["file"]}}}}}},"/v1/projects/{projectId}/mobile/{appId}":{"delete":{"operationId":"delete-a-project-mobile-app","summary":"Delete a project mobile app","description":"Delete a previously uploaded mobile app from a mobile project.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"appId","in":"path","description":"Mobile app ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Mobile app deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_deleteAProjectMobileApp_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestUnauthorizedError"}}}},"404":{"description":"Project or mobile app not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAProjectMobileAppRequestGatewayTimeoutError"}}}}}}},"/v1/projects/{projectId}/mobile/upload":{"post":{"operationId":"initiate-a-project-mobile-app-upload","summary":"Initiate a project mobile app upload","description":"Create a presigned temporary upload for a mobile app binary.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presigned upload details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_initiateAProjectMobileAppUpload_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectMobileAppUploadRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectMobileAppUploadRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectMobileAppUploadRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectMobileAppUploadRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAProjectMobileAppUploadRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1},"fileSize":{"type":"integer","exclusiveMinimum":0},"removeAfter":{"type":"integer","minimum":60,"maximum":604800}},"required":["filename","fileSize"]}}}}}},"/v1/projects/{projectId}/mobile/upload/confirm":{"post":{"operationId":"confirm-a-project-mobile-app-upload","summary":"Confirm a project mobile app upload","description":"Validate a completed temporary upload and promote it into project storage.","tags":["projects"],"parameters":[{"name":"projectId","in":"path","description":"Project ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Mobile app uploaded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_confirmAProjectMobileAppUpload_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectMobileAppUploadRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectMobileAppUploadRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectMobileAppUploadRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectMobileAppUploadRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmAProjectMobileAppUploadRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"storageKey":{"type":"string","minLength":1},"filename":{"type":"string","minLength":1},"fileSize":{"type":"integer","exclusiveMinimum":0},"removeAfter":{"type":"integer","minimum":60,"maximum":604800}},"required":["storageKey","filename","fileSize"]}}}}}},"/v1/tests":{"get":{"operationId":"list-tests","summary":"List tests","description":"List tests for a project, optionally scoped to a test group. Use `cursor` for pagination; the response includes `nextCursor` when more pages exist.","tags":["tests"],"parameters":[{"name":"projectId","in":"query","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"query","description":"Optional test group ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Max results per page (default 50, max 100)","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$"}},{"name":"cursor","in":"query","description":"Cursor for pagination","required":false,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of tests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tests_listTests_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-test","summary":"Create a test","description":"Create a structured test definition for a project.","tags":["tests"],"parameters":[{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Test created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tests_createATest_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TestStep"}},"projectId":{"type":"string"},"groupId":{"type":["string","null"],"format":"uuid"},"platform":{"$ref":"#/components/schemas/V1TestsPostRequestBodyContentApplicationJsonSchemaPlatform"},"settings":{"$ref":"#/components/schemas/TestSettings"},"enabled":{"type":"boolean"}},"required":["title","steps","projectId"]}}}}}},"/v1/tests/{testId}":{"get":{"operationId":"get-a-test","summary":"Get a test","description":"Get a single structured test definition, including the groups it belongs to.","tags":["tests"],"parameters":[{"name":"testId","in":"path","description":"Test ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestDetail"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestRequestGatewayTimeoutError"}}}}}},"delete":{"operationId":"delete-a-test","summary":"Delete a test","description":"Delete a structured test definition.","tags":["tests"],"parameters":[{"name":"testId","in":"path","description":"Test ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tests_deleteATest_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestRequestGatewayTimeoutError"}}}}}},"patch":{"operationId":"update-a-test","summary":"Update a test","description":"Update a structured test definition. `settings` is merged field by field; every other field replaces its stored value.","tags":["tests"],"parameters":[{"name":"testId","in":"path","description":"Test ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tests_updateATest_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TestStep"}},"settings":{"$ref":"#/components/schemas/V1TestsTestIdPatchRequestBodyContentApplicationJsonSchemaSettings"},"enabled":{"type":"boolean"}}}}}}}},"/v1/tests/{testId}/runs":{"post":{"operationId":"trigger-a-test-run","summary":"Trigger a test run","description":"Trigger a saved dashboard test remotely using API-key authentication. Returns the queued run ID.","tags":["tests"],"parameters":[{"name":"testId","in":"path","description":"Test ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Test run queued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tests_triggerATestRun_Response_202"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestRunRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestRunRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestRunRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestRunRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestRunRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"$ref":"#/components/schemas/V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaMode"},"platform":{"$ref":"#/components/schemas/V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform","description":"Run platform for the test. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId."},"deviceModel":{"$ref":"#/components/schemas/V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel","description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it."},"appId":{"type":"string","format":"uuid"},"projectEnvironmentId":{"type":"string","format":"uuid"}}}}}}}},"/v1/groups":{"get":{"operationId":"list-test-groups","summary":"List test groups","description":"List test groups for a project. The default All Tests group is always returned and new tests are added to it at creation time.","tags":["groups"],"parameters":[{"name":"projectId","in":"query","description":"Project ID","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of test groups","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_listTestGroups_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestGroupsRequestGatewayTimeoutError"}}}}}},"post":{"operationId":"create-a-test-group","summary":"Create a test group","description":"Create a test group in a project. Capped at 20 groups per project.","tags":["groups"],"parameters":[{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Group created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_createATestGroup_Response_201"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateATestGroupRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","description":"Project ID"},"name":{"type":"string","minLength":1,"maxLength":255},"runMode":{"$ref":"#/components/schemas/V1GroupsPostRequestBodyContentApplicationJsonSchemaRunMode"},"prepTestId":{"type":["string","null"],"format":"uuid","description":"Web test that runs first and saves its browser session. Any web test in the project qualifies; it does not have to be a member of this group."}},"required":["projectId","name"]}}}}}},"/v1/groups/{groupId}":{"get":{"operationId":"get-a-test-group","summary":"Get a test group","description":"Get a single test group by ID.","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Group details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupDetail"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetATestGroupRequestGatewayTimeoutError"}}}}}},"delete":{"operationId":"delete-a-test-group","summary":"Delete a test group","description":"Delete a non-default test group. The default group cannot be deleted.","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Group deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_deleteATestGroup_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestGroupRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteATestGroupRequestGatewayTimeoutError"}}}}}},"patch":{"operationId":"update-a-test-group","summary":"Update a test group","description":"Update name, runMode, or prepTestId on a test group.","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Group updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_updateATestGroup_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestGroupRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateATestGroupRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"runMode":{"$ref":"#/components/schemas/V1GroupsGroupIdPatchRequestBodyContentApplicationJsonSchemaRunMode"},"prepTestId":{"type":["string","null"],"format":"uuid","description":"Web test that runs first and saves its browser session. Any web test in the project qualifies; it does not have to be a member of this group. Pass null to clear."}}}}}}}},"/v1/groups/{groupId}/tests":{"post":{"operationId":"add-a-test-to-a-group","summary":"Add a test to a group","description":"Add an existing test to a test group. Returns 201 when a new membership row was created, or 200 with `added: false` when the test was already a member (idempotent).","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test was already a member; no change","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_addATestToAGroup_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestUnauthorizedError"}}}},"404":{"description":"Not Found - Resource does not exist or is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddATestToAGroupRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"testId":{"type":"string","format":"uuid"}},"required":["testId"]}}}}}},"/v1/groups/{groupId}/tests/{testId}":{"delete":{"operationId":"remove-a-test-from-a-group","summary":"Remove a test from a group","description":"Remove a test from a test group. The group's prepTestId is left alone, because a preparation test does not have to be a member of the group it prepares. `removed` is `true` when a membership row was deleted, `false` when the test was not a member (idempotent).","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"testId","in":"path","description":"Test ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Idempotent removal result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_removeATestFromAGroup_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveATestFromAGroupRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveATestFromAGroupRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveATestFromAGroupRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveATestFromAGroupRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveATestFromAGroupRequestGatewayTimeoutError"}}}}}}},"/v1/groups/{groupId}/runs":{"post":{"operationId":"trigger-a-test-group-run","summary":"Trigger a test group run","description":"Trigger all runnable tests in a group using API-key authentication. Returns the batch ID plus `queuedRunIds` (runs accepted onto the worker) and `cancelledRunIds` (runs the server immediately cancelled, e.g. duplicates or quota cancellations). `status` is `queued` when at least one run is queued and `cancelled` when every run was rejected.","tags":["groups"],"parameters":[{"name":"groupId","in":"path","description":"Test group ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Group run queued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Groups_triggerATestGroupRun_Response_202"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestUnauthorizedError"}}}},"404":{"description":"Group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerATestGroupRunRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform","description":"Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId or bundleId."},"deviceModel":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel","description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it."},"projectEnvironmentId":{"type":"string","format":"uuid"},"targetUrl":{"type":"string","format":"uri"},"environment":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaEnvironment"},"mobile":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaMobile"},"commitSha":{"type":"string","minLength":1},"prNumber":{"type":"integer","exclusiveMinimum":0}}}}}}}},"/v1/webhook/{webhookId}/{secret}":{"post":{"operationId":"trigger-a-project-webhook","summary":"Trigger a project webhook","description":"Receive a deployment webhook and trigger PR testing when configured.","tags":["webhooks"],"parameters":[{"name":"webhookId","in":"path","description":"Webhook ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"secret","in":"path","description":"Webhook secret","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhooks_triggerAProjectWebhook_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAProjectWebhookRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAProjectWebhookRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAProjectWebhookRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAProjectWebhookRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAProjectWebhookRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"description":"Any type"}}}}}}},"/v1/groups/webhook/{webhookId}/{secret}":{"post":{"operationId":"trigger-a-group-webhook","summary":"Trigger a group webhook","description":"Trigger all runnable tests in a group from a signed webhook URL.","tags":["webhooks"],"parameters":[{"name":"webhookId","in":"path","description":"Webhook ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"secret","in":"path","description":"Webhook secret","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Webhook accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhooks_triggerAGroupWebhook_Response_202"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAGroupWebhookRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAGroupWebhookRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAGroupWebhookRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAGroupWebhookRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAGroupWebhookRequestGatewayTimeoutError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"$ref":"#/components/schemas/V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaPlatform","description":"Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId or bundleId."},"deviceModel":{"$ref":"#/components/schemas/V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaDeviceModel","description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it."},"projectEnvironmentId":{"type":"string","format":"uuid"},"targetUrl":{"type":"string","format":"uri"},"environment":{"$ref":"#/components/schemas/V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaEnvironment"},"mobile":{"$ref":"#/components/schemas/V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaMobile"},"commitSha":{"type":"string"}}}}}}}},"/v1/runs":{"get":{"operationId":"list-test-runs","summary":"List test runs","description":"List test runs for the authenticated team with optional project/status filtering and cursor pagination.","tags":["testRuns"],"parameters":[{"name":"limit","in":"query","description":"Max results per page (default 20, max 100)","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$"}},{"name":"status","in":"query","description":"Filter by status","required":false,"schema":{"$ref":"#/components/schemas/V1RunsGetParametersStatus"}},{"name":"projectId","in":"query","description":"Filter by project ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"testId","in":"query","description":"Filter by test ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"batchId","in":"query","description":"Filter by group-run batch ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","description":"Cursor for pagination","required":false,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunListResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestRunsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestRunsRequestUnauthorizedError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestRunsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestRunsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTestRunsRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}":{"get":{"operationId":"get-test-run-status","summary":"Get test run status","description":"Retrieve the current status and result of a test run. Poll this endpoint to check for completion.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestUnauthorizedError"}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTestRunStatusRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}/messages":{"get":{"operationId":"get-run-agent-transcript","summary":"Get run agent transcript","description":"Retrieve the full agent transcript for a run: assistant reasoning, tool calls, and tool outputs in execution order. Use this to understand exactly what the agent did and why a step failed. Credential-bearing tool parts are redacted.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent transcript","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunMessagesResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestUnauthorizedError"}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunAgentTranscriptRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}/telemetry":{"get":{"operationId":"get-run-console-and-network-logs","summary":"Get run console and network logs","description":"Retrieve browser console logs and network requests captured during a web run. Use this to debug failures: console errors, failed requests, and 4xx/5xx responses with redacted header and JSON body previews. Telemetry is captured for web runs only and becomes available after the run finishes; mobile runs return 404.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Console and network telemetry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunTelemetryResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestUnauthorizedError"}}}},"404":{"description":"Run not found or no telemetry captured for this run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunConsoleAndNetworkLogsRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}/recording":{"get":{"operationId":"get-run-screen-recording","summary":"Get run screen recording","description":"Stream the screen recording (MP4) captured during a run. Supports HTTP Range requests for seeking and partial downloads. Recordings become available after the run finishes; cancelled runs and runs without a recording return 404.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Screen recording video stream","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestUnauthorizedError"}}}},"404":{"description":"Run not found or no recording available for this run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestNotFoundError"}}}},"416":{"description":"Requested range not satisfiable","content":{"application/json":{"schema":{"description":"Any type"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRunScreenRecordingRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}/recording/download-url":{"get":{"operationId":"get-a-run-recording-download-url","summary":"Get a run recording download URL","description":"Get a short-lived signed URL that downloads the run's screen recording (MP4), plus its file name and size. Use this instead of the streaming endpoint when the client should hand the link off rather than hold the bytes. Recordings become available after the run finishes; cancelled runs and runs without a recording return 404.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Signed recording download URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Test Runs_getARunRecordingDownloadUrl_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestUnauthorizedError"}}}},"404":{"description":"Run not found or no recording available for this run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetARunRecordingDownloadUrlRequestGatewayTimeoutError"}}}}}}},"/v1/runs/{id}/cancel":{"post":{"operationId":"cancel-a-queued-or-running-run","summary":"Cancel a queued or running run","description":"Cancel a queued or running test run.","tags":["testRuns"],"parameters":[{"name":"id","in":"path","description":"Test run ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Run cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Test Runs_cancelAQueuedOrRunningRun_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestUnauthorizedError"}}}},"409":{"description":"Conflict - Run is already terminal or cannot be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestConflictError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningRunRequestGatewayTimeoutError"}}}}}}},"/v1/batches/{batchId}":{"get":{"operationId":"get-batch-status","summary":"Get batch status","description":"Retrieve the aggregate status of a group-run batch with per-run verdicts. Poll this endpoint to track batch completion, then fetch individual runs (or `GET /v1/runs?batchId=...`) for details.","tags":["testRuns"],"parameters":[{"name":"batchId","in":"path","description":"Batch ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Batch status summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchStatusResponse"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestUnauthorizedError"}}}},"404":{"description":"Batch not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestNotFoundError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBatchStatusRequestGatewayTimeoutError"}}}}}}},"/v1/batches/{batchId}/cancel":{"post":{"operationId":"cancel-a-queued-or-running-batch","summary":"Cancel a queued or running batch","description":"Cancel all queued or running runs in a prior group-run batch. Finished runs are left unchanged, making the endpoint idempotent when the batch has already completed.","tags":["testRuns"],"parameters":[{"name":"batchId","in":"path","description":"Batch ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Batch cancellation summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Test Runs_cancelAQueuedOrRunningBatch_Response_200"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestUnauthorizedError"}}}},"404":{"description":"Batch not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestNotFoundError"}}}},"409":{"description":"Conflict - Some runs could not be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestConflictError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAQueuedOrRunningBatchRequestGatewayTimeoutError"}}}}}}},"/v1/batches/{batchId}/rerun":{"post":{"operationId":"re-run-a-batch","summary":"Re-run a batch","description":"Create a new group-run batch from the runnable tests in a prior batch. Deleted, disabled, or malformed tests are skipped and returned as `skippedTestIds`.","tags":["testRuns"],"parameters":[{"name":"batchId","in":"path","description":"Source batch ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","description":"API key authentication using Bearer token format","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Batch re-run queued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Test Runs_reRunABatch_Response_202"}}}},"400":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestBadRequestError"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestUnauthorizedError"}}}},"404":{"description":"Batch not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestNotFoundError"}}}},"409":{"description":"Conflict - Batch cannot be re-run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestConflictError"}}}},"429":{"description":"Too Many Requests - Usage limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestTooManyRequestsError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestInternalServerError"}}}},"504":{"description":"Gateway Timeout - Test execution exceeded time limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReRunABatchRequestGatewayTimeoutError"}}}}}}}},"servers":[{"url":"https://tester.army/api","description":"Production API server"}],"components":{"schemas":{"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsProjectType":{"type":"string","enum":["web","mobile"],"title":"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsProjectType"},"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItemsKind":{"type":"string","enum":["production","pr_preview","static"],"title":"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItemsKind"},"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"kind":{"$ref":"#/components/schemas/V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItemsKind"},"url":{"type":["string","null"]}},"required":["id","name","slug","kind","url"],"title":"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItems"},"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"shortId":{"type":"string"},"name":{"type":"string"},"url":{"type":["string","null"],"format":"uri"},"projectType":{"$ref":"#/components/schemas/V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsProjectType"},"environments":{"type":"array","items":{"$ref":"#/components/schemas/V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItemsEnvironmentsItems"}}},"required":["id","shortId","name","url","projectType"],"title":"V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItems"},"Projects_listProjects_Response_200":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/V1ProjectsGetResponsesContentApplicationJsonSchemaProjectsItems"}}},"required":["projects"],"title":"Projects_listProjects_Response_200"},"ListProjectsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectsRequestBadRequestError"},"ListProjectsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectsRequestUnauthorizedError"},"ListProjectsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectsRequestTooManyRequestsError"},"ListProjectsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectsRequestInternalServerError"},"ListProjectsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectsRequestGatewayTimeoutError"},"V1ProjectsPostRequestBodyContentApplicationJsonSchemaProjectType":{"type":"string","enum":["web","mobile"],"title":"V1ProjectsPostRequestBodyContentApplicationJsonSchemaProjectType"},"ProjectDetailBrowserRegion":{"type":"string","enum":["eu","us"],"description":"Default proxy exit region for web runs. null keeps the provider's default networking. Web projects only.","title":"ProjectDetailBrowserRegion"},"ProjectDetailProjectType":{"type":"string","enum":["web","mobile"],"title":"ProjectDetailProjectType"},"ProjectDetailEnvironmentsItemsKind":{"type":"string","enum":["production","pr_preview","static"],"title":"ProjectDetailEnvironmentsItemsKind"},"ProjectDetailEnvironmentsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"kind":{"$ref":"#/components/schemas/ProjectDetailEnvironmentsItemsKind"},"url":{"type":["string","null"]}},"required":["id","name","slug","kind","url"],"title":"ProjectDetailEnvironmentsItems"},"ProjectDetail":{"type":"object","properties":{"browserRegion":{"oneOf":[{"$ref":"#/components/schemas/ProjectDetailBrowserRegion"},{"type":"null"}],"description":"Default proxy exit region for web runs. null keeps the provider's default networking. Web projects only."},"prTestingEnabled":{"type":"boolean","description":"Test PR deployments automatically."},"prTestingInstructions":{"type":["string","null"],"maxLength":2000,"description":"Free-form instructions for the PR exploration agent."},"prTestingDebounceMinutes":{"type":"integer","minimum":0,"maximum":60,"description":"Quiet period before a PR deployment is tested. 0 disables debouncing."},"prTestingBlockMerge":{"type":"boolean","description":"Conclude the GitHub check run as failed when tests fail, so a required TesterArmy check blocks the merge. Off by default."},"includeExampleMobileApp":{"type":"boolean","description":"Offer the example app as a run target. Mobile projects only."},"autoDeleteOldestMobileApp":{"type":"boolean","description":"Delete the oldest unused app builds when an upload exceeds the storage quota. Mobile projects only."},"accessibilityAuditEnabled":{"type":"boolean","description":"Scan visited pages with axe-core during web runs and report critical accessibility violations as non-blocking warnings. On by default. Web projects only."},"id":{"type":"string","format":"uuid"},"shortId":{"type":["string","null"]},"name":{"type":"string"},"url":{"type":["string","null"]},"projectType":{"$ref":"#/components/schemas/ProjectDetailProjectType"},"description":{"type":["string","null"]},"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectDetailEnvironmentsItems"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","shortId","name","url","projectType","description","environments"],"title":"ProjectDetail"},"Projects_createAProject_Response_201":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectDetail"}},"required":["project"],"title":"Projects_createAProject_Response_201"},"CreateAProjectRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectRequestBadRequestError"},"CreateAProjectRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectRequestUnauthorizedError"},"CreateAProjectRequestForbiddenError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"},"currentCount":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":0}},"required":["error","message","currentCount","limit"],"title":"CreateAProjectRequestForbiddenError"},"CreateAProjectRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectRequestTooManyRequestsError"},"CreateAProjectRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectRequestInternalServerError"},"CreateAProjectRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectRequestGatewayTimeoutError"},"GetAProjectRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestBadRequestError"},"GetAProjectRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestUnauthorizedError"},"GetAProjectRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestNotFoundError"},"GetAProjectRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestTooManyRequestsError"},"GetAProjectRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestInternalServerError"},"GetAProjectRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectRequestGatewayTimeoutError"},"Projects_deleteAProject_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"required":["deleted","id"],"title":"Projects_deleteAProject_Response_200"},"DeleteAProjectRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectRequestBadRequestError"},"DeleteAProjectRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectRequestUnauthorizedError"},"DeleteAProjectRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectRequestTooManyRequestsError"},"DeleteAProjectRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectRequestInternalServerError"},"DeleteAProjectRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectRequestGatewayTimeoutError"},"V1ProjectsProjectIdPatchRequestBodyContentApplicationJsonSchemaBrowserRegion":{"type":"string","enum":["eu","us"],"description":"Default proxy exit region for web runs. null keeps the provider's default networking. Web projects only.","title":"V1ProjectsProjectIdPatchRequestBodyContentApplicationJsonSchemaBrowserRegion"},"Projects_updateAProject_Response_200":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectDetail"}},"required":["project"],"title":"Projects_updateAProject_Response_200"},"UpdateAProjectRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateAProjectRequestBadRequestError"},"UpdateAProjectRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateAProjectRequestUnauthorizedError"},"UpdateAProjectRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateAProjectRequestTooManyRequestsError"},"UpdateAProjectRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateAProjectRequestInternalServerError"},"UpdateAProjectRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateAProjectRequestGatewayTimeoutError"},"DynamicPrRunRequestOneOf0Platform":{"type":"string","enum":["web"],"title":"DynamicPrRunRequestOneOf0Platform"},"DynamicPrRunRequestOneOf0PullRequestProvider":{"type":"string","enum":["github"],"default":"github","title":"DynamicPrRunRequestOneOf0PullRequestProvider"},"DynamicPrRunRequestOneOf0PullRequest":{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf0PullRequestProvider"},"number":{"type":"integer","exclusiveMinimum":0},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":65536},"baseBranch":{"type":"string","minLength":1,"maxLength":255},"headBranch":{"type":"string","minLength":1,"maxLength":255},"commitSha":{"type":"string","minLength":1,"maxLength":100}},"required":["number","title","commitSha"],"title":"DynamicPrRunRequestOneOf0PullRequest"},"DynamicPrRunRequest0":{"type":"object","properties":{"targetUrl":{"type":"string","format":"uri"},"platform":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf0Platform"},"pullRequest":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf0PullRequest"}},"required":["targetUrl","pullRequest"],"title":"DynamicPrRunRequest0"},"DynamicPrRunRequestOneOf1Platform":{"type":"string","enum":["ios","android"],"title":"DynamicPrRunRequestOneOf1Platform"},"DynamicPrRunRequestOneOf1PullRequestProvider":{"type":"string","enum":["github"],"default":"github","title":"DynamicPrRunRequestOneOf1PullRequestProvider"},"DynamicPrRunRequestOneOf1PullRequest":{"type":"object","properties":{"provider":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf1PullRequestProvider"},"number":{"type":"integer","exclusiveMinimum":0},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":65536},"baseBranch":{"type":"string","minLength":1,"maxLength":255},"headBranch":{"type":"string","minLength":1,"maxLength":255},"commitSha":{"type":"string","minLength":1,"maxLength":100}},"required":["number","title","commitSha"],"title":"DynamicPrRunRequestOneOf1PullRequest"},"DynamicPrRunRequestOneOf1Mobile":{"type":"object","properties":{"appId":{"type":"string","format":"uuid"},"bundleId":{"type":"string","minLength":1},"artifactUrl":{"type":"string","format":"uri"},"artifactFilename":{"type":"string","minLength":1},"buildId":{"type":"string","minLength":1}},"title":"DynamicPrRunRequestOneOf1Mobile"},"DynamicPrRunRequestOneOf1SimulatorRegion":{"type":"string","enum":["eu-north1","us-west1"],"title":"DynamicPrRunRequestOneOf1SimulatorRegion"},"DynamicPrRunRequest1":{"type":"object","properties":{"platform":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf1Platform"},"pullRequest":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf1PullRequest"},"mobile":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf1Mobile"},"simulatorRegion":{"$ref":"#/components/schemas/DynamicPrRunRequestOneOf1SimulatorRegion"},"deeplink":{"type":"string","format":"uri","maxLength":2048,"description":"Deep link the test harness opens on the device after launching the app and before any test step runs (e.g. an Expo update-channel or backend-selection link). Applied deterministically; the QA agent is told the setup is already done."}},"required":["platform","pullRequest"],"title":"DynamicPrRunRequest1"},"DynamicPrRunRequest":{"oneOf":[{"$ref":"#/components/schemas/DynamicPrRunRequest0"},{"$ref":"#/components/schemas/DynamicPrRunRequest1"}],"title":"DynamicPrRunRequest"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaStatus":{"type":"string","enum":["queued","skipped"],"description":"\"skipped\" means the PR skip judge decided the changes cannot affect this platform; a cancelled audit run records the decision and no test executes.","title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaStatus"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaPlatform":{"type":"string","enum":["web","ios","android"],"title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaPlatform"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus":{"type":"string","enum":["not_configured","check_create_failed","pr_not_found"],"title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithub":{"type":"object","properties":{"configured":{"type":"boolean"},"checkRunCreated":{"type":"boolean"},"commentTargetResolved":{"type":"boolean"},"status":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus"}},"required":["configured","checkRunCreated","commentTargetResolved"],"title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithub"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataMobile":{"type":"object","properties":{"source":{"type":"string"},"buildId":{"type":"string"}},"required":["source"],"title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataMobile"},"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadata":{"type":"object","properties":{"github":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataGithub"},"mobile":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadataMobile"}},"title":"V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadata"},"Projects_triggerADynamicPullRequestRun_Response_202":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaStatus","description":"\"skipped\" means the PR skip judge decided the changes cannot affect this platform; a cancelled audit run records the decision and no test executes."},"runId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"platform":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaPlatform"},"skipReason":{"type":"string","description":"Present only when status is \"skipped\"."},"metadata":{"$ref":"#/components/schemas/V1ProjectsProjectIdPullRequestRunsPostResponsesContentApplicationJsonSchemaMetadata"}},"required":["status","runId","projectId","platform"],"title":"Projects_triggerADynamicPullRequestRun_Response_202"},"TriggerADynamicPullRequestRunRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestBadRequestError"},"TriggerADynamicPullRequestRunRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestUnauthorizedError"},"TriggerADynamicPullRequestRunRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestNotFoundError"},"TriggerADynamicPullRequestRunRequestContentTooLargeError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestContentTooLargeError"},"TriggerADynamicPullRequestRunRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestTooManyRequestsError"},"TriggerADynamicPullRequestRunRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestInternalServerError"},"TriggerADynamicPullRequestRunRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADynamicPullRequestRunRequestGatewayTimeoutError"},"DiscoveryRunRequestPlatform":{"type":"string","enum":["web","ios","android"],"description":"Target platform; defaults to web. Mobile platforms explore the uploaded app.","title":"DiscoveryRunRequestPlatform"},"DiscoveryRunRequestDeviceModel":{"type":"string","enum":["iphone","ipad"],"description":"Mobile device variant within the platform (e.g. ipad on iOS). Omit for the default phone-sized device.","title":"DiscoveryRunRequestDeviceModel"},"DiscoveryRunRequest":{"type":"object","properties":{"goal":{"type":"string","minLength":8,"maxLength":2000,"description":"The exploration goal for the free-roam QA agent, e.g. \"Explore the checkout flow and find bugs\". The agent decides what to test; there is no predefined step list."},"targetUrl":{"type":"string","format":"uri","description":"Optional URL to explore instead of the project's production URL. Web only."},"platform":{"$ref":"#/components/schemas/DiscoveryRunRequestPlatform","description":"Target platform; defaults to web. Mobile platforms explore the uploaded app."},"appId":{"type":"string","description":"Uploaded mobile app ID to explore. Defaults to the project's latest app for the platform."},"deviceModel":{"$ref":"#/components/schemas/DiscoveryRunRequestDeviceModel","description":"Mobile device variant within the platform (e.g. ipad on iOS). Omit for the default phone-sized device."}},"required":["goal"],"title":"DiscoveryRunRequest"},"DiscoveryRunResponseStatus":{"type":"string","enum":["queued"],"title":"DiscoveryRunResponseStatus"},"DiscoveryRunResponsePlatform":{"type":"string","enum":["web","ios","android"],"title":"DiscoveryRunResponsePlatform"},"DiscoveryRunResponse":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/DiscoveryRunResponseStatus"},"runId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"platform":{"$ref":"#/components/schemas/DiscoveryRunResponsePlatform"}},"required":["status","runId","projectId","platform"],"title":"DiscoveryRunResponse"},"TriggerADiscoveryRunRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestBadRequestError"},"TriggerADiscoveryRunRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestUnauthorizedError"},"TriggerADiscoveryRunRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestNotFoundError"},"TriggerADiscoveryRunRequestContentTooLargeError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestContentTooLargeError"},"TriggerADiscoveryRunRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestTooManyRequestsError"},"TriggerADiscoveryRunRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestInternalServerError"},"TriggerADiscoveryRunRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerADiscoveryRunRequestGatewayTimeoutError"},"ProjectEnvironmentKind":{"type":"string","enum":["production","pr_preview","static"],"title":"ProjectEnvironmentKind"},"ProjectEnvironment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"kind":{"$ref":"#/components/schemas/ProjectEnvironmentKind"},"url":{"type":["string","null"]}},"required":["id","name","slug","kind","url"],"title":"ProjectEnvironment"},"Projects_listProjectEnvironments_Response_200":{"type":"object","properties":{"environments":{"type":"array","items":{"$ref":"#/components/schemas/ProjectEnvironment"}}},"required":["environments"],"title":"Projects_listProjectEnvironments_Response_200"},"ListProjectEnvironmentsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestBadRequestError"},"ListProjectEnvironmentsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestUnauthorizedError"},"ListProjectEnvironmentsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestNotFoundError"},"ListProjectEnvironmentsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestTooManyRequestsError"},"ListProjectEnvironmentsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestInternalServerError"},"ListProjectEnvironmentsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectEnvironmentsRequestGatewayTimeoutError"},"Projects_createAProjectEnvironment_Response_201":{"type":"object","properties":{"environment":{"$ref":"#/components/schemas/ProjectEnvironment"}},"required":["environment"],"title":"Projects_createAProjectEnvironment_Response_201"},"CreateAProjectEnvironmentRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestBadRequestError"},"CreateAProjectEnvironmentRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestUnauthorizedError"},"CreateAProjectEnvironmentRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestNotFoundError"},"CreateAProjectEnvironmentRequestConflictError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestConflictError"},"CreateAProjectEnvironmentRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestTooManyRequestsError"},"CreateAProjectEnvironmentRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestInternalServerError"},"CreateAProjectEnvironmentRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectEnvironmentRequestGatewayTimeoutError"},"Projects_deleteAProjectEnvironment_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"required":["deleted","id"],"title":"Projects_deleteAProjectEnvironment_Response_200"},"DeleteAProjectEnvironmentRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestBadRequestError"},"DeleteAProjectEnvironmentRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestUnauthorizedError"},"DeleteAProjectEnvironmentRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestNotFoundError"},"DeleteAProjectEnvironmentRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestTooManyRequestsError"},"DeleteAProjectEnvironmentRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestInternalServerError"},"DeleteAProjectEnvironmentRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectEnvironmentRequestGatewayTimeoutError"},"CredentialSummaryKind":{"type":"string","enum":["login","inbox"],"title":"CredentialSummaryKind"},"CredentialSummaryAuthMethod":{"type":"string","enum":["password","google","github","custom"],"title":"CredentialSummaryAuthMethod"},"CredentialSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"$ref":"#/components/schemas/CredentialSummaryKind"},"authMethod":{"$ref":"#/components/schemas/CredentialSummaryAuthMethod"},"label":{"type":"string"},"description":{"type":["string","null"]},"username":{"type":"string"},"hasAuthInstructions":{"type":"boolean"},"hasTotpSecret":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","kind","authMethod","label","description","username","hasAuthInstructions","hasTotpSecret","createdAt"],"title":"CredentialSummary"},"Projects_listProjectCredentials_Response_200":{"type":"object","properties":{"credentials":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSummary"}}},"required":["credentials"],"title":"Projects_listProjectCredentials_Response_200"},"ListProjectCredentialsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestBadRequestError"},"ListProjectCredentialsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestUnauthorizedError"},"ListProjectCredentialsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestNotFoundError"},"ListProjectCredentialsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestTooManyRequestsError"},"ListProjectCredentialsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestInternalServerError"},"ListProjectCredentialsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectCredentialsRequestGatewayTimeoutError"},"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0Kind":{"type":"string","enum":["login"],"title":"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0Kind"},"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0AuthMethod":{"type":"string","enum":["password","google","github"],"title":"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0AuthMethod"},"ProjectsCreateAProjectCredentialRequest0":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0Kind"},"authMethod":{"$ref":"#/components/schemas/V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf0AuthMethod"},"label":{"type":"string","minLength":1,"maxLength":50},"description":{"type":"string","maxLength":500,"description":"When to use this account: its type, enabled features/plans, and the environments it exists in. The agent reads this when choosing between credentials."},"username":{"type":"string","minLength":1,"maxLength":255},"password":{"type":"string","minLength":1},"totpSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Authenticator (TOTP/MFA) secret: the base32 setup key or otpauth:// URI from the account's MFA enrollment. The agent generates one-time codes from it during runs. Never returned; responses expose only hasTotpSecret."}},"required":["kind","label","username","password"],"title":"ProjectsCreateAProjectCredentialRequest0"},"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1Kind":{"type":"string","enum":["login"],"title":"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1Kind"},"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1AuthMethod":{"type":"string","enum":["custom"],"title":"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1AuthMethod"},"ProjectsCreateAProjectCredentialRequest1":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1Kind"},"authMethod":{"$ref":"#/components/schemas/V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf1AuthMethod"},"label":{"type":"string","minLength":1,"maxLength":50},"description":{"type":"string","maxLength":500,"description":"When to use this account: its type, enabled features/plans, and the environments it exists in. The agent reads this when choosing between credentials."},"authInstructions":{"type":"string","minLength":1,"maxLength":4000}},"required":["kind","authMethod","label","authInstructions"],"title":"ProjectsCreateAProjectCredentialRequest1"},"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf2Kind":{"type":"string","enum":["inbox"],"title":"V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf2Kind"},"ProjectsCreateAProjectCredentialRequest2":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/V1ProjectsProjectIdCredentialsPostRequestBodyContentApplicationJsonSchemaOneOf2Kind"},"label":{"type":"string","minLength":1,"maxLength":50},"description":{"type":"string","maxLength":500,"description":"When to use this account: its type, enabled features/plans, and the environments it exists in. The agent reads this when choosing between credentials."}},"required":["kind","label"],"title":"ProjectsCreateAProjectCredentialRequest2"},"Projects_createAProjectCredential_Request":{"oneOf":[{"$ref":"#/components/schemas/ProjectsCreateAProjectCredentialRequest0"},{"$ref":"#/components/schemas/ProjectsCreateAProjectCredentialRequest1"},{"$ref":"#/components/schemas/ProjectsCreateAProjectCredentialRequest2"}],"title":"Projects_createAProjectCredential_Request"},"Projects_createAProjectCredential_Response_201":{"type":"object","properties":{"credential":{"$ref":"#/components/schemas/CredentialSummary"}},"required":["credential"],"title":"Projects_createAProjectCredential_Response_201"},"CreateAProjectCredentialRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectCredentialRequestBadRequestError"},"CreateAProjectCredentialRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectCredentialRequestUnauthorizedError"},"CreateAProjectCredentialRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectCredentialRequestTooManyRequestsError"},"CreateAProjectCredentialRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectCredentialRequestInternalServerError"},"CreateAProjectCredentialRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectCredentialRequestGatewayTimeoutError"},"ProjectMemoryCategory":{"type":"string","enum":["site_structure","test_insights","user_preferences"],"title":"ProjectMemoryCategory"},"ProjectMemoryImportance":{"type":"string","enum":["high","medium","low"],"title":"ProjectMemoryImportance"},"ProjectMemory":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"category":{"$ref":"#/components/schemas/ProjectMemoryCategory"},"title":{"type":"string"},"content":{"type":"string"},"importance":{"$ref":"#/components/schemas/ProjectMemoryImportance"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","category","title","content","importance","createdAt","updatedAt"],"title":"ProjectMemory"},"Projects_listProjectMemories_Response_200":{"type":"object","properties":{"memories":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMemory"}},"count":{"type":"integer"},"maxMemories":{"type":"integer"}},"required":["memories","count","maxMemories"],"title":"Projects_listProjectMemories_Response_200"},"ListProjectMemoriesRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestBadRequestError"},"ListProjectMemoriesRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestUnauthorizedError"},"ListProjectMemoriesRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestNotFoundError"},"ListProjectMemoriesRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestTooManyRequestsError"},"ListProjectMemoriesRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestInternalServerError"},"ListProjectMemoriesRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMemoriesRequestGatewayTimeoutError"},"V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaCategory":{"type":"string","enum":["site_structure","test_insights","user_preferences"],"title":"V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaCategory"},"V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaImportance":{"type":"string","enum":["high","medium","low"],"title":"V1ProjectsProjectIdMemoriesPostRequestBodyContentApplicationJsonSchemaImportance"},"Projects_createAProjectMemory_Response_201":{"type":"object","properties":{"memory":{"$ref":"#/components/schemas/ProjectMemory"},"pruned":{"type":"integer"}},"required":["memory","pruned"],"title":"Projects_createAProjectMemory_Response_201"},"CreateAProjectMemoryRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestBadRequestError"},"CreateAProjectMemoryRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestUnauthorizedError"},"CreateAProjectMemoryRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestNotFoundError"},"CreateAProjectMemoryRequestConflictError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestConflictError"},"CreateAProjectMemoryRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestTooManyRequestsError"},"CreateAProjectMemoryRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestInternalServerError"},"CreateAProjectMemoryRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateAProjectMemoryRequestGatewayTimeoutError"},"V1ProjectsProjectIdIssuesGetParametersStatus":{"type":"string","enum":["open","resolved","false_positive"],"description":"Filter to one triage status.","title":"V1ProjectsProjectIdIssuesGetParametersStatus"},"V1ProjectsProjectIdIssuesGetParametersEnvironment":{"type":"string","enum":["production","staging","preview","custom"],"description":"Filter to issues seen on one deployment environment.","title":"V1ProjectsProjectIdIssuesGetParametersEnvironment"},"ProjectIssueStatus":{"type":"string","enum":["open","resolved","false_positive"],"description":"Triage status. Resolved issues reopen automatically if a run surfaces them again.","title":"ProjectIssueStatus"},"ProjectIssueIssueType":{"type":"string","enum":["issue","warning"],"title":"ProjectIssueIssueType"},"ProjectIssueSource":{"type":"string","enum":["agent_report","step_failure"],"description":"How the tracker learned about the issue: an explicit agent report or a failed test step.","title":"ProjectIssueSource"},"ProjectIssueEnvironment":{"type":"string","enum":["production","staging","preview","custom"],"description":"Deployment bucket the issue is tracked on.","title":"ProjectIssueEnvironment"},"ProjectIssue":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"testId":{"type":["string","null"],"format":"uuid"},"status":{"$ref":"#/components/schemas/ProjectIssueStatus","description":"Triage status. Resolved issues reopen automatically if a run surfaces them again."},"issueType":{"$ref":"#/components/schemas/ProjectIssueIssueType"},"source":{"$ref":"#/components/schemas/ProjectIssueSource","description":"How the tracker learned about the issue: an explicit agent report or a failed test step."},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":["string","null"]},"severity":{"type":["integer","null"],"description":"1 (low) to 5 (critical), when reported."},"category":{"type":["string","null"]},"reproductionSteps":{"type":["array","null"],"items":{"type":"string"}},"expectedBehavior":{"type":["string","null"]},"actualBehavior":{"type":["string","null"]},"screenshotUrl":{"type":["string","null"]},"environment":{"$ref":"#/components/schemas/ProjectIssueEnvironment","description":"Deployment bucket the issue is tracked on."},"environmentName":{"type":"string","description":"Resolved environment label (\"Production\", \"Staging\", \"QA EU\", ...). Issues are tracked per environment: the same bug on different environments is separate issues."},"occurrenceCount":{"type":"integer","description":"Number of runs that surfaced this issue."},"firstSeenRunId":{"type":["string","null"],"format":"uuid"},"lastSeenRunId":{"type":["string","null"],"format":"uuid"},"lastSeenAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","testId","status","issueType","source","name","description","url","severity","category","reproductionSteps","expectedBehavior","actualBehavior","screenshotUrl","environment","environmentName","occurrenceCount","firstSeenRunId","lastSeenRunId","lastSeenAt","resolvedAt","createdAt","updatedAt"],"title":"ProjectIssue"},"Projects_listProjectIssues_Response_200":{"type":"object","properties":{"issues":{"type":"array","items":{"$ref":"#/components/schemas/ProjectIssue"}},"count":{"type":"integer"},"openCount":{"type":"integer","description":"Total open issues in the project."}},"required":["issues","count","openCount"],"title":"Projects_listProjectIssues_Response_200"},"ListProjectIssuesRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestBadRequestError"},"ListProjectIssuesRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestUnauthorizedError"},"ListProjectIssuesRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestNotFoundError"},"ListProjectIssuesRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestTooManyRequestsError"},"ListProjectIssuesRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestInternalServerError"},"ListProjectIssuesRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectIssuesRequestGatewayTimeoutError"},"ProjectIssueOccurrence":{"type":"object","properties":{"runId":{"type":"string","format":"uuid"},"runTitle":{"type":["string","null"]},"tMs":{"type":["integer","null"],"description":"Recording offset (ms) when the issue was reported in that run."},"createdAt":{"type":"string","format":"date-time"}},"required":["runId","runTitle","tMs","createdAt"],"title":"ProjectIssueOccurrence"},"Projects_getAProjectIssue_Response_200":{"type":"object","properties":{"issue":{"$ref":"#/components/schemas/ProjectIssue"},"occurrences":{"type":"array","items":{"$ref":"#/components/schemas/ProjectIssueOccurrence"}}},"required":["issue","occurrences"],"title":"Projects_getAProjectIssue_Response_200"},"GetAProjectIssueRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestBadRequestError"},"GetAProjectIssueRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestUnauthorizedError"},"GetAProjectIssueRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestNotFoundError"},"GetAProjectIssueRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestTooManyRequestsError"},"GetAProjectIssueRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestInternalServerError"},"GetAProjectIssueRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetAProjectIssueRequestGatewayTimeoutError"},"Projects_deleteAProjectMemory_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"required":["deleted","id"],"title":"Projects_deleteAProjectMemory_Response_200"},"DeleteAProjectMemoryRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestBadRequestError"},"DeleteAProjectMemoryRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestUnauthorizedError"},"DeleteAProjectMemoryRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestNotFoundError"},"DeleteAProjectMemoryRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestTooManyRequestsError"},"DeleteAProjectMemoryRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestInternalServerError"},"DeleteAProjectMemoryRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMemoryRequestGatewayTimeoutError"},"ProjectFileSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":["string","null"],"format":"uuid"},"filename":{"type":"string"},"mediaType":{"type":"string"},"fileSize":{"type":"integer"},"description":{"type":["string","null"]},"summary":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["id","projectId","filename","mediaType","fileSize","description","summary","createdAt"],"title":"ProjectFileSummary"},"Projects_listProjectFiles_Response_200":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/ProjectFileSummary"}}},"required":["files"],"title":"Projects_listProjectFiles_Response_200"},"ListProjectFilesRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestBadRequestError"},"ListProjectFilesRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestUnauthorizedError"},"ListProjectFilesRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestNotFoundError"},"ListProjectFilesRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestTooManyRequestsError"},"ListProjectFilesRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestInternalServerError"},"ListProjectFilesRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectFilesRequestGatewayTimeoutError"},"Projects_initiateAProjectFileUpload_Response_200":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri"},"storageKey":{"type":"string"},"mimeType":{"type":"string"},"filename":{"type":"string"},"fileSize":{"type":"integer"},"mediaType":{"type":"string"}},"required":["uploadUrl","storageKey","mimeType","filename","fileSize","mediaType"],"title":"Projects_initiateAProjectFileUpload_Response_200"},"InitiateAProjectFileUploadRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestBadRequestError"},"InitiateAProjectFileUploadRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestUnauthorizedError"},"InitiateAProjectFileUploadRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestNotFoundError"},"InitiateAProjectFileUploadRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestTooManyRequestsError"},"InitiateAProjectFileUploadRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestInternalServerError"},"InitiateAProjectFileUploadRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectFileUploadRequestGatewayTimeoutError"},"Projects_confirmAProjectFileUpload_Response_201":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/ProjectFileSummary"}}},"required":["files"],"title":"Projects_confirmAProjectFileUpload_Response_201"},"ConfirmAProjectFileUploadRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestBadRequestError"},"ConfirmAProjectFileUploadRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestUnauthorizedError"},"ConfirmAProjectFileUploadRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestNotFoundError"},"ConfirmAProjectFileUploadRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestTooManyRequestsError"},"ConfirmAProjectFileUploadRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestInternalServerError"},"ConfirmAProjectFileUploadRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectFileUploadRequestGatewayTimeoutError"},"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsPlatform":{"type":"string","enum":["ios","android"],"title":"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsPlatform"},"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsSource":{"type":"string","enum":["manual_upload","group_webhook_artifact","api_upload"],"title":"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsSource"},"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"platform":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsPlatform"},"filename":{"type":"string"},"bundleId":{"type":["string","null"]},"appVersion":{"type":["string","null"]},"buildVersion":{"type":["string","null"]},"fileSize":{"type":"number","format":"double"},"source":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItemsSource"},"expiresAt":{"type":["string","null"],"format":"date-time"},"removeAfter":{"type":["integer","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","platform","filename","bundleId","appVersion","buildVersion","fileSize","source","expiresAt","removeAfter","createdAt"],"title":"V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItems"},"Projects_listProjectMobileApps_Response_200":{"type":"object","properties":{"apps":{"type":"array","items":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileGetResponsesContentApplicationJsonSchemaAppsItems"}}},"required":["apps"],"title":"Projects_listProjectMobileApps_Response_200"},"ListProjectMobileAppsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestBadRequestError"},"ListProjectMobileAppsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestUnauthorizedError"},"ListProjectMobileAppsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestNotFoundError"},"ListProjectMobileAppsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestTooManyRequestsError"},"ListProjectMobileAppsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestInternalServerError"},"ListProjectMobileAppsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListProjectMobileAppsRequestGatewayTimeoutError"},"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppPlatform":{"type":"string","enum":["ios","android"],"title":"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppPlatform"},"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppSource":{"type":"string","enum":["manual_upload","group_webhook_artifact","api_upload"],"title":"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppSource"},"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaApp":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"platform":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppPlatform"},"filename":{"type":"string"},"bundleId":{"type":["string","null"]},"appVersion":{"type":["string","null"]},"buildVersion":{"type":["string","null"]},"fileSize":{"type":"number","format":"double"},"source":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaAppSource"},"expiresAt":{"type":["string","null"],"format":"date-time"},"removeAfter":{"type":["integer","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","platform","filename","bundleId","appVersion","buildVersion","fileSize","source","expiresAt","removeAfter","createdAt"],"title":"V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaApp"},"Projects_uploadAProjectMobileApp_Response_201":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobilePostResponsesContentApplicationJsonSchemaApp"}},"required":["app"],"title":"Projects_uploadAProjectMobileApp_Response_201"},"UploadAProjectMobileAppRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestBadRequestError"},"UploadAProjectMobileAppRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestUnauthorizedError"},"UploadAProjectMobileAppRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestNotFoundError"},"UploadAProjectMobileAppRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestTooManyRequestsError"},"UploadAProjectMobileAppRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestInternalServerError"},"UploadAProjectMobileAppRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UploadAProjectMobileAppRequestGatewayTimeoutError"},"Projects_deleteAProjectMobileApp_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"],"title":"Projects_deleteAProjectMobileApp_Response_200"},"DeleteAProjectMobileAppRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestBadRequestError"},"DeleteAProjectMobileAppRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestUnauthorizedError"},"DeleteAProjectMobileAppRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestNotFoundError"},"DeleteAProjectMobileAppRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestTooManyRequestsError"},"DeleteAProjectMobileAppRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestInternalServerError"},"DeleteAProjectMobileAppRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteAProjectMobileAppRequestGatewayTimeoutError"},"Projects_initiateAProjectMobileAppUpload_Response_200":{"type":"object","properties":{"uploadUrl":{"type":"string","format":"uri"},"storageKey":{"type":"string"},"filename":{"type":"string"},"fileSize":{"type":"integer"},"removeAfter":{"type":["integer","null"]}},"required":["uploadUrl","storageKey","filename","fileSize","removeAfter"],"title":"Projects_initiateAProjectMobileAppUpload_Response_200"},"InitiateAProjectMobileAppUploadRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectMobileAppUploadRequestBadRequestError"},"InitiateAProjectMobileAppUploadRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectMobileAppUploadRequestUnauthorizedError"},"InitiateAProjectMobileAppUploadRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectMobileAppUploadRequestTooManyRequestsError"},"InitiateAProjectMobileAppUploadRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectMobileAppUploadRequestInternalServerError"},"InitiateAProjectMobileAppUploadRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"InitiateAProjectMobileAppUploadRequestGatewayTimeoutError"},"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppPlatform":{"type":"string","enum":["ios","android"],"title":"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppPlatform"},"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppSource":{"type":"string","enum":["manual_upload","group_webhook_artifact","api_upload"],"title":"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppSource"},"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaApp":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"platform":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppPlatform"},"filename":{"type":"string"},"bundleId":{"type":["string","null"]},"appVersion":{"type":["string","null"]},"buildVersion":{"type":["string","null"]},"fileSize":{"type":"number","format":"double"},"source":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaAppSource"},"expiresAt":{"type":["string","null"],"format":"date-time"},"removeAfter":{"type":["integer","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","platform","filename","bundleId","appVersion","buildVersion","fileSize","source","expiresAt","removeAfter","createdAt"],"title":"V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaApp"},"Projects_confirmAProjectMobileAppUpload_Response_201":{"type":"object","properties":{"app":{"$ref":"#/components/schemas/V1ProjectsProjectIdMobileUploadConfirmPostResponsesContentApplicationJsonSchemaApp"}},"required":["app"],"title":"Projects_confirmAProjectMobileAppUpload_Response_201"},"ConfirmAProjectMobileAppUploadRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectMobileAppUploadRequestBadRequestError"},"ConfirmAProjectMobileAppUploadRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectMobileAppUploadRequestUnauthorizedError"},"ConfirmAProjectMobileAppUploadRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectMobileAppUploadRequestTooManyRequestsError"},"ConfirmAProjectMobileAppUploadRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectMobileAppUploadRequestInternalServerError"},"ConfirmAProjectMobileAppUploadRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ConfirmAProjectMobileAppUploadRequestGatewayTimeoutError"},"TestDefinitionPlatform":{"type":"string","enum":["web","mobile"],"title":"TestDefinitionPlatform"},"TestSettingsExecutionMode":{"type":"string","enum":["fast","deep"],"description":"deep uses a higher-effort model for complex steps.","title":"TestSettingsExecutionMode"},"TestSettingsBrowserRegion":{"type":"string","enum":["eu","us"],"description":"Per-test proxy exit region. null falls back to the project's region.","title":"TestSettingsBrowserRegion"},"TestSettingsSimulatorRegion":{"type":"string","enum":["eu-north1","us-west1"],"description":"Region the simulator or emulator runs in. Mobile tests only.","title":"TestSettingsSimulatorRegion"},"TestSettingsViewport":{"type":"string","enum":["desktop","desktop-hd","mobile","tablet"],"description":"Browser viewport preset: desktop (1280x800), desktop-hd (1920x1080), mobile (390x844), tablet (768x1024). null restores the default. Web tests only.","title":"TestSettingsViewport"},"TestSettings":{"type":"object","properties":{"executionMode":{"$ref":"#/components/schemas/TestSettingsExecutionMode","description":"deep uses a higher-effort model for complex steps."},"browserRegion":{"oneOf":[{"$ref":"#/components/schemas/TestSettingsBrowserRegion"},{"type":"null"}],"description":"Per-test proxy exit region. null falls back to the project's region."},"simulatorRegion":{"$ref":"#/components/schemas/TestSettingsSimulatorRegion","description":"Region the simulator or emulator runs in. Mobile tests only."},"viewport":{"oneOf":[{"$ref":"#/components/schemas/TestSettingsViewport"},{"type":"null"}],"description":"Browser viewport preset: desktop (1280x800), desktop-hd (1920x1080), mobile (390x844), tablet (768x1024). null restores the default. Web tests only."},"webSearchEnabled":{"type":"boolean","description":"Allow the test to use internet search for factual checks."},"prepGroupId":{"type":["string","null"],"format":"uuid","description":"Group whose preparation test a solo run of this test uses."}},"title":"TestSettings"},"TestStepOneOf0Type":{"type":"string","enum":["act"],"title":"TestStepOneOf0Type"},"TestStep0":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf0Type"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."}},"required":["title","type"],"title":"TestStep0"},"TestStepOneOf1Type":{"type":"string","enum":["assert"],"title":"TestStepOneOf1Type"},"TestStep1":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf1Type"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."}},"required":["title","type"],"title":"TestStep1"},"TestStepOneOf2Type":{"type":"string","enum":["login"],"title":"TestStepOneOf2Type"},"TestStep2":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf2Type"},"credentialId":{"type":"string","format":"uuid"},"temporaryEmail":{"type":"boolean"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."}},"required":["title","type"],"title":"TestStep2"},"TestStepOneOf3Type":{"type":"string","enum":["files"],"title":"TestStepOneOf3Type"},"TestStep3":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf3Type"},"fileIds":{"type":"array","items":{"type":"string","format":"uuid"}},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."}},"required":["title","type","fileIds"],"title":"TestStep3"},"TestStepOneOf4Type":{"type":"string","enum":["screenshot"],"title":"TestStepOneOf4Type"},"TestStep4":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf4Type"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."}},"required":["type"],"title":"TestStep4"},"TestStepOneOf5Type":{"type":"string","enum":["javascript"],"title":"TestStepOneOf5Type"},"TestStep5":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf5Type"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."},"code":{"type":"string","description":"JavaScript run in the browser page. Runs as an awaited function body; passes if it completes without throwing (returns nothing or { success: true }) and fails if it returns { success: false, reason } or throws. Web tests only."}},"required":["type","code"],"title":"TestStep5"},"TestStepOneOf6Type":{"type":"string","enum":["microphone"],"title":"TestStepOneOf6Type"},"TestStepOneOf6Mode":{"type":"string","enum":["blocking","loop"],"description":"blocking: the agent waits for playback to finish before continuing. loop: playback repeats until the run ends and the agent continues immediately. Web tests only.","title":"TestStepOneOf6Mode"},"TestStep6":{"type":"object","properties":{"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestStepOneOf6Type"},"disabled":{"type":"boolean","description":"When true, the step stays saved on the test but is skipped during runs."},"fileId":{"type":"string","description":"Project file ID (UUID) of the audio file (e.g. MP3) to play through the microphone. Empty string marks an unconfigured draft that must have a file attached before the test runs."},"mode":{"$ref":"#/components/schemas/TestStepOneOf6Mode","description":"blocking: the agent waits for playback to finish before continuing. loop: playback repeats until the run ends and the agent continues immediately. Web tests only."}},"required":["type","fileId","mode"],"title":"TestStep6"},"TestStep":{"oneOf":[{"$ref":"#/components/schemas/TestStep0"},{"$ref":"#/components/schemas/TestStep1"},{"$ref":"#/components/schemas/TestStep2"},{"$ref":"#/components/schemas/TestStep3"},{"$ref":"#/components/schemas/TestStep4"},{"$ref":"#/components/schemas/TestStep5"},{"$ref":"#/components/schemas/TestStep6"}],"title":"TestStep"},"TestDefinition":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":["string","null"]},"enabled":{"type":"boolean"},"platform":{"$ref":"#/components/schemas/TestDefinitionPlatform"},"settings":{"$ref":"#/components/schemas/TestSettings"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TestStep"}},"projectId":{"type":"string","format":"uuid"},"projectUrl":{"type":["string","null"],"format":"uri"},"projectName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","title","steps"],"title":"TestDefinition"},"Tests_listTests_Response_200":{"type":"object","properties":{"projectUrl":{"type":["string","null"],"format":"uri"},"projectName":{"type":"string"},"tests":{"type":"array","items":{"$ref":"#/components/schemas/TestDefinition"}},"nextCursor":{"type":["string","null"]}},"required":["projectUrl","projectName","tests","nextCursor"],"title":"Tests_listTests_Response_200"},"ListTestsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestBadRequestError"},"ListTestsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestUnauthorizedError"},"ListTestsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestNotFoundError"},"ListTestsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestTooManyRequestsError"},"ListTestsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestInternalServerError"},"ListTestsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestsRequestGatewayTimeoutError"},"V1TestsPostRequestBodyContentApplicationJsonSchemaPlatform":{"type":"string","enum":["web","mobile"],"title":"V1TestsPostRequestBodyContentApplicationJsonSchemaPlatform"},"Tests_createATest_Response_201":{"type":"object","properties":{"test":{"$ref":"#/components/schemas/TestDefinition"}},"required":["test"],"title":"Tests_createATest_Response_201"},"CreateATestRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestBadRequestError"},"CreateATestRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestUnauthorizedError"},"CreateATestRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestNotFoundError"},"CreateATestRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestTooManyRequestsError"},"CreateATestRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestInternalServerError"},"CreateATestRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestRequestGatewayTimeoutError"},"TestDetailGroupsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"isDefault":{"type":"boolean"}},"required":["id","name","isDefault"],"title":"TestDetailGroupsItems"},"TestDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":["string","null"]},"enabled":{"type":"boolean"},"platform":{"$ref":"#/components/schemas/TestDefinitionPlatform"},"settings":{"$ref":"#/components/schemas/TestSettings"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TestStep"}},"projectId":{"type":"string","format":"uuid"},"projectUrl":{"type":["string","null"],"format":"uri"},"projectName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"groups":{"type":"array","items":{"$ref":"#/components/schemas/TestDetailGroupsItems"}}},"required":["id","title","steps"],"title":"TestDetail"},"GetATestRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestBadRequestError"},"GetATestRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestUnauthorizedError"},"GetATestRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestNotFoundError"},"GetATestRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestTooManyRequestsError"},"GetATestRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestInternalServerError"},"GetATestRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestRequestGatewayTimeoutError"},"Tests_deleteATest_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"required":["deleted","id"],"title":"Tests_deleteATest_Response_200"},"DeleteATestRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestRequestBadRequestError"},"DeleteATestRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestRequestUnauthorizedError"},"DeleteATestRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestRequestTooManyRequestsError"},"DeleteATestRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestRequestInternalServerError"},"DeleteATestRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestRequestGatewayTimeoutError"},"V1TestsTestIdPatchRequestBodyContentApplicationJsonSchemaSettings":{"type":"object","properties":{"executionMode":{"$ref":"#/components/schemas/TestSettingsExecutionMode","description":"deep uses a higher-effort model for complex steps."},"browserRegion":{"oneOf":[{"$ref":"#/components/schemas/TestSettingsBrowserRegion"},{"type":"null"}],"description":"Per-test proxy exit region. null falls back to the project's region."},"simulatorRegion":{"$ref":"#/components/schemas/TestSettingsSimulatorRegion","description":"Region the simulator or emulator runs in. Mobile tests only."},"viewport":{"oneOf":[{"$ref":"#/components/schemas/TestSettingsViewport"},{"type":"null"}],"description":"Browser viewport preset: desktop (1280x800), desktop-hd (1920x1080), mobile (390x844), tablet (768x1024). null restores the default. Web tests only."},"webSearchEnabled":{"type":"boolean","description":"Allow the test to use internet search for factual checks."},"prepGroupId":{"type":["string","null"],"format":"uuid","description":"Group whose preparation test a solo run of this test uses."}},"title":"V1TestsTestIdPatchRequestBodyContentApplicationJsonSchemaSettings"},"Tests_updateATest_Response_200":{"type":"object","properties":{"test":{"$ref":"#/components/schemas/TestDefinition"}},"required":["test"],"title":"Tests_updateATest_Response_200"},"UpdateATestRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestRequestBadRequestError"},"UpdateATestRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestRequestUnauthorizedError"},"UpdateATestRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestRequestTooManyRequestsError"},"UpdateATestRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestRequestInternalServerError"},"UpdateATestRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestRequestGatewayTimeoutError"},"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaMode":{"type":"string","enum":["fast","deep"],"title":"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaMode"},"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform":{"type":"string","enum":["web","ios","android"],"description":"Run platform for the test. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId.","title":"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform"},"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel":{"type":"string","enum":["iphone","ipad"],"description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it.","title":"V1TestsTestIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel"},"V1TestsTestIdRunsPostResponsesContentApplicationJsonSchemaStatus":{"type":"string","enum":["queued"],"title":"V1TestsTestIdRunsPostResponsesContentApplicationJsonSchemaStatus"},"Tests_triggerATestRun_Response_202":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/V1TestsTestIdRunsPostResponsesContentApplicationJsonSchemaStatus"},"runId":{"type":"string","format":"uuid"},"testId":{"type":"string","format":"uuid"}},"required":["status","runId","testId"],"title":"Tests_triggerATestRun_Response_202"},"TriggerATestRunRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestRunRequestBadRequestError"},"TriggerATestRunRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestRunRequestUnauthorizedError"},"TriggerATestRunRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestRunRequestTooManyRequestsError"},"TriggerATestRunRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestRunRequestInternalServerError"},"TriggerATestRunRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestRunRequestGatewayTimeoutError"},"V1GroupsGetResponsesContentApplicationJsonSchemaGroupsItems":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"isDefault":{"type":"boolean"},"testCount":{"type":"integer"},"prepTestId":{"type":["string","null"],"format":"uuid"}},"required":["id","name","isDefault","testCount","prepTestId"],"title":"V1GroupsGetResponsesContentApplicationJsonSchemaGroupsItems"},"Groups_listTestGroups_Response_200":{"type":"object","properties":{"groups":{"type":"array","items":{"$ref":"#/components/schemas/V1GroupsGetResponsesContentApplicationJsonSchemaGroupsItems"}}},"required":["groups"],"title":"Groups_listTestGroups_Response_200"},"ListTestGroupsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestBadRequestError"},"ListTestGroupsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestUnauthorizedError"},"ListTestGroupsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestNotFoundError"},"ListTestGroupsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestTooManyRequestsError"},"ListTestGroupsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestInternalServerError"},"ListTestGroupsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestGroupsRequestGatewayTimeoutError"},"V1GroupsPostRequestBodyContentApplicationJsonSchemaRunMode":{"type":"string","enum":["concurrent","sequential"],"title":"V1GroupsPostRequestBodyContentApplicationJsonSchemaRunMode"},"V1GroupsPostResponsesContentApplicationJsonSchemaGroupRunMode":{"type":"string","enum":["concurrent","sequential"],"title":"V1GroupsPostResponsesContentApplicationJsonSchemaGroupRunMode"},"V1GroupsPostResponsesContentApplicationJsonSchemaGroup":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"isDefault":{"type":"boolean"},"runMode":{"$ref":"#/components/schemas/V1GroupsPostResponsesContentApplicationJsonSchemaGroupRunMode"},"prepTestId":{"type":["string","null"],"format":"uuid"},"projectId":{"type":"string","format":"uuid"}},"required":["id","name","isDefault","runMode","prepTestId","projectId"],"title":"V1GroupsPostResponsesContentApplicationJsonSchemaGroup"},"Groups_createATestGroup_Response_201":{"type":"object","properties":{"group":{"$ref":"#/components/schemas/V1GroupsPostResponsesContentApplicationJsonSchemaGroup"}},"required":["group"],"title":"Groups_createATestGroup_Response_201"},"CreateATestGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestBadRequestError"},"CreateATestGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestUnauthorizedError"},"CreateATestGroupRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestNotFoundError"},"CreateATestGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestTooManyRequestsError"},"CreateATestGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestInternalServerError"},"CreateATestGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CreateATestGroupRequestGatewayTimeoutError"},"GroupDetailRunMode":{"type":"string","enum":["concurrent","sequential"],"title":"GroupDetailRunMode"},"GroupDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"isDefault":{"type":"boolean"},"runMode":{"$ref":"#/components/schemas/GroupDetailRunMode"},"prepTestId":{"type":["string","null"],"format":"uuid"},"projectId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","isDefault","runMode","prepTestId","projectId"],"title":"GroupDetail"},"GetATestGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestBadRequestError"},"GetATestGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestUnauthorizedError"},"GetATestGroupRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestNotFoundError"},"GetATestGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestTooManyRequestsError"},"GetATestGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestInternalServerError"},"GetATestGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetATestGroupRequestGatewayTimeoutError"},"Groups_deleteATestGroup_Response_200":{"type":"object","properties":{"deleted":{"type":"boolean"},"id":{"type":"string","format":"uuid"}},"required":["deleted","id"],"title":"Groups_deleteATestGroup_Response_200"},"DeleteATestGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestGroupRequestBadRequestError"},"DeleteATestGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestGroupRequestUnauthorizedError"},"DeleteATestGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestGroupRequestTooManyRequestsError"},"DeleteATestGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestGroupRequestInternalServerError"},"DeleteATestGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"DeleteATestGroupRequestGatewayTimeoutError"},"V1GroupsGroupIdPatchRequestBodyContentApplicationJsonSchemaRunMode":{"type":"string","enum":["concurrent","sequential"],"title":"V1GroupsGroupIdPatchRequestBodyContentApplicationJsonSchemaRunMode"},"Groups_updateATestGroup_Response_200":{"type":"object","properties":{"group":{"$ref":"#/components/schemas/GroupDetail"}},"required":["group"],"title":"Groups_updateATestGroup_Response_200"},"UpdateATestGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestGroupRequestBadRequestError"},"UpdateATestGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestGroupRequestUnauthorizedError"},"UpdateATestGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestGroupRequestTooManyRequestsError"},"UpdateATestGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestGroupRequestInternalServerError"},"UpdateATestGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"UpdateATestGroupRequestGatewayTimeoutError"},"Groups_addATestToAGroup_Response_200":{"type":"object","properties":{"groupId":{"type":"string","format":"uuid"},"testId":{"type":"string","format":"uuid"},"added":{"type":"boolean"}},"required":["groupId","testId","added"],"title":"Groups_addATestToAGroup_Response_200"},"AddATestToAGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestBadRequestError"},"AddATestToAGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestUnauthorizedError"},"AddATestToAGroupRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestNotFoundError"},"AddATestToAGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestTooManyRequestsError"},"AddATestToAGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestInternalServerError"},"AddATestToAGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"AddATestToAGroupRequestGatewayTimeoutError"},"Groups_removeATestFromAGroup_Response_200":{"type":"object","properties":{"groupId":{"type":"string","format":"uuid"},"testId":{"type":"string","format":"uuid"},"removed":{"type":"boolean"}},"required":["groupId","testId","removed"],"title":"Groups_removeATestFromAGroup_Response_200"},"RemoveATestFromAGroupRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"RemoveATestFromAGroupRequestBadRequestError"},"RemoveATestFromAGroupRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"RemoveATestFromAGroupRequestUnauthorizedError"},"RemoveATestFromAGroupRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"RemoveATestFromAGroupRequestTooManyRequestsError"},"RemoveATestFromAGroupRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"RemoveATestFromAGroupRequestInternalServerError"},"RemoveATestFromAGroupRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"RemoveATestFromAGroupRequestGatewayTimeoutError"},"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform":{"type":"string","enum":["web","ios","android"],"description":"Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId or bundleId.","title":"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaPlatform"},"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel":{"type":"string","enum":["iphone","ipad"],"description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it.","title":"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaDeviceModel"},"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaEnvironment":{"type":"string","enum":["production","staging","preview","custom"],"title":"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaEnvironment"},"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaMobile":{"type":"object","properties":{"appId":{"type":"string","format":"uuid"},"bundleId":{"type":"string","minLength":1},"artifactUrl":{"type":"string","format":"uri"},"artifactFilename":{"type":"string","minLength":1},"buildId":{"type":"string","minLength":1}},"title":"V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaMobile"},"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaStatus":{"type":"string","enum":["queued","cancelled"],"title":"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaStatus"},"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus":{"type":"string","enum":["not_configured","check_create_failed","pr_not_found"],"title":"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus"},"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithub":{"type":"object","properties":{"configured":{"type":"boolean"},"checkRunCreated":{"type":"boolean"},"commentTargetResolved":{"type":"boolean"},"status":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithubStatus"}},"required":["configured","checkRunCreated","commentTargetResolved"],"title":"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithub"},"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadata":{"type":"object","properties":{"github":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithub"}},"required":["github"],"title":"V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadata"},"Groups_triggerATestGroupRun_Response_202":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaStatus"},"groupId":{"type":"string","format":"uuid"},"batchId":{"type":"string","format":"uuid"},"runIds":{"type":"array","items":{"type":"string","format":"uuid"}},"queuedRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"cancelledRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"count":{"type":"integer"},"metadata":{"$ref":"#/components/schemas/V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadata"}},"required":["status","groupId","batchId","runIds","queuedRunIds","cancelledRunIds","count"],"title":"Groups_triggerATestGroupRun_Response_202"},"TriggerATestGroupRunRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestBadRequestError"},"TriggerATestGroupRunRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestUnauthorizedError"},"TriggerATestGroupRunRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestNotFoundError"},"TriggerATestGroupRunRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestTooManyRequestsError"},"TriggerATestGroupRunRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestInternalServerError"},"TriggerATestGroupRunRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerATestGroupRunRequestGatewayTimeoutError"},"Webhooks_triggerAProjectWebhook_Response_200":{"type":"object","properties":{"received":{"type":"boolean"},"ignored":{"type":"boolean"},"reason":{"type":"string"},"runId":{"type":"string","format":"uuid"},"batchId":{"type":"string","format":"uuid","description":"First created batch only. Use batchIds, which covers every PR test group.","deprecated":true},"batchIds":{"type":"array","items":{"type":"string","format":"uuid"},"description":"One batch per selected PR test group started by this delivery."}},"required":["received"],"title":"Webhooks_triggerAProjectWebhook_Response_200"},"TriggerAProjectWebhookRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAProjectWebhookRequestBadRequestError"},"TriggerAProjectWebhookRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAProjectWebhookRequestUnauthorizedError"},"TriggerAProjectWebhookRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAProjectWebhookRequestTooManyRequestsError"},"TriggerAProjectWebhookRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAProjectWebhookRequestInternalServerError"},"TriggerAProjectWebhookRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAProjectWebhookRequestGatewayTimeoutError"},"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaPlatform":{"type":"string","enum":["web","ios","android"],"description":"Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId or bundleId.","title":"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaPlatform"},"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaDeviceModel":{"type":"string","enum":["iphone","ipad"],"description":"Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it.","title":"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaDeviceModel"},"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaEnvironment":{"type":"string","enum":["production","staging","preview","custom"],"title":"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaEnvironment"},"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaMobile":{"type":"object","properties":{"appId":{"type":"string","format":"uuid"},"bundleId":{"type":"string","minLength":1},"artifactUrl":{"type":"string","format":"uri"},"artifactFilename":{"type":"string","minLength":1},"buildId":{"type":"string","minLength":1}},"title":"V1GroupsWebhookWebhookIdSecretPostRequestBodyContentApplicationJsonSchemaMobile"},"Webhooks_triggerAGroupWebhook_Response_202":{"type":"object","properties":{"received":{"type":"boolean"},"ignored":{"type":"boolean"},"reason":{"type":"string"},"runId":{"type":"string","format":"uuid"},"batchId":{"type":"string","format":"uuid","description":"First created batch only. Use batchIds, which covers every PR test group.","deprecated":true},"batchIds":{"type":"array","items":{"type":"string","format":"uuid"},"description":"One batch per selected PR test group started by this delivery."}},"required":["received"],"title":"Webhooks_triggerAGroupWebhook_Response_202"},"TriggerAGroupWebhookRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAGroupWebhookRequestBadRequestError"},"TriggerAGroupWebhookRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAGroupWebhookRequestUnauthorizedError"},"TriggerAGroupWebhookRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAGroupWebhookRequestTooManyRequestsError"},"TriggerAGroupWebhookRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAGroupWebhookRequestInternalServerError"},"TriggerAGroupWebhookRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"TriggerAGroupWebhookRequestGatewayTimeoutError"},"V1RunsGetParametersStatus":{"type":"string","enum":["queued","running","completed","failed","cancelled"],"description":"Filter by status","title":"V1RunsGetParametersStatus"},"RunResponseType":{"type":"string","enum":["ci","test","discovery"],"description":"Run type","title":"RunResponseType"},"RunResponseStatus":{"type":"string","enum":["queued","running","completed","failed","cancelled"],"description":"Current run status","title":"RunResponseStatus"},"RunResponsePlatform":{"type":"string","enum":["web","ios","android"],"description":"Target platform","title":"RunResponsePlatform"},"RunResponseDeviceModel":{"type":"string","enum":["iphone","ipad"],"description":"Non-default mobile device variant within the run platform (e.g. ipad on iOS). Null means the platform default phone-sized device; explicitly requested defaults are stored as null.","title":"RunResponseDeviceModel"},"RunResponseSource":{"type":"string","enum":["api","github_action","github_app","scheduled","webhook","structured_test"],"description":"Run source","title":"RunResponseSource"},"TestOutputResult":{"type":"string","enum":["PASS","FAILED","BLOCKED"],"description":"Test result - PASS if no issues found, FAILED if any issues were reported, BLOCKED if an environment/setup problem or an agent automation limit prevented a product verdict","title":"TestOutputResult"},"BlockedReasonCategory":{"type":"string","enum":["environment","seed_data","credentials","test_setup","automation"],"description":"Why the run was blocked: environment outage, missing seed data, or an agent automation limit","title":"BlockedReasonCategory"},"BlockedReasonErrorCodesItems":{"type":"string","enum":["AUTH_CREDENTIAL_UNAVAILABLE","AUTH_CREDENTIAL_INVALID","AUTH_BASIC_REQUIRED","VERCEL_BYPASS_REQUIRED","ENVIRONMENT_UNAVAILABLE","SEED_DATA_MISSING","MOBILE_RELEASE_BUILD_REQUIRED","VIEWPORT_RESIZE_UNSUPPORTED","STEP_TOOL_LIMIT_EXHAUSTED","STEP_DEADLINE_EXHAUSTED","STEP_NO_CONCLUSION"],"title":"BlockedReasonErrorCodesItems"},"BlockedReason":{"type":"object","properties":{"category":{"$ref":"#/components/schemas/BlockedReasonCategory","description":"Why the run was blocked: environment outage, missing seed data, or an agent automation limit"},"summary":{"type":"string","description":"Plain-language explanation of what blocked the run"},"errorCodes":{"type":"array","items":{"$ref":"#/components/schemas/BlockedReasonErrorCodesItems"},"description":"Step error codes that produced the blocked verdict"}},"required":["category","summary","errorCodes"],"description":"Structured explanation, present only when result is BLOCKED","title":"BlockedReason"},"IssueType":{"type":"string","enum":["issue","warning"],"default":"issue","description":"issue = confirmed bug, warning = non-blocking observation","title":"IssueType"},"IssueAccessibilityDetailImpact":{"type":"string","enum":["minor","moderate","serious","critical"],"title":"IssueAccessibilityDetailImpact"},"IssueAccessibilityDetail":{"type":"object","properties":{"ruleId":{"type":"string","description":"axe-core rule id, e.g. image-alt"},"impact":{"$ref":"#/components/schemas/IssueAccessibilityDetailImpact"},"helpUrl":{"type":"string","description":"Deque University fix-guidance URL"},"wcagTags":{"type":"array","items":{"type":"string"},"description":"axe rule tags (wcag2a, wcag21aa, ...)"},"nodeCount":{"type":"integer","minimum":0,"description":"Total failing nodes across pages"},"pageCount":{"type":"integer","minimum":0,"description":"Total distinct pages where the rule failed; `urls` is a bounded sample"},"urls":{"type":"array","items":{"type":"string"},"description":"Pages where the rule failed (bounded sample)"},"sampleTargets":{"type":"array","items":{"type":"string"},"description":"CSS selector paths to example failing elements (bounded sample)"}},"required":["ruleId","impact","helpUrl","wcagTags","nodeCount","urls","sampleTargets"],"description":"Structured detail present on warnings produced by the automated axe-core accessibility audit","title":"IssueAccessibilityDetail"},"Issue":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/IssueType","description":"issue = confirmed bug, warning = non-blocking observation"},"name":{"type":"string","description":"Short name of the issue (e.g. 'Login form rejects valid email')"},"description":{"type":"string","description":"What was tested, what happened, and what was expected"},"url":{"type":"string","minLength":1,"maxLength":2048,"description":"Where the issue happened: the exact page URL on web, or the app identifier and screen on mobile (e.g. com.example.app/login)"},"severity":{"type":"integer","minimum":1,"maximum":5,"description":"Issue severity from 1 (minor) to 5 (critical)"},"reproductionSteps":{"type":"array","items":{"type":"string"},"description":"Short reproduction steps in execution order"},"expectedBehavior":{"type":"string","description":"What should have happened"},"actualBehavior":{"type":"string","description":"What actually happened"},"screenshotUrl":{"type":"string","description":"Screenshot URL showing the issue"},"tMs":{"type":"integer","description":"Milliseconds elapsed since the recording reference time when the issue was reported"},"accessibility":{"$ref":"#/components/schemas/IssueAccessibilityDetail"}},"required":["name","description","url"],"title":"Issue"},"TestOutputStepType":{"type":"string","enum":["act","assert","login","files","screenshot","javascript","microphone"],"title":"TestOutputStepType"},"TestOutputStepStatus":{"type":"string","enum":["passed","failed"],"title":"TestOutputStepStatus"},"TestOutputStepErrorCode":{"type":"string","enum":["AUTH_CREDENTIAL_UNAVAILABLE","AUTH_CREDENTIAL_INVALID","AUTH_BASIC_REQUIRED","VERCEL_BYPASS_REQUIRED","ENVIRONMENT_UNAVAILABLE","SEED_DATA_MISSING","MOBILE_RELEASE_BUILD_REQUIRED","VIEWPORT_RESIZE_UNSUPPORTED","STEP_TOOL_LIMIT_EXHAUSTED","STEP_DEADLINE_EXHAUSTED","STEP_NO_CONCLUSION"],"title":"TestOutputStepErrorCode"},"ReusableActionTraceVersion":{"type":"string","enum":["1"],"title":"ReusableActionTraceVersion"},"ReusableActionTraceStepType":{"type":"string","enum":["act","assert","login","files","screenshot","javascript","microphone"],"title":"ReusableActionTraceStepType"},"ReusableActionTargetKind":{"type":"string","enum":["role","css","vision","focused","none"],"title":"ReusableActionTargetKind"},"ReusableActionTarget":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/ReusableActionTargetKind"},"role":{"type":"string","maxLength":60},"name":{"type":"string","maxLength":120},"nth":{"type":"integer","minimum":0},"selector":{"type":"string","maxLength":240},"element":{"type":"string","maxLength":140}},"required":["kind"],"title":"ReusableActionTarget"},"ReusableActionStepSource":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/ReusableActionTargetKind"},"role":{"type":"string","maxLength":60},"name":{"type":"string","maxLength":120},"nth":{"type":"integer","minimum":0},"selector":{"type":"string","maxLength":240},"element":{"type":"string","maxLength":140}},"required":["kind"],"title":"ReusableActionStepSource"},"ReusableActionStepInputField":{"type":"string","enum":["username","password","totp"],"title":"ReusableActionStepInputField"},"ReusableActionStepInputDirection":{"type":"string","enum":["up","down","left","right"],"title":"ReusableActionStepInputDirection"},"ReusableActionStepInputTargetPosition":{"type":"string","enum":["center","top","bottom","left","right"],"title":"ReusableActionStepInputTargetPosition"},"ReusableActionStepInput":{"type":"object","properties":{"url":{"type":"string","maxLength":300},"field":{"$ref":"#/components/schemas/ReusableActionStepInputField"},"option":{"type":"string","maxLength":120},"key":{"type":"string","maxLength":60},"direction":{"$ref":"#/components/schemas/ReusableActionStepInputDirection"},"amount":{"type":"integer"},"deltaX":{"type":"number","format":"double"},"deltaY":{"type":"number","format":"double"},"targetPosition":{"$ref":"#/components/schemas/ReusableActionStepInputTargetPosition"},"focused":{"type":"boolean"},"sequentially":{"type":"boolean"},"text":{"type":"string","maxLength":140},"assertion":{"type":"string","maxLength":300},"role":{"type":"string","maxLength":60},"name":{"type":"string","maxLength":120}},"title":"ReusableActionStepInput"},"ReusableActionStep":{"type":"object","properties":{"order":{"type":"integer","minimum":0},"toolName":{"type":"string","maxLength":64},"summary":{"type":"string","maxLength":300},"gap":{"type":"boolean","description":"Placeholder for a tool the recorder saw run but did not capture (tool name only, no payload) - e.g. a file upload or a failed state-changing attempt. Gaps keep the trace honest about what actually happened: during cached replay, read-only gaps are skipped and state-changing gaps stop the replay so the agent performs that part live instead of it being silently skipped"},"navigated":{"type":"boolean","description":"The action changed the page URL at record time; replay keeps its full settle pipeline"},"target":{"$ref":"#/components/schemas/ReusableActionTarget"},"source":{"$ref":"#/components/schemas/ReusableActionStepSource"},"input":{"$ref":"#/components/schemas/ReusableActionStepInput"}},"required":["order","toolName","summary"],"title":"ReusableActionStep"},"ReusableActionTraceConfidence":{"type":"string","enum":["medium","high"],"title":"ReusableActionTraceConfidence"},"ReusableActionTrace":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/ReusableActionTraceVersion"},"stepKey":{"type":"string","maxLength":160},"stepTitle":{"type":"string","maxLength":200},"stepType":{"$ref":"#/components/schemas/ReusableActionTraceStepType"},"actions":{"type":"array","items":{"$ref":"#/components/schemas/ReusableActionStep"}},"truncated":{"type":"boolean","description":"Actions were dropped at a cap; the trace is guidance-only, never replayable"},"startPath":{"type":"string","maxLength":300,"description":"Pathname where the step began at record time"},"confidence":{"$ref":"#/components/schemas/ReusableActionTraceConfidence"}},"required":["version","stepKey","stepTitle","actions","confidence"],"title":"ReusableActionTrace"},"TestOutputStep":{"type":"object","properties":{"stepIndex":{"type":"integer"},"title":{"type":"string"},"type":{"$ref":"#/components/schemas/TestOutputStepType"},"status":{"$ref":"#/components/schemas/TestOutputStepStatus"},"summary":{"type":"string"},"error":{"type":["string","null"]},"errorCode":{"$ref":"#/components/schemas/TestOutputStepErrorCode"},"startedAtMs":{"type":"integer","description":"Milliseconds elapsed since recording reference when the step started"},"completedAtMs":{"type":"integer","description":"Milliseconds elapsed since recording reference when the step completed"},"reusableActionTrace":{"$ref":"#/components/schemas/ReusableActionTrace"}},"required":["stepIndex","title","status"],"title":"TestOutputStep"},"UiActionIntervalKind":{"type":"string","enum":["click","type","scroll","navigate","other"],"description":"Coarse action category; absent on runs recorded before kinds were tracked","title":"UiActionIntervalKind"},"UiActionInterval":{"type":"object","properties":{"startMs":{"type":"integer","minimum":0,"description":"Milliseconds elapsed since the recording reference time when the action began"},"endMs":{"type":"integer","minimum":0,"description":"Milliseconds elapsed since the recording reference time when the action finished"},"kind":{"$ref":"#/components/schemas/UiActionIntervalKind","description":"Coarse action category; absent on runs recorded before kinds were tracked"}},"required":["startMs","endMs"],"title":"UiActionInterval"},"TestOutputRecording":{"type":"object","properties":{"storageKey":{"type":"string","description":"Internal storage key of the recording artifact"},"fileName":{"type":"string","description":"Recording file name"},"mediaType":{"type":"string","description":"Recording media type (video/mp4)"}},"required":["storageKey","fileName","mediaType"],"description":"Pointer to the run's video recording artifact, present on completed runs that captured a recording. The bytes are not fetchable through the public API; use the dashboard or a share link to view the recording.","title":"TestOutputRecording"},"TestOutput":{"type":"object","properties":{"featureName":{"type":"string","description":"Name of the feature being tested"},"result":{"$ref":"#/components/schemas/TestOutputResult","description":"Test result - PASS if no issues found, FAILED if any issues were reported, BLOCKED if an environment/setup problem or an agent automation limit prevented a product verdict"},"blockedReason":{"$ref":"#/components/schemas/BlockedReason"},"description":{"type":"string","description":"Short summary of what was tested and the final result; include a compact grouped issue summary only when the user explicitly asks for one"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"},"description":"Issues reported during the session via the report_issue tool"},"screenshots":{"type":"array","items":{"type":"string"},"description":"Array of screenshot URLs captured during testing"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/TestOutputStep"},"description":"Per-step summaries with timing information"},"uiActionIntervals":{"type":"array","items":{"$ref":"#/components/schemas/UiActionInterval"},"description":"Recording-time windows when the agent was visibly acting on screen (clicks, typing, scrolling, navigation); used by replay smart speed"},"recording":{"$ref":"#/components/schemas/TestOutputRecording","description":"Pointer to the run's video recording artifact, present on completed runs that captured a recording. The bytes are not fetchable through the public API; use the dashboard or a share link to view the recording."}},"required":["featureName","result","description","screenshots"],"title":"TestOutput"},"PlannerSkippedOutputKind":{"type":"string","enum":["planner_skipped"],"title":"PlannerSkippedOutputKind"},"PlannerSkippedOutput":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/PlannerSkippedOutputKind"},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["kind","reason"],"title":"PlannerSkippedOutput"},"RunResponseOutput":{"oneOf":[{"$ref":"#/components/schemas/TestOutput"},{"$ref":"#/components/schemas/PlannerSkippedOutput"},{"description":"Any type"}],"description":"Run output when completed or skipped","title":"RunResponseOutput"},"RunResponseTestPlanComplexity":{"type":"string","enum":["simple","moderate","complex"],"description":"Estimated test complexity (affects timeout)","title":"RunResponseTestPlanComplexity"},"RunResponseTestPlanChangeType":{"type":"string","enum":["frontend","backend","mixed","infra"],"description":"Classify this PR: frontend = UI/component changes, backend = API/DB/service changes with no visible UI effect, mixed = both, infra = CI/config/docs only","title":"RunResponseTestPlanChangeType"},"RunResponseTestPlanStepsItemsOneOf0Type":{"type":"string","enum":["act"],"description":"Perform an action","title":"RunResponseTestPlanStepsItemsOneOf0Type"},"RunResponseTestPlanStepsItems0":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500,"description":"Concise description of what to do or verify"},"type":{"$ref":"#/components/schemas/RunResponseTestPlanStepsItemsOneOf0Type","description":"Perform an action"}},"required":["title","type"],"title":"RunResponseTestPlanStepsItems0"},"RunResponseTestPlanStepsItemsOneOf1Type":{"type":"string","enum":["assert"],"description":"Verify a condition","title":"RunResponseTestPlanStepsItemsOneOf1Type"},"RunResponseTestPlanStepsItems1":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500,"description":"Concise description of what to do or verify"},"type":{"$ref":"#/components/schemas/RunResponseTestPlanStepsItemsOneOf1Type","description":"Verify a condition"}},"required":["title","type"],"title":"RunResponseTestPlanStepsItems1"},"RunResponseTestPlanStepsItemsOneOf2Type":{"type":"string","enum":["login"],"description":"Authenticate using a credential","title":"RunResponseTestPlanStepsItemsOneOf2Type"},"RunResponseTestPlanStepsItems2":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500,"description":"Concise description of the login step"},"type":{"$ref":"#/components/schemas/RunResponseTestPlanStepsItemsOneOf2Type","description":"Authenticate using a credential"},"credentialId":{"type":"string","description":"ID of the credential to use"},"temporaryEmail":{"type":"boolean","description":"Set to true to create a temporary email inbox at run time"}},"required":["title","type"],"title":"RunResponseTestPlanStepsItems2"},"RunResponseTestPlanStepsItemsOneOf3Type":{"type":"string","enum":["screenshot"],"description":"Capture visual evidence of the current page state","title":"RunResponseTestPlanStepsItemsOneOf3Type"},"RunResponseTestPlanStepsItems3":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500,"description":"Description of what page state to capture"},"type":{"$ref":"#/components/schemas/RunResponseTestPlanStepsItemsOneOf3Type","description":"Capture visual evidence of the current page state"}},"required":["title","type"],"title":"RunResponseTestPlanStepsItems3"},"RunResponseTestPlanStepsItems":{"oneOf":[{"$ref":"#/components/schemas/RunResponseTestPlanStepsItems0"},{"$ref":"#/components/schemas/RunResponseTestPlanStepsItems1"},{"$ref":"#/components/schemas/RunResponseTestPlanStepsItems2"},{"$ref":"#/components/schemas/RunResponseTestPlanStepsItems3"}],"title":"RunResponseTestPlanStepsItems"},"RunResponseTestPlanExecutionConfigViewport":{"type":"object","properties":{"width":{"type":"integer","minimum":320,"maximum":3840},"height":{"type":"integer","minimum":240,"maximum":2160}},"required":["width","height"],"title":"RunResponseTestPlanExecutionConfigViewport"},"RunResponseTestPlanExecutionConfig":{"type":"object","properties":{"viewport":{"$ref":"#/components/schemas/RunResponseTestPlanExecutionConfigViewport"}},"description":"Pre-run execution configuration selected by the planner.","title":"RunResponseTestPlanExecutionConfig"},"RunResponseTestPlan":{"type":"object","properties":{"instructions":{"type":"string","description":"Natural language instructions for the QA agent"},"focusAreas":{"type":"array","items":{"type":"string"},"description":"Focus areas derived from changed files"},"complexity":{"$ref":"#/components/schemas/RunResponseTestPlanComplexity","description":"Estimated test complexity (affects timeout)"},"changeType":{"$ref":"#/components/schemas/RunResponseTestPlanChangeType","description":"Classify this PR: frontend = UI/component changes, backend = API/DB/service changes with no visible UI effect, mixed = both, infra = CI/config/docs only"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/RunResponseTestPlanStepsItems"},"description":"Ordered list of concrete test steps the agent must execute one-by-one"},"executionConfig":{"$ref":"#/components/schemas/RunResponseTestPlanExecutionConfig","description":"Pre-run execution configuration selected by the planner."}},"required":["instructions","focusAreas","complexity","changeType","steps"],"description":"Generated test plan (CI runs only)","title":"RunResponseTestPlan"},"RunResponseError":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable error code"},"message":{"type":"string","description":"Human-readable error message"},"stage":{"type":"string","description":"Run lifecycle stage where the error occurred (e.g. provider_acquisition)"},"retryable":{"type":"boolean","description":"Whether re-running the test could succeed without changes"}},"required":["code","message"],"description":"Error details when failed","title":"RunResponseError"},"RunResponseWebhookStatus":{"type":"string","enum":["pending","delivered","failed"],"description":"Webhook delivery status","title":"RunResponseWebhookStatus"},"StepResultStatus":{"type":"string","enum":["pending","running","passed","failed","skipped","cancelled"],"description":"Step execution status","title":"StepResultStatus"},"StepResultErrorCode":{"type":"string","enum":["AUTH_CREDENTIAL_UNAVAILABLE","AUTH_CREDENTIAL_INVALID","AUTH_BASIC_REQUIRED","VERCEL_BYPASS_REQUIRED","ENVIRONMENT_UNAVAILABLE","SEED_DATA_MISSING","MOBILE_RELEASE_BUILD_REQUIRED","VIEWPORT_RESIZE_UNSUPPORTED","STEP_TOOL_LIMIT_EXHAUSTED","STEP_DEADLINE_EXHAUSTED","STEP_NO_CONCLUSION"],"description":"Machine-readable step failure code","title":"StepResultErrorCode"},"StepResult":{"type":"object","properties":{"stepIndex":{"type":"integer","description":"Zero-based index of the saved test step"},"status":{"$ref":"#/components/schemas/StepResultStatus","description":"Step execution status"},"startedAt":{"type":["string","null"],"description":"ISO timestamp when the step started"},"completedAt":{"type":["string","null"],"description":"ISO timestamp when the step completed"},"error":{"type":["string","null"],"description":"Human-readable step failure description"},"errorCode":{"oneOf":[{"$ref":"#/components/schemas/StepResultErrorCode"},{"type":"null"}],"description":"Machine-readable step failure code"},"summary":{"type":["string","null"],"description":"Agent summary of what happened"},"retried":{"type":"boolean","description":"Whether the step was retried"},"startedAtMs":{"type":["integer","null"],"description":"Milliseconds elapsed since recording reference when the step started"},"completedAtMs":{"type":["integer","null"],"description":"Milliseconds elapsed since recording reference when the step completed"}},"required":["stepIndex","status","startedAt","completedAt","error","retried"],"title":"StepResult"},"RunResponseExecutionMode":{"type":"string","enum":["fast","deep"],"description":"Execution mode used for this run","title":"RunResponseExecutionMode"},"RunResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique run identifier"},"type":{"$ref":"#/components/schemas/RunResponseType","description":"Run type"},"status":{"$ref":"#/components/schemas/RunResponseStatus","description":"Current run status"},"platform":{"oneOf":[{"$ref":"#/components/schemas/RunResponsePlatform"},{"type":"null"}],"description":"Target platform"},"deviceModel":{"oneOf":[{"$ref":"#/components/schemas/RunResponseDeviceModel"},{"type":"null"}],"description":"Non-default mobile device variant within the run platform (e.g. ipad on iOS). Null means the platform default phone-sized device; explicitly requested defaults are stored as null."},"source":{"oneOf":[{"$ref":"#/components/schemas/RunResponseSource"},{"type":"null"}],"description":"Run source"},"projectId":{"type":["string","null"],"format":"uuid","description":"Linked project ID"},"input":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Original request input"},"output":{"$ref":"#/components/schemas/RunResponseOutput","description":"Run output when completed or skipped"},"testPlan":{"oneOf":[{"$ref":"#/components/schemas/RunResponseTestPlan"},{"type":"null"}],"description":"Generated test plan (CI runs only)"},"error":{"oneOf":[{"$ref":"#/components/schemas/RunResponseError"},{"type":"null"}],"description":"Error details when failed"},"durationMs":{"type":["number","null"],"format":"double","description":"Execution time in milliseconds"},"webhookUrl":{"type":["string","null"],"format":"uri","description":"Webhook delivery URL"},"webhookStatus":{"oneOf":[{"$ref":"#/components/schemas/RunResponseWebhookStatus"},{"type":"null"}],"description":"Webhook delivery status"},"testId":{"type":["string","null"],"format":"uuid","description":"Linked test ID"},"stepResults":{"type":["array","null"],"items":{"$ref":"#/components/schemas/StepResult"},"description":"Step-level results for structured test runs"},"userName":{"type":["string","null"],"description":"Display name of the user who triggered the run"},"externalRef":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"External integration metadata (e.g. GitHub PR/deployment IDs)"},"executionMode":{"oneOf":[{"$ref":"#/components/schemas/RunResponseExecutionMode"},{"type":"null"}],"description":"Execution mode used for this run"},"autoRetryCount":{"type":["integer","null"],"description":"Number of times the run was automatically retried after a temporary failure. Failed attempts are not counted toward usage."},"createdAt":{"type":"string","format":"date-time","description":"When the run was created"},"startedAt":{"type":["string","null"],"format":"date-time","description":"When execution started"},"completedAt":{"type":["string","null"],"format":"date-time","description":"When execution finished"}},"required":["id","type","status","input","createdAt"],"title":"RunResponse"},"RunListResponse":{"type":"object","properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/RunResponse"},"description":"List of runs"},"nextCursor":{"type":["string","null"],"description":"Cursor for fetching the next page"}},"required":["runs"],"title":"RunListResponse"},"ListTestRunsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestRunsRequestBadRequestError"},"ListTestRunsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestRunsRequestUnauthorizedError"},"ListTestRunsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestRunsRequestTooManyRequestsError"},"ListTestRunsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestRunsRequestInternalServerError"},"ListTestRunsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ListTestRunsRequestGatewayTimeoutError"},"GetTestRunStatusRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestBadRequestError"},"GetTestRunStatusRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestUnauthorizedError"},"GetTestRunStatusRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestNotFoundError"},"GetTestRunStatusRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestTooManyRequestsError"},"GetTestRunStatusRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestInternalServerError"},"GetTestRunStatusRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetTestRunStatusRequestGatewayTimeoutError"},"RunMessageRole":{"type":"string","enum":["user","assistant"],"description":"Message author","title":"RunMessageRole"},"RunMessageTextPartType":{"type":"string","enum":["text","reasoning"],"description":"What the agent said or reasoned","title":"RunMessageTextPartType"},"RunMessageTextPart":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/RunMessageTextPartType","description":"What the agent said or reasoned"},"text":{"type":"string","description":"Agent text"}},"required":["type","text"],"title":"RunMessageTextPart"},"RunMessageToolPartType":{"type":"string","enum":["tool"],"title":"RunMessageToolPartType"},"RunMessageToolPartStatus":{"type":"string","enum":["completed","error","pending"],"description":"Tool call outcome; absent on redacted calls","title":"RunMessageToolPartStatus"},"RunMessageToolPart":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/RunMessageToolPartType"},"toolName":{"type":"string","description":"Tool the agent called (e.g. ui_navigate, ui_click)"},"status":{"$ref":"#/components/schemas/RunMessageToolPartStatus","description":"Tool call outcome; absent on redacted calls"},"summary":{"type":"string","description":"One-line human-readable description of what the tool call did; read these in order to follow the run without parsing raw payloads"},"input":{"oneOf":[{"description":"Any type"},{"type":"null"}],"description":"Tool call input"},"output":{"oneOf":[{"description":"Any type"},{"type":"null"}],"description":"Tool call output when the call completed"},"errorText":{"type":"string","description":"Failure description when the call errored"},"redacted":{"type":"boolean","description":"True when a credential-bearing tool call was redacted"}},"required":["type","toolName"],"title":"RunMessageToolPart"},"RunMessagePartsItems":{"oneOf":[{"$ref":"#/components/schemas/RunMessageTextPart"},{"$ref":"#/components/schemas/RunMessageToolPart"}],"title":"RunMessagePartsItems"},"RunMessage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Message ID"},"role":{"$ref":"#/components/schemas/RunMessageRole","description":"Message author"},"parts":{"type":"array","items":{"$ref":"#/components/schemas/RunMessagePartsItems"},"description":"Ordered transcript parts: `text`/`reasoning` entries carry what the agent said, `tool` entries carry each tool call with its input and output."},"createdAt":{"type":"string","format":"date-time","description":"When the message was recorded"}},"required":["id","role","parts","createdAt"],"title":"RunMessage"},"RunMessagesResponse":{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/RunMessage"},"description":"Full agent transcript ordered by creation time"}},"required":["messages"],"title":"RunMessagesResponse"},"GetRunAgentTranscriptRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestBadRequestError"},"GetRunAgentTranscriptRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestUnauthorizedError"},"GetRunAgentTranscriptRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestNotFoundError"},"GetRunAgentTranscriptRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestTooManyRequestsError"},"GetRunAgentTranscriptRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestInternalServerError"},"GetRunAgentTranscriptRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunAgentTranscriptRequestGatewayTimeoutError"},"RunTelemetryResponseVersion":{"type":"string","enum":["1"],"description":"Telemetry payload schema version","title":"RunTelemetryResponseVersion"},"RunTelemetryConsoleEntryType":{"type":"string","enum":["console_log","console_error"],"description":"Entry kind","title":"RunTelemetryConsoleEntryType"},"RunTelemetryConsoleEntry":{"type":"object","properties":{"seq":{"type":"integer","description":"Monotonic sequence number across console and network entries"},"ts":{"type":"string","description":"ISO timestamp of the entry"},"type":{"$ref":"#/components/schemas/RunTelemetryConsoleEntryType","description":"Entry kind"},"level":{"type":"string","description":"Console level (log, info, warning, error, debug, ...)"},"text":{"type":"string","description":"Console message text"},"args":{"type":"array","items":{"type":"string"},"description":"Stringified console arguments"},"url":{"type":"string","description":"Page URL when the entry was emitted"},"sourceUrl":{"type":"string","description":"Script URL that emitted the entry"},"line":{"type":"integer"},"column":{"type":"integer"},"stack":{"type":"string","description":"Stack trace for errors"}},"required":["seq","ts","type","level","text"],"title":"RunTelemetryConsoleEntry"},"RunTelemetryNetworkEntryFailure":{"type":"object","properties":{"errorText":{"type":"string"},"canceled":{"type":"boolean"}},"description":"Present when the request failed before receiving a response","title":"RunTelemetryNetworkEntryFailure"},"RunTelemetryNetworkEntry":{"type":"object","properties":{"seq":{"type":"integer","description":"Monotonic sequence number across console and network entries"},"ts":{"type":"string","description":"ISO timestamp of the request"},"requestId":{"type":"string","description":"Browser request identifier"},"url":{"type":"string","description":"Request URL (credential query params redacted)"},"method":{"type":"string","description":"HTTP method"},"resourceType":{"type":"string","description":"Browser resource type (document, fetch, xhr, ...)"},"status":{"type":"integer","description":"HTTP response status"},"statusText":{"type":"string"},"mimeType":{"type":"string"},"durationMs":{"type":"number","format":"double","description":"Request duration in milliseconds"},"requestHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Allowlisted request headers"},"responseHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Allowlisted response headers"},"requestBody":{"type":"string","description":"JSON request body preview with secrets redacted (fetch/XHR only, truncated)"},"responseBody":{"type":"string","description":"JSON response body preview with secrets redacted (fetch/XHR only, truncated)"},"failure":{"$ref":"#/components/schemas/RunTelemetryNetworkEntryFailure","description":"Present when the request failed before receiving a response"}},"required":["seq","ts","requestId","url"],"title":"RunTelemetryNetworkEntry"},"RunTelemetryResponseCounts":{"type":"object","properties":{"console":{"type":"integer","description":"Console entries captured"},"network":{"type":"integer","description":"Network entries captured"},"droppedConsole":{"type":"integer","description":"Console entries dropped after the buffer cap"},"droppedNetwork":{"type":"integer","description":"Network entries dropped after the buffer cap"}},"required":["console","network","droppedConsole","droppedNetwork"],"description":"Capture counts including entries dropped by ring-buffer limits","title":"RunTelemetryResponseCounts"},"RunTelemetryResponse":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/RunTelemetryResponseVersion","description":"Telemetry payload schema version"},"console":{"type":"array","items":{"$ref":"#/components/schemas/RunTelemetryConsoleEntry"},"description":"Browser console entries in capture order"},"network":{"type":"array","items":{"$ref":"#/components/schemas/RunTelemetryNetworkEntry"},"description":"Network requests in capture order (document, fetch, and XHR prioritized)"},"counts":{"$ref":"#/components/schemas/RunTelemetryResponseCounts","description":"Capture counts including entries dropped by ring-buffer limits"}},"required":["version","console","network","counts"],"title":"RunTelemetryResponse"},"GetRunConsoleAndNetworkLogsRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestBadRequestError"},"GetRunConsoleAndNetworkLogsRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestUnauthorizedError"},"GetRunConsoleAndNetworkLogsRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestNotFoundError"},"GetRunConsoleAndNetworkLogsRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestTooManyRequestsError"},"GetRunConsoleAndNetworkLogsRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestInternalServerError"},"GetRunConsoleAndNetworkLogsRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunConsoleAndNetworkLogsRequestGatewayTimeoutError"},"GetRunScreenRecordingRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestBadRequestError"},"GetRunScreenRecordingRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestUnauthorizedError"},"GetRunScreenRecordingRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestNotFoundError"},"GetRunScreenRecordingRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestTooManyRequestsError"},"GetRunScreenRecordingRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestInternalServerError"},"GetRunScreenRecordingRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetRunScreenRecordingRequestGatewayTimeoutError"},"Test Runs_getARunRecordingDownloadUrl_Response_200":{"type":"object","properties":{"runId":{"type":"string","format":"uuid"},"fileName":{"type":"string"},"mediaType":{"type":"string"},"sizeBytes":{"type":["number","null"],"format":"double","description":"Recording size in bytes, when R2 reports it"},"downloadUrl":{"type":"string","format":"uri"},"expiresIn":{"type":"number","format":"double","description":"Lifetime of the URL in seconds"},"expiresAt":{"type":"string","format":"date-time"}},"required":["runId","fileName","mediaType","sizeBytes","downloadUrl","expiresIn","expiresAt"],"title":"Test Runs_getARunRecordingDownloadUrl_Response_200"},"GetARunRecordingDownloadUrlRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestBadRequestError"},"GetARunRecordingDownloadUrlRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestUnauthorizedError"},"GetARunRecordingDownloadUrlRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestNotFoundError"},"GetARunRecordingDownloadUrlRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestTooManyRequestsError"},"GetARunRecordingDownloadUrlRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestInternalServerError"},"GetARunRecordingDownloadUrlRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetARunRecordingDownloadUrlRequestGatewayTimeoutError"},"V1RunsIdCancelPostResponsesContentApplicationJsonSchemaStatus":{"type":"string","enum":["cancelled"],"title":"V1RunsIdCancelPostResponsesContentApplicationJsonSchemaStatus"},"Test Runs_cancelAQueuedOrRunningRun_Response_200":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/V1RunsIdCancelPostResponsesContentApplicationJsonSchemaStatus"}},"required":["id","status"],"title":"Test Runs_cancelAQueuedOrRunningRun_Response_200"},"CancelAQueuedOrRunningRunRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestBadRequestError"},"CancelAQueuedOrRunningRunRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestUnauthorizedError"},"CancelAQueuedOrRunningRunRequestConflictError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestConflictError"},"CancelAQueuedOrRunningRunRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestTooManyRequestsError"},"CancelAQueuedOrRunningRunRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestInternalServerError"},"CancelAQueuedOrRunningRunRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningRunRequestGatewayTimeoutError"},"BatchStatusResponseStatus":{"type":"string","enum":["queued","running","completed","failed","cancelled"],"description":"Aggregate batch status: running while any run is in flight, failed when any finished run failed, completed when all finished runs passed, cancelled when every run was cancelled","title":"BatchStatusResponseStatus"},"BatchStatusResponseCounts":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"queued":{"type":"integer","minimum":0},"running":{"type":"integer","minimum":0},"completed":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"cancelled":{"type":"integer","minimum":0}},"required":["total","queued","running","completed","failed","cancelled"],"description":"Run counts by status","title":"BatchStatusResponseCounts"},"BatchStatusRunStatus":{"type":"string","enum":["queued","running","completed","failed","cancelled"],"description":"Run status","title":"BatchStatusRunStatus"},"BatchStatusRunResult":{"type":"string","enum":["PASS","FAILED","BLOCKED"],"description":"Test verdict when the run finished with an output. BLOCKED means an environment or setup problem prevented a product verdict","title":"BatchStatusRunResult"},"BatchStatusRun":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Run ID"},"testId":{"type":["string","null"],"format":"uuid","description":"Saved test the run executed"},"status":{"$ref":"#/components/schemas/BatchStatusRunStatus","description":"Run status"},"result":{"oneOf":[{"$ref":"#/components/schemas/BatchStatusRunResult"},{"type":"null"}],"description":"Test verdict when the run finished with an output. BLOCKED means an environment or setup problem prevented a product verdict"},"errorCode":{"type":["string","null"],"description":"Run error code when execution failed"},"durationMs":{"type":["integer","null"],"description":"Execution time in milliseconds"},"createdAt":{"type":"string","format":"date-time","description":"When the run was created"},"startedAt":{"type":["string","null"],"format":"date-time","description":"When execution started"},"completedAt":{"type":["string","null"],"format":"date-time","description":"When execution finished"}},"required":["id","testId","status","result","errorCode","durationMs","createdAt","startedAt","completedAt"],"title":"BatchStatusRun"},"BatchStatusResponse":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"Batch ID"},"status":{"$ref":"#/components/schemas/BatchStatusResponseStatus","description":"Aggregate batch status: running while any run is in flight, failed when any finished run failed, completed when all finished runs passed, cancelled when every run was cancelled"},"counts":{"$ref":"#/components/schemas/BatchStatusResponseCounts","description":"Run counts by status"},"runs":{"type":"array","items":{"$ref":"#/components/schemas/BatchStatusRun"},"description":"Child runs ordered by creation time"}},"required":["batchId","status","counts","runs"],"title":"BatchStatusResponse"},"GetBatchStatusRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestBadRequestError"},"GetBatchStatusRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestUnauthorizedError"},"GetBatchStatusRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestNotFoundError"},"GetBatchStatusRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestTooManyRequestsError"},"GetBatchStatusRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestInternalServerError"},"GetBatchStatusRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"GetBatchStatusRequestGatewayTimeoutError"},"Test Runs_cancelAQueuedOrRunningBatch_Response_200":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid"},"cancelled":{"type":"integer","minimum":0},"alreadyFinished":{"type":"integer","minimum":0},"cancelledRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"alreadyFinishedRunIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["batchId","cancelled","alreadyFinished","cancelledRunIds","alreadyFinishedRunIds"],"title":"Test Runs_cancelAQueuedOrRunningBatch_Response_200"},"CancelAQueuedOrRunningBatchRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestBadRequestError"},"CancelAQueuedOrRunningBatchRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestUnauthorizedError"},"CancelAQueuedOrRunningBatchRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestNotFoundError"},"CancelAQueuedOrRunningBatchRequestConflictError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"},"batchId":{"type":"string","format":"uuid"},"cancelled":{"type":"integer","minimum":0},"alreadyFinished":{"type":"integer","minimum":0},"cancelledRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"alreadyFinishedRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"failedRunIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["error","message","batchId","cancelled","alreadyFinished","cancelledRunIds","alreadyFinishedRunIds","failedRunIds"],"title":"CancelAQueuedOrRunningBatchRequestConflictError"},"CancelAQueuedOrRunningBatchRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestTooManyRequestsError"},"CancelAQueuedOrRunningBatchRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestInternalServerError"},"CancelAQueuedOrRunningBatchRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"CancelAQueuedOrRunningBatchRequestGatewayTimeoutError"},"V1BatchesBatchIdRerunPostResponsesContentApplicationJsonSchemaStatus":{"type":"string","enum":["queued","cancelled"],"title":"V1BatchesBatchIdRerunPostResponsesContentApplicationJsonSchemaStatus"},"Test Runs_reRunABatch_Response_202":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/V1BatchesBatchIdRerunPostResponsesContentApplicationJsonSchemaStatus"},"groupId":{"type":"string","format":"uuid"},"batchId":{"type":"string","format":"uuid"},"sourceBatchId":{"type":"string","format":"uuid"},"runIds":{"type":"array","items":{"type":"string","format":"uuid"}},"queuedRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"cancelledRunIds":{"type":"array","items":{"type":"string","format":"uuid"}},"skippedTestIds":{"type":"array","items":{"type":"string","format":"uuid"}},"count":{"type":"integer"}},"required":["status","groupId","batchId","sourceBatchId","runIds","queuedRunIds","cancelledRunIds","skippedTestIds","count"],"title":"Test Runs_reRunABatch_Response_202"},"ReRunABatchRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestBadRequestError"},"ReRunABatchRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestUnauthorizedError"},"ReRunABatchRequestNotFoundError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestNotFoundError"},"ReRunABatchRequestConflictError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestConflictError"},"ReRunABatchRequestTooManyRequestsError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestTooManyRequestsError"},"ReRunABatchRequestInternalServerError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestInternalServerError"},"ReRunABatchRequestGatewayTimeoutError":{"type":"object","properties":{"error":{"type":"string","description":"Error code or type"},"message":{"type":"string","description":"Human-readable error message"}},"required":["error","message"],"title":"ReRunABatchRequestGatewayTimeoutError"}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key authentication using Bearer token format"}}}}