---
title: API: specs
description: REST endpoints tagged specs — generated from the platform's OpenAPI contract (6 operations).
locale: en
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/api/specs/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

:::note
Generated from the OpenAPI contract — do not edit by hand. Interactive explorer with full schemas: [https://entherium.duckdns.org:8443/reference](https://entherium.duckdns.org:8443/reference); frozen spec for this build: [openapi.json](/developers/api/openapi.json).
:::

## `GET /api/v1/specs`

List Specs

[Open as a page →](./get-specs/)

: list all specs sorted by id descending.

**Auth:** `Authorization: Bearer <token>` required

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `SpecListResponse` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |

## `GET /api/v1/specs/{spec_id}`

Get Spec

[Open as a page →](./get-specs-spec-id/)

: detail with frontmatter, body, sections, tests_status.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `SpecDetailResponse` |
| `400` | Malformed spec id (expected SPEC-NNN) | — |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `404` | Spec not found | — |
| `422` | Validation Error | `HTTPValidationError` |

## `GET /api/v1/specs/{spec_id}/history`

Get Spec History

[Open as a page →](./get-specs-spec-id-history/)

: git log per file. Empty if.git not mounted.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `array of object` |
| `400` | Malformed spec id (expected SPEC-NNN) | — |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `404` | Spec not found | — |
| `422` | Validation Error | `HTTPValidationError` |

## `GET /api/v1/specs/{spec_id}/progress`

Get Spec Progress

[Open as a page →](./get-specs-spec-id-progress/)

Implementation progress grouped by spec section — each leaf §-anchor
with its label and whether a test covers it (`SPEC-NNN §X.Y` citation).

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `array of ProgressSection` |
| `400` | Malformed spec id (expected SPEC-NNN) | — |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `404` | Spec not found | — |
| `422` | Validation Error | `HTTPValidationError` |

## `PATCH /api/v1/specs/{spec_id}/status`

Patch Spec Status

[Open as a page →](./patch-specs-spec-id-status/)

: status transition with validation.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` |  |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Request body:** `application/json` — schema `StatusPatch`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `status` | `string` | yes | One of draft/review/accepted/implemented/obsolete |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `object` |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `422` | Validation Error | `HTTPValidationError` |

## `GET /api/v1/specs/{spec_id}/tests`

Get Spec Tests

[Open as a page →](./get-specs-spec-id-tests/)

Return individual pytest test-cases for this spec from junit.xml.

**Auth:** `Authorization: Bearer <token>` required

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `spec_id` | path | yes | `string` |  |

**Responses:**

| Code | Meaning | Body |
| --- | --- | --- |
| `200` | Successful Response | `array of SpecTestCase` |
| `400` | Malformed spec id (expected SPEC-NNN) | — |
| `401` | Missing or invalid authentication credentials | `ErrorResponse` |
| `404` | Spec not found | — |
| `422` | Validation Error | `HTTPValidationError` |
