List test runs
GET
/v1/test-plans/runsHow to call this endpoint
Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.
Path, query, and header parameters
These parameters control which ACP object the endpoint acts on and how the request is processed.
Path parameters
None.
Query parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| testPlanId | query | string | No | — |
| projectId | query | string | No | — |
| status | query | string | No | — |
| offset | query | integer | No | — |
| limit | query | integer | No | — |
Body schema
This endpoint does not require a request body.
None.
What the API returns
Each response code below includes the documented payload shape for the ACP API.
200Organization-scoped test runsapplication/json
| Field | Type | Required | Description |
|---|---|---|---|
| object | list | Yes | — |
| hasMore | boolean | No | — |
| nextOffset | integer | No | — |
| data | object[] | Yes | — |
| data[].id | string | Yes | Unique identifier. |
| data[].testPlanId | string | Yes | — |
| data[].versionId | string | Yes | — |
| data[].projectId | string | Yes | Project ID. |
| data[].taskId | string | Yes | — |
| data[].releaseId | string | Yes | — |
| data[].environmentId | string | Yes | Computer ID. |
| data[].agentId | string | Yes | Agent ID. |
| data[].triggerType | manual | mission_control | task | release | pull_request | schedule | api | Yes | — |
| data[].commitSha | string | Yes | — |
| data[].status | queued | running | passed | failed | completed_with_errors | cancelled | Yes | Current lifecycle status. |
| data[].executionStatus | queued | running | completed | cancelled | Yes | — |
| data[].verdict | passed | failed | error | cancelled | Yes | — |
| data[].executionType | preview | published | imported | Yes | — |
| data[].totalCount | integer | Yes | — |
| data[].passedCount | integer | Yes | — |
| data[].failedCount | integer | Yes | — |
| data[].skippedCount | integer | Yes | — |
| data[].errorCount | integer | Yes | — |
| data[].durationMs | integer | Yes | — |
| data[].evidence | object | Yes | — |
| data[].evidence.schemaVersion | computer_agents_test_run_evidence_v2 | Yes | — |
| data[].evidence.runId | string | Yes | — |
| data[].evidence.planId | string | Yes | — |
| data[].evidence.planVersionId | string | Yes | — |
| data[].evidence.planFingerprint | string | Yes | — |
| data[].evidence.commitSha | string | Yes | — |
| data[].evidence.status | queued | running | passed | failed | completed_with_errors | cancelled | Yes | Current lifecycle status. |
| data[].evidence.expectedCaseIds | string[] | Yes | — |
| data[].evidence.counts | object | Yes | — |
| data[].evidence.counts.total | integer | Yes | — |
| data[].evidence.counts.passed | integer | Yes | — |
| data[].evidence.counts.failed | integer | Yes | — |
| data[].evidence.counts.skipped | integer | Yes | — |
| data[].evidence.counts.error | integer | Yes | — |
| data[].evidence.executionContext | object | Yes | — |
| data[].evidence.executionContext.environmentId | string | Yes | Computer ID. |
| data[].evidence.executionContext.agentId | string | Yes | Agent ID. |
| data[].evidence.executionContext.projectId | string | Yes | Project ID. |
| data[].evidence.executionContext.taskId | string | Yes | — |
| data[].evidence.executionContext.releaseId | string | Yes | — |
| data[].evidence.generatedAt | string | Yes | — |
| data[].evidence.resultSetFingerprint | string | Yes | — |
| data[].evidence.artifactSetFingerprint | string | Yes | — |
| data[].evidence.provenance | object | Yes | Self-reported provenance must be unverified with no attestation. Verified-worker provenance is accepted only when the server-verified attestation binds every canonical evidence identity and digest. |
| data[].evidence.provenance.schemaVersion | computer_agents_test_run_evidence_provenance_v1 | Yes | — |
| data[].evidence.provenance.source | computer_agents_thread | execution_worker | api_client | legacy_import | Yes | — |
| data[].evidence.provenance.trustLevel | self_reported | verified_worker | Yes | — |
| data[].evidence.provenance.verificationStatus | unverified | verified | Yes | — |
| data[].evidence.provenance.executor | object | Yes | — |
| data[].evidence.provenance.executor.kind | string | Yes | — |
| data[].evidence.provenance.executor.id | string | Yes | Unique identifier. |
| data[].evidence.provenance.attestation | object | Yes | — |
| data[].evidence.provenance.attestation.schemaVersion | computer_agents_test_execution_attestation_v1 | Yes | — |
| data[].evidence.provenance.attestation.attestationId | string | Yes | — |
| data[].evidence.provenance.attestation.workerId | string | Yes | — |
| data[].evidence.provenance.attestation.dispatchId | string | Yes | — |
| data[].evidence.provenance.attestation.workerAssertionId | string | Yes | — |
| data[].evidence.provenance.attestation.runId | string | Yes | — |
| data[].evidence.provenance.attestation.planId | string | Yes | — |
| data[].evidence.provenance.attestation.planVersionId | string | Yes | — |
| data[].evidence.provenance.attestation.planFingerprint | string | Yes | — |
| data[].evidence.provenance.attestation.commitSha | string | Yes | — |
| data[].evidence.provenance.attestation.environmentId | string | Yes | Computer ID. |
| data[].evidence.provenance.attestation.resultSetFingerprint | string | Yes | — |
| data[].evidence.provenance.attestation.artifactSetFingerprint | string | Yes | — |
| data[].evidence.provenance.attestation.issuedAt | string | Yes | — |
| data[].evidence.provenance.attestation.verifiedAt | string | Yes | — |
| data[].evidence.results | object[] | Yes | — |
| data[].evidence.results[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].testRunId | string | Yes | — |
| data[].evidence.results[].caseId | string | Yes | — |
| data[].evidence.results[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempt | integer | Yes | — |
| data[].evidence.results[].durationMs | integer | Yes | — |
| data[].evidence.results[].exitCode | integer | Yes | — |
| data[].evidence.results[].summary | string | Yes | — |
| data[].evidence.results[].diagnostics | object | Yes | — |
| data[].evidence.results[].evidence | object | Yes | — |
| data[].evidence.results[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts | object[] | No | — |
| data[].evidence.results[].attempts[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].attempts[].testRunId | string | Yes | — |
| data[].evidence.results[].attempts[].caseId | string | Yes | — |
| data[].evidence.results[].attempts[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempts[].attempt | integer | Yes | — |
| data[].evidence.results[].attempts[].durationMs | integer | Yes | — |
| data[].evidence.results[].attempts[].exitCode | integer | Yes | — |
| data[].evidence.results[].attempts[].summary | string | Yes | — |
| data[].evidence.results[].attempts[].diagnostics | object | Yes | — |
| data[].evidence.results[].attempts[].evidence | object | Yes | — |
| data[].evidence.results[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attempts[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts[].attempts | object[] | No | — |
| data[].evidence.results[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].caseId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].summary | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].evidence | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts | object[] | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].evidence.artifacts | object[] | Yes | — |
| data[].evidence.artifacts[].id | string | Yes | Unique identifier. |
| data[].evidence.artifacts[].testRunId | string | Yes | — |
| data[].evidence.artifacts[].testCaseResultId | string | Yes | — |
| data[].evidence.artifacts[].type | string | Yes | — |
| data[].evidence.artifacts[].name | string | Yes | Human-readable name. |
| data[].evidence.artifacts[].uri | string | Yes | — |
| data[].evidence.artifacts[].contentType | string | Yes | — |
| data[].evidence.artifacts[].sizeBytes | integer | Yes | — |
| data[].evidence.artifacts[].sha256 | string | Yes | — |
| data[].evidence.artifacts[].metadata | object | Yes | Free-form metadata object. |
| data[].evidence.artifacts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].evidence.fingerprint | string | Yes | — |
| data[].metadata | object | Yes | Free-form metadata object. |
| data[].execution | object | Yes | — |
| data[].execution.owner | string | Yes | — |
| data[].execution.attempt | integer | Yes | — |
| data[].execution.leaseExpiresAt | string | Yes | — |
| data[].execution.heartbeatAt | string | Yes | — |
| data[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results | object[] | No | — |
| data[].results[].id | string | Yes | Unique identifier. |
| data[].results[].testRunId | string | Yes | — |
| data[].results[].caseId | string | Yes | — |
| data[].results[].name | string | Yes | Human-readable name. |
| data[].results[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempt | integer | Yes | — |
| data[].results[].durationMs | integer | Yes | — |
| data[].results[].exitCode | integer | Yes | — |
| data[].results[].summary | string | Yes | — |
| data[].results[].diagnostics | object | Yes | — |
| data[].results[].evidence | object | Yes | — |
| data[].results[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attemptCount | integer | No | — |
| data[].results[].attempts | object[] | No | — |
| data[].results[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts | object[] | No | — |
| data[].results[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts[].attempts | object[] | No | — |
| data[].results[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts | object[] | No | — |
| data[].resultAttempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].caseId | string | Yes | — |
| data[].resultAttempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].summary | string | Yes | — |
| data[].resultAttempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].evidence | object | Yes | — |
| data[].resultAttempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| data[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| data[].artifacts | object[] | No | — |
| data[].artifacts[].id | string | Yes | Unique identifier. |
| data[].artifacts[].testRunId | string | Yes | — |
| data[].artifacts[].testCaseResultId | string | Yes | — |
| data[].artifacts[].type | string | Yes | — |
| data[].artifacts[].name | string | Yes | Human-readable name. |
| data[].artifacts[].uri | string | Yes | — |
| data[].artifacts[].contentType | string | Yes | — |
| data[].artifacts[].sizeBytes | integer | Yes | — |
| data[].artifacts[].sha256 | string | Yes | — |
| data[].artifacts[].metadata | object | Yes | Free-form metadata object. |
| data[].artifacts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns | object[] | Yes | — |
| testRuns[].id | string | Yes | Unique identifier. |
| testRuns[].testPlanId | string | Yes | — |
| testRuns[].versionId | string | Yes | — |
| testRuns[].projectId | string | Yes | Project ID. |
| testRuns[].taskId | string | Yes | — |
| testRuns[].releaseId | string | Yes | — |
| testRuns[].environmentId | string | Yes | Computer ID. |
| testRuns[].agentId | string | Yes | Agent ID. |
| testRuns[].triggerType | manual | mission_control | task | release | pull_request | schedule | api | Yes | — |
| testRuns[].commitSha | string | Yes | — |
| testRuns[].status | queued | running | passed | failed | completed_with_errors | cancelled | Yes | Current lifecycle status. |
| testRuns[].executionStatus | queued | running | completed | cancelled | Yes | — |
| testRuns[].verdict | passed | failed | error | cancelled | Yes | — |
| testRuns[].executionType | preview | published | imported | Yes | — |
| testRuns[].totalCount | integer | Yes | — |
| testRuns[].passedCount | integer | Yes | — |
| testRuns[].failedCount | integer | Yes | — |
| testRuns[].skippedCount | integer | Yes | — |
| testRuns[].errorCount | integer | Yes | — |
| testRuns[].durationMs | integer | Yes | — |
| testRuns[].evidence | object | Yes | — |
| testRuns[].evidence.schemaVersion | computer_agents_test_run_evidence_v2 | Yes | — |
| testRuns[].evidence.runId | string | Yes | — |
| testRuns[].evidence.planId | string | Yes | — |
| testRuns[].evidence.planVersionId | string | Yes | — |
| testRuns[].evidence.planFingerprint | string | Yes | — |
| testRuns[].evidence.commitSha | string | Yes | — |
| testRuns[].evidence.status | queued | running | passed | failed | completed_with_errors | cancelled | Yes | Current lifecycle status. |
| testRuns[].evidence.expectedCaseIds | string[] | Yes | — |
| testRuns[].evidence.counts | object | Yes | — |
| testRuns[].evidence.counts.total | integer | Yes | — |
| testRuns[].evidence.counts.passed | integer | Yes | — |
| testRuns[].evidence.counts.failed | integer | Yes | — |
| testRuns[].evidence.counts.skipped | integer | Yes | — |
| testRuns[].evidence.counts.error | integer | Yes | — |
| testRuns[].evidence.executionContext | object | Yes | — |
| testRuns[].evidence.executionContext.environmentId | string | Yes | Computer ID. |
| testRuns[].evidence.executionContext.agentId | string | Yes | Agent ID. |
| testRuns[].evidence.executionContext.projectId | string | Yes | Project ID. |
| testRuns[].evidence.executionContext.taskId | string | Yes | — |
| testRuns[].evidence.executionContext.releaseId | string | Yes | — |
| testRuns[].evidence.generatedAt | string | Yes | — |
| testRuns[].evidence.resultSetFingerprint | string | Yes | — |
| testRuns[].evidence.artifactSetFingerprint | string | Yes | — |
| testRuns[].evidence.provenance | object | Yes | Self-reported provenance must be unverified with no attestation. Verified-worker provenance is accepted only when the server-verified attestation binds every canonical evidence identity and digest. |
| testRuns[].evidence.provenance.schemaVersion | computer_agents_test_run_evidence_provenance_v1 | Yes | — |
| testRuns[].evidence.provenance.source | computer_agents_thread | execution_worker | api_client | legacy_import | Yes | — |
| testRuns[].evidence.provenance.trustLevel | self_reported | verified_worker | Yes | — |
| testRuns[].evidence.provenance.verificationStatus | unverified | verified | Yes | — |
| testRuns[].evidence.provenance.executor | object | Yes | — |
| testRuns[].evidence.provenance.executor.kind | string | Yes | — |
| testRuns[].evidence.provenance.executor.id | string | Yes | Unique identifier. |
| testRuns[].evidence.provenance.attestation | object | Yes | — |
| testRuns[].evidence.provenance.attestation.schemaVersion | computer_agents_test_execution_attestation_v1 | Yes | — |
| testRuns[].evidence.provenance.attestation.attestationId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.workerId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.dispatchId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.workerAssertionId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.runId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.planId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.planVersionId | string | Yes | — |
| testRuns[].evidence.provenance.attestation.planFingerprint | string | Yes | — |
| testRuns[].evidence.provenance.attestation.commitSha | string | Yes | — |
| testRuns[].evidence.provenance.attestation.environmentId | string | Yes | Computer ID. |
| testRuns[].evidence.provenance.attestation.resultSetFingerprint | string | Yes | — |
| testRuns[].evidence.provenance.attestation.artifactSetFingerprint | string | Yes | — |
| testRuns[].evidence.provenance.attestation.issuedAt | string | Yes | — |
| testRuns[].evidence.provenance.attestation.verifiedAt | string | Yes | — |
| testRuns[].evidence.results | object[] | Yes | — |
| testRuns[].evidence.results[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].caseId | string | Yes | — |
| testRuns[].evidence.results[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].summary | string | Yes | — |
| testRuns[].evidence.results[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].evidence | object | Yes | — |
| testRuns[].evidence.results[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts | object[] | No | — |
| testRuns[].evidence.results[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].attempts[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].caseId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempts[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].summary | string | Yes | — |
| testRuns[].evidence.results[].attempts[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].attempts[].evidence | object | Yes | — |
| testRuns[].evidence.results[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attempts[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts[].attempts | object[] | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].evidence.results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].evidence.artifacts | object[] | Yes | — |
| testRuns[].evidence.artifacts[].id | string | Yes | Unique identifier. |
| testRuns[].evidence.artifacts[].testRunId | string | Yes | — |
| testRuns[].evidence.artifacts[].testCaseResultId | string | Yes | — |
| testRuns[].evidence.artifacts[].type | string | Yes | — |
| testRuns[].evidence.artifacts[].name | string | Yes | Human-readable name. |
| testRuns[].evidence.artifacts[].uri | string | Yes | — |
| testRuns[].evidence.artifacts[].contentType | string | Yes | — |
| testRuns[].evidence.artifacts[].sizeBytes | integer | Yes | — |
| testRuns[].evidence.artifacts[].sha256 | string | Yes | — |
| testRuns[].evidence.artifacts[].metadata | object | Yes | Free-form metadata object. |
| testRuns[].evidence.artifacts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].evidence.fingerprint | string | Yes | — |
| testRuns[].metadata | object | Yes | Free-form metadata object. |
| testRuns[].execution | object | Yes | — |
| testRuns[].execution.owner | string | Yes | — |
| testRuns[].execution.attempt | integer | Yes | — |
| testRuns[].execution.leaseExpiresAt | string | Yes | — |
| testRuns[].execution.heartbeatAt | string | Yes | — |
| testRuns[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results | object[] | No | — |
| testRuns[].results[].id | string | Yes | Unique identifier. |
| testRuns[].results[].testRunId | string | Yes | — |
| testRuns[].results[].caseId | string | Yes | — |
| testRuns[].results[].name | string | Yes | Human-readable name. |
| testRuns[].results[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempt | integer | Yes | — |
| testRuns[].results[].durationMs | integer | Yes | — |
| testRuns[].results[].exitCode | integer | Yes | — |
| testRuns[].results[].summary | string | Yes | — |
| testRuns[].results[].diagnostics | object | Yes | — |
| testRuns[].results[].evidence | object | Yes | — |
| testRuns[].results[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attemptCount | integer | No | — |
| testRuns[].results[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].results[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts | object[] | No | — |
| testRuns[].resultAttempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].id | string | Yes | Unique identifier. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].testRunId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].caseId | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].name | string | Yes | Human-readable name. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].kind | command | contract | integration | browser | agent | security | custom | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].status | queued | running | passed | failed | skipped | error | Yes | Current lifecycle status. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempt | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].durationMs | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].exitCode | integer | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].summary | string | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].diagnostics | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].evidence | object | Yes | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].startedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].completedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].createdAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].updatedAt | string | Yes | ISO 8601 timestamp. |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].classification | queued | running | passed | failed | skipped | error | flaky | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attemptCount | integer | No | — |
| testRuns[].resultAttempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts[].attempts | object[] | No | — |
| testRuns[].artifacts | object[] | No | — |
| testRuns[].artifacts[].id | string | Yes | Unique identifier. |
| testRuns[].artifacts[].testRunId | string | Yes | — |
| testRuns[].artifacts[].testCaseResultId | string | Yes | — |
| testRuns[].artifacts[].type | string | Yes | — |
| testRuns[].artifacts[].name | string | Yes | Human-readable name. |
| testRuns[].artifacts[].uri | string | Yes | — |
| testRuns[].artifacts[].contentType | string | Yes | — |
| testRuns[].artifacts[].sizeBytes | integer | Yes | — |
| testRuns[].artifacts[].sha256 | string | Yes | — |
| testRuns[].artifacts[].metadata | object | Yes | Free-form metadata object. |
| testRuns[].artifacts[].createdAt | string | Yes | ISO 8601 timestamp. |