Skip to content

Get a plan

GET
/api/v1/plans/{id}
curl --request GET \
--url https://api.aletheia-ops.com/api/v1/plans/example \
--header 'Authorization: Bearer <token>'
id
required
string

OK

Media typeapplication/json

Plan header + generated summary + previous plans

object
id
string
source
string
status
string
repository_id
string
repository_full_name
string
iac_project_id
string
pull_request_id
string
execution_id
string
project_path
string
workspace
string
commit_sha
string
branch
string
terraform_version
string
format_version
string
parse_error
string
counts

A plan’s action counts

object
add
integer
change
integer
replace
integer
destroy
integer
noop
integer
received_at
string format: date-time
parsed_at
string format: date-time
summary
string
previous_plans
Array<object>

An earlier plan for the same project with count deltas

object
id
string
source
string
status
string
repository_id
string
repository_full_name
string
iac_project_id
string
pull_request_id
string
execution_id
string
project_path
string
workspace
string
commit_sha
string
branch
string
terraform_version
string
format_version
string
parse_error
string
counts

A plan’s action counts

object
add
integer
change
integer
replace
integer
destroy
integer
noop
integer
received_at
string format: date-time
parsed_at
string format: date-time
delta

A plan’s action counts

object
add
integer
change
integer
replace
integer
destroy
integer
noop
integer
Examplegenerated
{
"id": "example",
"source": "example",
"status": "example",
"repository_id": "example",
"repository_full_name": "example",
"iac_project_id": "example",
"pull_request_id": "example",
"execution_id": "example",
"project_path": "example",
"workspace": "example",
"commit_sha": "example",
"branch": "example",
"terraform_version": "example",
"format_version": "example",
"parse_error": "example",
"counts": {
"add": 1,
"change": 1,
"replace": 1,
"destroy": 1,
"noop": 1
},
"received_at": "2026-04-15T12:00:00Z",
"parsed_at": "2026-04-15T12:00:00Z",
"summary": "example",
"previous_plans": [
{
"id": "example",
"source": "example",
"status": "example",
"repository_id": "example",
"repository_full_name": "example",
"iac_project_id": "example",
"pull_request_id": "example",
"execution_id": "example",
"project_path": "example",
"workspace": "example",
"commit_sha": "example",
"branch": "example",
"terraform_version": "example",
"format_version": "example",
"parse_error": "example",
"counts": {
"add": 1,
"change": 1,
"replace": 1,
"destroy": 1,
"noop": 1
},
"received_at": "2026-04-15T12:00:00Z",
"parsed_at": "2026-04-15T12:00:00Z",
"delta": {
"add": 1,
"change": 1,
"replace": 1,
"destroy": 1,
"noop": 1
}
}
]
}

No valid credential was presented, or it has expired.

Media typeapplication/json
object
code
required

Stable, machine-readable identifier. Branch on this.

string
message
required

Human-readable explanation. Safe to display; do not parse.

string
Examples
{
"code": "unauthorized",
"message": "authentication required"
}

Authenticated, but not permitted to perform this action.

Media typeapplication/json
object
code
required

Stable, machine-readable identifier. Branch on this.

string
message
required

Human-readable explanation. Safe to display; do not parse.

string
Examples
{
"code": "forbidden",
"message": "you do not have permission to perform this action"
}

The resource does not exist, or belongs to another organization. The two are deliberately indistinguishable.

Media typeapplication/json
object
code
required

Stable, machine-readable identifier. Branch on this.

string
message
required

Human-readable explanation. Safe to display; do not parse.

string
Examples
Examplenot_found
{
"code": "not_found",
"message": "resource not found"
}

An unexpected failure. Diagnostic detail is logged server-side and deliberately not returned. Quote the X-Request-Id response header when reporting one.

Media typeapplication/json
object
code
required

Stable, machine-readable identifier. Branch on this.

string
message
required

Human-readable explanation. Safe to display; do not parse.

string
Examples
Exampleinternal_error
{
"code": "internal_error",
"message": "internal server error"
}