---
id: checklist-specification-create
title: "Create checklist specification"
description: "Creates the first version of a checklist specification."
sidebar_label: "Create checklist specification"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/api/approval
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Create checklist specification"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/approval/checklist/specification"}
  context={"endpoint"}
>
  
</MethodEndpoint>



Creates the first version of a checklist specification.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={undefined}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={{"content":{"application/json":{"schema":{"required":["nrn","definition"],"properties":{"nrn":{"type":"string","description":"Where the specification applies.","example":"organization=1:account=2:namespace=3"},"name":{"type":"string","description":"Name shared by every version of this specification.","example":"staging-deploy-gate"},"description":{"type":"string","description":"What this checklist enforces.","example":"Coverage, Snyk, and security sign-off, with a CAB override."},"definition":{"type":"object","description":"The items, and optionally an aggregation block.","example":{"items":[{"id":"coverage_gate","type":"condition","behavior":"gate","title":"Build coverage above 80%","query":{"build.metadata.coverage.lines.percent":{"$gte":80}}}]}}}}}}}}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"201":{"description":"The specification was created.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of this specification version.","example":"spec_abc123def456ghij"},"nrn":{"type":"string","description":"Where the specification applies. Child resources inherit it.","example":"organization=1:account=2:namespace=3"},"name":{"type":"string","description":"Shared by every version of this specification.","example":"staging-deploy-gate"},"description":{"type":"string","description":"What this checklist enforces.","example":"Coverage, Snyk, and security sign-off, with a CAB override."},"status":{"type":"string","enum":["active","deleted"],"description":"Whether the specification is live or was soft-deleted.","example":"active"},"version":{"type":"integer","description":"Version number within the name and NRN.","example":1},"definition":{"type":"object","description":"The items, and optionally an aggregation block."},"derived_expression":{"type":"string","description":"The boolean expression nullplatform computes the outcome with.","example":"( coverage_gate.passed AND security_signoff.passed ) OR cab_override.passed"},"created_by":{"type":"string","description":"ID of the user who published this version.","example":"4321"},"created_at":{"type":"string","format":"date-time","description":"When this version was published.","example":"2026-08-28T14:12:03.000Z"},"updated_at":{"type":"string","format":"date-time","description":"When this version was last modified.","example":"2026-08-28T14:12:03.000Z"},"warnings":{"type":"array","description":"Non-blocking notes the validator raised when the version was saved.","items":{"type":"string"},"example":[]},"versions":{"type":"array","description":"Every version published under the same name and NRN. Only on a read with `include_versions=true`.","items":"circular(ChecklistSpecification)"},"associated_actions":{"type":"array","description":"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.","items":{"type":"object"},"example":[{"id":1842,"nrn":"organization=1:account=2:namespace=3","entity":"deployment","action":"deployment:create"}]}},"title":"ChecklistSpecification"}}}},"4XX":{"description":"Client error responses due to invalid input or missing parameters.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific client error (e.g., 400, 401, 403, 404).","example":400},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"bad_request"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Bad Request\", \"Unauthorized\").","example":"Bad Request"},"message":{"type":"string","description":"Additional details about the error.","example":"The request was malformed or contained invalid parameters."}}}}}},"5XX":{"description":"Server error responses indicating an issue on the API side.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific server error (e.g., 500, 502, 503).","example":500},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"internal_server_error"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Internal Server Error\", \"Service Unavailable\").","example":"Internal Server Error"},"message":{"type":"string","description":"Additional details about the error.","example":"An unexpected error occurred. Please try again later."}}}}}}}}
>
  
</StatusCodes>


      