---
title: "Read checklist specification"
method: GET
path: "/approval/checklist/specification/{id}"
tags: ["Checklist"]
---

# Read checklist specification

`GET /approval/checklist/specification/{id}`

## Request

- Base URL: `https://api.nullplatform.com`
- URL: `https://api.nullplatform.com/approval/checklist/specification/{id}`
- Auth: HTTP bearer

Returns one version of a checklist specification, including the expression derived from its items.

## Path parameters

- `id` string, required

## Query parameters

- `include_versions` boolean

## Response `200`

The operation was successful.

- ChecklistSpecification
  - `id` string: Identifier of this specification version.
  - `nrn` string: Where the specification applies. Child resources inherit it.
  - `name` string: Shared by every version of this specification.
  - `description` string: What this checklist enforces.
  - `status` 'active' | 'deleted': Whether the specification is live or was soft-deleted.
  - `version` integer: Version number within the name and NRN.
  - `definition` object: The items, and optionally an aggregation block and an `execution_trigger`.
    - `items` object[], required: The checklist items, at least one. The [items reference](/docs/approvals/checklist-items) has the contract of every type and behavior.
    - `aggregation` object: How the outcome is computed: `type: derived` (the default) builds the expression from the items, and `type: expression` takes your own in an `expression` field. Leaving it out is the same as `derived`.
    - `execution_trigger` 'explicit' | 'automatic_approval' | 'any_approval': What starts the approved action once the request is approved. The run reads it from the specification version it snapshotted. - `explicit`: the action waits for an explicit execute (Start deployment, Create scope, or Apply changes in the UI). - `automatic_approval`: the action starts on its own when no person or external system took part in the run. Otherwise it waits, as with `explicit`. - `any_approval`: the action starts on its own on any approval, a reviewer's included. Action item transitions always run on approval, and a deployment that belongs to a deployment group is started by the group's approval. > **Note:** If omitted or `null`, this value defaults to **explicit**. Any other value returns `422` with `rule: execution_trigger.invalid`.
  - `derived_expression` string: The boolean expression nullplatform computes the outcome with.
  - `created_by` string: ID of the user who published this version.
  - `created_at` string, date-time: When this version was published.
  - `updated_at` string, date-time: When this version was last modified.
  - `warnings` string[]: Non-blocking notes the validator raised when the version was saved.
  - `versions` ChecklistSpecification[]: Every version published under the same name and NRN. Only on a read with `include_versions=true`.
  - `associated_actions` object[]: Approval actions currently pointing at this version. Only on a read of a single specification, and absent rather than empty when it was not resolved.

## Other responses

- `4XX`: The request couldn't be processed. For example, a parameter is invalid, the resource doesn't exist, or you don't have permission. The body is a problem details object (RFC 9457).
- `5XX`: Something went wrong on nullplatform's side. The body is a problem details object (RFC 9457).

## Changes

- **2026-10-15** `728d4df70ca1`: 6 breaking, 15 info
  - the response property `message` became optional for the status `4XX`
  - the response property `message` became optional for the status `5XX`
  - removed the required property `error` from the response with the `4XX` status
  - removed the required property `error` from the response with the `5XX` status
  - …17 more
- **2026-10-02** `ac7c8dabaaa7`: 3 info
  - added the optional property `definition/aggregation` to the response with the `200` status
  - added the optional property `definition/execution_trigger` to the response with the `200` status
  - added the required property `definition/items` to the response with the `200` status
- **2026-09-10** `48f4b247ee12`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nullplatform/apis/nullplatform-api/changes/approval/checklist/specification/:id/get.md)

---

[API](https://skmtc.dev/nullplatform/apis/nullplatform-api.md) - [All operations](https://skmtc.dev/nullplatform/apis/nullplatform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nullplatform/apis/nullplatform-api/revisions/d3f66bc633d4?raw)
