---
id: checklist-specification-update
title: "Publish a new specification version"
description: "Publishes a new version rather than editing in place. The response is a new specification ID under the same name and NRN, with the version number bumped. Approval actions keep pointing at the version they already reference until you move them."
sidebar_label: "Publish a new specification version"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "patch 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={"Publish a new specification version"}
>
</Heading>

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



Publishes a new version rather than editing in place. The response is a new specification ID under the same name and NRN, with the version number bumped. Approval actions keep pointing at the version they already reference until you move them.

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

<ParamsDetails
  parameters={[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The ID of the version to base the new one on.","example":"spec_abc123def456ghij"}]}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string","description":"New name for the specification family.","example":"staging-deploy-gate"},"description":{"type":"string","description":"New description.","example":"Coverage raised to 85% after the Q3 review."},"definition":{"type":"object","description":"The full definition for the new version."}}}}}}}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The new version was published.","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>


      