Get a test plan with versions and recent runs

GET/v1/test-plans/{testPlanId}

How 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
NameLocationTypeRequiredDescription
testPlanIdpathstringYes
Query parameters
None.

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.

200Test plan detailapplication/json
FieldTypeRequiredDescription
testPlanobjectYes
testPlan.idstringYesUnique identifier.
testPlan.projectIdstringYesProject ID.
testPlan.namestringYesHuman-readable name.
testPlan.descriptionstringYesHuman-readable description.
testPlan.statusdraft | active | archivedYesCurrent lifecycle status.
testPlan.targetTypeproject | workflow | function | web_app | agent | repository | customYes
testPlan.targetIdstringYes
testPlan.defaultEnvironmentIdstringYes
testPlan.definitionobjectYes
testPlan.definition.schemaVersioncomputer_agents_test_plan_v1Yes
testPlan.definition.setupobjectYes
testPlan.definition.setup.commandstringYes
testPlan.definition.setup.workingDirectorystringYes
testPlan.definition.setup.timeoutMsintegerYes
testPlan.definition.setup.envobjectYes
testPlan.definition.setup.secretRefsstring[]Yes
testPlan.definition.casesobject[]Yes
testPlan.definition.cases[].idstringYesUnique identifier.
testPlan.definition.cases[].namestringYesHuman-readable name.
testPlan.definition.cases[].descriptionstringYesHuman-readable description.
testPlan.definition.cases[].kindcommand | contract | integration | browser | agent | security | customYes
testPlan.definition.cases[].commandstringYes
testPlan.definition.cases[].workingDirectorystringYes
testPlan.definition.cases[].timeoutMsintegerYes
testPlan.definition.cases[].retriesintegerYes
testPlan.definition.cases[].envobjectYes
testPlan.definition.cases[].secretRefsstring[]Yes
testPlan.definition.cases[].requestobjectYesKind-specific structured request. Secrets must be referenced through `secretRefs`.
testPlan.definition.cases[].assertionsobject[]Yes
testPlan.definition.cases[].agentIdstringYesAgent ID.
testPlan.definition.cases[].enabledbooleanYes
testPlan.definition.cases[].tagsstring[]Yes
testPlan.definition.teardownobjectYes
testPlan.definition.teardown.commandstringYes
testPlan.definition.teardown.workingDirectorystringYes
testPlan.definition.teardown.timeoutMsintegerYes
testPlan.definition.teardown.envobjectYes
testPlan.definition.teardown.secretRefsstring[]Yes
testPlan.definition.concurrencyintegerYes
testPlan.definition.stopOnFailurebooleanYes
testPlan.definition.retryPolicyobjectYes
testPlan.definition.retryPolicy.maxAttemptsintegerYes
testPlan.definition.retryPolicy.backoffMsintegerYes
testPlan.definition.evidencePolicyobjectYes
testPlan.definition.evidencePolicy.retainLogsbooleanYes
testPlan.definition.evidencePolicy.retainScreenshotsbooleanYes
testPlan.definition.evidencePolicy.retainTracesbooleanYes
testPlan.definition.evidencePolicy.retainArtifactsbooleanYes
testPlan.definition.evidencePolicy.redactSecretsbooleanYes
testPlan.caseCountintegerYes
testPlan.planFingerprintstringYes
testPlan.publishedVersionIdstringYes
testPlan.metadataobjectYesFree-form metadata object.
testPlan.createdAtstringYesISO 8601 timestamp.
testPlan.updatedAtstringYesISO 8601 timestamp.
testPlan.versionsobject[]No
testPlan.versions[].idstringYesUnique identifier.
testPlan.versions[].testPlanIdstringYes
testPlan.versions[].versionintegerYes
testPlan.versions[].labelstringYes
testPlan.versions[].descriptionstringYesHuman-readable description.
testPlan.versions[].statussaved | publishedYesCurrent lifecycle status.
testPlan.versions[].snapshotobjectYes
testPlan.versions[].snapshot.namestringYesHuman-readable name.
testPlan.versions[].snapshot.descriptionstringYesHuman-readable description.
testPlan.versions[].snapshot.statusdraft | active | archivedYesCurrent lifecycle status.
testPlan.versions[].snapshot.projectIdstringYesProject ID.
testPlan.versions[].snapshot.targetTypeproject | workflow | function | web_app | agent | repository | customYes
testPlan.versions[].snapshot.targetIdstringYes
testPlan.versions[].snapshot.defaultEnvironmentIdstringYes
testPlan.versions[].snapshot.definitionobjectYes
testPlan.versions[].snapshot.definition.schemaVersioncomputer_agents_test_plan_v1Yes
testPlan.versions[].snapshot.definition.setupobjectYes
testPlan.versions[].snapshot.definition.setup.commandstringYes
testPlan.versions[].snapshot.definition.setup.workingDirectorystringYes
testPlan.versions[].snapshot.definition.setup.timeoutMsintegerYes
testPlan.versions[].snapshot.definition.setup.envobjectYes
testPlan.versions[].snapshot.definition.setup.secretRefsstring[]Yes
testPlan.versions[].snapshot.definition.casesobject[]Yes
testPlan.versions[].snapshot.definition.cases[].idstringYesUnique identifier.
testPlan.versions[].snapshot.definition.cases[].namestringYesHuman-readable name.
testPlan.versions[].snapshot.definition.cases[].descriptionstringYesHuman-readable description.
testPlan.versions[].snapshot.definition.cases[].kindcommand | contract | integration | browser | agent | security | customYes
testPlan.versions[].snapshot.definition.cases[].commandstringYes
testPlan.versions[].snapshot.definition.cases[].workingDirectorystringYes
testPlan.versions[].snapshot.definition.cases[].timeoutMsintegerYes
testPlan.versions[].snapshot.definition.cases[].retriesintegerYes
testPlan.versions[].snapshot.definition.cases[].envobjectYes
testPlan.versions[].snapshot.definition.cases[].secretRefsstring[]Yes
testPlan.versions[].snapshot.definition.cases[].requestobjectYesKind-specific structured request. Secrets must be referenced through `secretRefs`.
testPlan.versions[].snapshot.definition.cases[].assertionsobject[]Yes
testPlan.versions[].snapshot.definition.cases[].agentIdstringYesAgent ID.
testPlan.versions[].snapshot.definition.cases[].enabledbooleanYes
testPlan.versions[].snapshot.definition.cases[].tagsstring[]Yes
testPlan.versions[].snapshot.definition.teardownobjectYes
testPlan.versions[].snapshot.definition.teardown.commandstringYes
testPlan.versions[].snapshot.definition.teardown.workingDirectorystringYes
testPlan.versions[].snapshot.definition.teardown.timeoutMsintegerYes
testPlan.versions[].snapshot.definition.teardown.envobjectYes
testPlan.versions[].snapshot.definition.teardown.secretRefsstring[]Yes
testPlan.versions[].snapshot.definition.concurrencyintegerYes
testPlan.versions[].snapshot.definition.stopOnFailurebooleanYes
testPlan.versions[].snapshot.definition.retryPolicyobjectYes
testPlan.versions[].snapshot.definition.retryPolicy.maxAttemptsintegerYes
testPlan.versions[].snapshot.definition.retryPolicy.backoffMsintegerYes
testPlan.versions[].snapshot.definition.evidencePolicyobjectYes
testPlan.versions[].snapshot.definition.evidencePolicy.retainLogsbooleanYes
testPlan.versions[].snapshot.definition.evidencePolicy.retainScreenshotsbooleanYes
testPlan.versions[].snapshot.definition.evidencePolicy.retainTracesbooleanYes
testPlan.versions[].snapshot.definition.evidencePolicy.retainArtifactsbooleanYes
testPlan.versions[].snapshot.definition.evidencePolicy.redactSecretsbooleanYes
testPlan.versions[].snapshot.metadataobjectYesFunctional extension metadata only; ownership and access-control fields are deliberately excluded.
testPlan.versions[].metadataobjectYesFree-form metadata object.
testPlan.versions[].publishedAtstringYes
testPlan.versions[].createdAtstringYesISO 8601 timestamp.
testPlan.versions[].updatedAtstringYesISO 8601 timestamp.
testPlan.runsobject[]No
testPlan.runs[].idstringYesUnique identifier.
testPlan.runs[].testPlanIdstringYes
testPlan.runs[].versionIdstringYes
testPlan.runs[].projectIdstringYesProject ID.
testPlan.runs[].taskIdstringYes
testPlan.runs[].releaseIdstringYes
testPlan.runs[].environmentIdstringYesComputer ID.
testPlan.runs[].agentIdstringYesAgent ID.
testPlan.runs[].triggerTypemanual | mission_control | task | release | pull_request | schedule | apiYes
testPlan.runs[].commitShastringYes
testPlan.runs[].statusqueued | running | passed | failed | completed_with_errors | cancelledYesCurrent lifecycle status.
testPlan.runs[].totalCountintegerYes
testPlan.runs[].passedCountintegerYes
testPlan.runs[].failedCountintegerYes
testPlan.runs[].skippedCountintegerYes
testPlan.runs[].errorCountintegerYes
testPlan.runs[].durationMsintegerYes
testPlan.runs[].evidenceobjectYes
testPlan.runs[].evidence.schemaVersioncomputer_agents_test_run_evidence_v2Yes
testPlan.runs[].evidence.runIdstringYes
testPlan.runs[].evidence.planIdstringYes
testPlan.runs[].evidence.planVersionIdstringYes
testPlan.runs[].evidence.planFingerprintstringYes
testPlan.runs[].evidence.commitShastringYes
testPlan.runs[].evidence.statusqueued | running | passed | failed | completed_with_errors | cancelledYesCurrent lifecycle status.
testPlan.runs[].evidence.expectedCaseIdsstring[]Yes
testPlan.runs[].evidence.countsobjectYes
testPlan.runs[].evidence.counts.totalintegerYes
testPlan.runs[].evidence.counts.passedintegerYes
testPlan.runs[].evidence.counts.failedintegerYes
testPlan.runs[].evidence.counts.skippedintegerYes
testPlan.runs[].evidence.counts.errorintegerYes
testPlan.runs[].evidence.executionContextobjectYes
testPlan.runs[].evidence.executionContext.environmentIdstringYesComputer ID.
testPlan.runs[].evidence.executionContext.agentIdstringYesAgent ID.
testPlan.runs[].evidence.executionContext.projectIdstringYesProject ID.
testPlan.runs[].evidence.executionContext.taskIdstringYes
testPlan.runs[].evidence.executionContext.releaseIdstringYes
testPlan.runs[].evidence.generatedAtstringYes
testPlan.runs[].evidence.resultSetFingerprintstringYes
testPlan.runs[].evidence.artifactSetFingerprintstringYes
testPlan.runs[].evidence.provenanceobjectYesSelf-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.
testPlan.runs[].evidence.provenance.schemaVersioncomputer_agents_test_run_evidence_provenance_v1Yes
testPlan.runs[].evidence.provenance.sourcecomputer_agents_thread | execution_worker | api_client | legacy_importYes
testPlan.runs[].evidence.provenance.trustLevelself_reported | verified_workerYes
testPlan.runs[].evidence.provenance.verificationStatusunverified | verifiedYes
testPlan.runs[].evidence.provenance.executorobjectYes
testPlan.runs[].evidence.provenance.executor.kindstringYes
testPlan.runs[].evidence.provenance.executor.idstringYesUnique identifier.
testPlan.runs[].evidence.provenance.attestationobjectYes
testPlan.runs[].evidence.provenance.attestation.schemaVersioncomputer_agents_test_execution_attestation_v1Yes
testPlan.runs[].evidence.provenance.attestation.attestationIdstringYes
testPlan.runs[].evidence.provenance.attestation.workerIdstringYes
testPlan.runs[].evidence.provenance.attestation.dispatchIdstringYes
testPlan.runs[].evidence.provenance.attestation.workerAssertionIdstringYes
testPlan.runs[].evidence.provenance.attestation.runIdstringYes
testPlan.runs[].evidence.provenance.attestation.planIdstringYes
testPlan.runs[].evidence.provenance.attestation.planVersionIdstringYes
testPlan.runs[].evidence.provenance.attestation.planFingerprintstringYes
testPlan.runs[].evidence.provenance.attestation.commitShastringYes
testPlan.runs[].evidence.provenance.attestation.environmentIdstringYesComputer ID.
testPlan.runs[].evidence.provenance.attestation.resultSetFingerprintstringYes
testPlan.runs[].evidence.provenance.attestation.artifactSetFingerprintstringYes
testPlan.runs[].evidence.provenance.attestation.issuedAtstringYes
testPlan.runs[].evidence.provenance.attestation.verifiedAtstringYes
testPlan.runs[].evidence.resultsobject[]Yes
testPlan.runs[].evidence.results[].idstringYesUnique identifier.
testPlan.runs[].evidence.results[].testRunIdstringYes
testPlan.runs[].evidence.results[].caseIdstringYes
testPlan.runs[].evidence.results[].namestringYesHuman-readable name.
testPlan.runs[].evidence.results[].kindcommand | contract | integration | browser | agent | security | customYes
testPlan.runs[].evidence.results[].statusqueued | running | passed | failed | skipped | errorYesCurrent lifecycle status.
testPlan.runs[].evidence.results[].attemptintegerYes
testPlan.runs[].evidence.results[].durationMsintegerYes
testPlan.runs[].evidence.results[].exitCodeintegerYes
testPlan.runs[].evidence.results[].summarystringYes
testPlan.runs[].evidence.results[].diagnosticsobjectYes
testPlan.runs[].evidence.results[].evidenceobjectYes
testPlan.runs[].evidence.results[].startedAtstringYesISO 8601 timestamp.
testPlan.runs[].evidence.results[].completedAtstringYesISO 8601 timestamp.
testPlan.runs[].evidence.results[].createdAtstringYesISO 8601 timestamp.
testPlan.runs[].evidence.results[].updatedAtstringYesISO 8601 timestamp.
testPlan.runs[].evidence.artifactsobject[]Yes
testPlan.runs[].evidence.artifacts[].idstringYesUnique identifier.
testPlan.runs[].evidence.artifacts[].testRunIdstringYes
testPlan.runs[].evidence.artifacts[].testCaseResultIdstringYes
testPlan.runs[].evidence.artifacts[].typestringYes
testPlan.runs[].evidence.artifacts[].namestringYesHuman-readable name.
testPlan.runs[].evidence.artifacts[].uristringYes
testPlan.runs[].evidence.artifacts[].contentTypestringYes
testPlan.runs[].evidence.artifacts[].sizeBytesintegerYes
testPlan.runs[].evidence.artifacts[].sha256stringYes
testPlan.runs[].evidence.artifacts[].metadataobjectYesFree-form metadata object.
testPlan.runs[].evidence.artifacts[].createdAtstringYesISO 8601 timestamp.
testPlan.runs[].evidence.fingerprintstringYes
testPlan.runs[].metadataobjectYesFree-form metadata object.
testPlan.runs[].executionobjectYes
testPlan.runs[].execution.ownerstringYes
testPlan.runs[].execution.attemptintegerYes
testPlan.runs[].execution.leaseExpiresAtstringYes
testPlan.runs[].execution.heartbeatAtstringYes
testPlan.runs[].createdAtstringYesISO 8601 timestamp.
testPlan.runs[].updatedAtstringYesISO 8601 timestamp.
testPlan.runs[].startedAtstringYesISO 8601 timestamp.
testPlan.runs[].completedAtstringYesISO 8601 timestamp.
testPlan.runs[].resultsobject[]No
testPlan.runs[].results[].idstringYesUnique identifier.
testPlan.runs[].results[].testRunIdstringYes
testPlan.runs[].results[].caseIdstringYes
testPlan.runs[].results[].namestringYesHuman-readable name.
testPlan.runs[].results[].kindcommand | contract | integration | browser | agent | security | customYes
testPlan.runs[].results[].statusqueued | running | passed | failed | skipped | errorYesCurrent lifecycle status.
testPlan.runs[].results[].attemptintegerYes
testPlan.runs[].results[].durationMsintegerYes
testPlan.runs[].results[].exitCodeintegerYes
testPlan.runs[].results[].summarystringYes
testPlan.runs[].results[].diagnosticsobjectYes
testPlan.runs[].results[].evidenceobjectYes
testPlan.runs[].results[].startedAtstringYesISO 8601 timestamp.
testPlan.runs[].results[].completedAtstringYesISO 8601 timestamp.
testPlan.runs[].results[].createdAtstringYesISO 8601 timestamp.
testPlan.runs[].results[].updatedAtstringYesISO 8601 timestamp.
testPlan.runs[].artifactsobject[]No
testPlan.runs[].artifacts[].idstringYesUnique identifier.
testPlan.runs[].artifacts[].testRunIdstringYes
testPlan.runs[].artifacts[].testCaseResultIdstringYes
testPlan.runs[].artifacts[].typestringYes
testPlan.runs[].artifacts[].namestringYesHuman-readable name.
testPlan.runs[].artifacts[].uristringYes
testPlan.runs[].artifacts[].contentTypestringYes
testPlan.runs[].artifacts[].sizeBytesintegerYes
testPlan.runs[].artifacts[].sha256stringYes
testPlan.runs[].artifacts[].metadataobjectYesFree-form metadata object.
testPlan.runs[].artifacts[].createdAtstringYesISO 8601 timestamp.
404Test plan not found or unavailable to the caller
None.
Get a test plan with versions and recent runs
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow