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

> 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/entities`

List Entity Types

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

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

**Responses:**

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

## `GET /api/v1/entities/{name}`

List Records

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

List entity records — paginated, sortable, filterable.

Any query param that is not a control param (`limit`/`offset`/`sort`/
`include_meta`) is read as a column filter: `col` (equals), `col_like`
(ILIKE), `col_from`/`col_to` (range). Large JSON/text columns are
truncated to a preview stub; `?include_meta=true` adds the runtime schema.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `limit` | query | no | `integer` |  |
| `offset` | query | no | `integer` |  |
| `sort` | query | no | `string \| null` |  |
| `include_meta` | query | no | `boolean` |  |
| `include_deleted` | query | no | `boolean` |  |

**Responses:**

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

## `POST /api/v1/entities/{name}`

Create Record

[Open as a page →](./post-entities-name/)

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

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

**Request body:** `application/json`

**Responses:**

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

## `POST /api/v1/entities/{name}/bulk-delete`

Bulk Delete

[Open as a page →](./post-entities-name-bulk-delete/)

Delete many rows — PROD rows without approval are blocked.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `x-prod-approval` | header | no | `string \| null` | Production guard. |
| `Idempotency-Key` | header | no | `string` | Optional. |

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

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `guids` | `array of integer` | yes |  |

_Example:_

```json
{
  "guids": [
    31567,
    31568
  ]
}
```

**Responses:**

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

## `POST /api/v1/entities/{name}/bulk-export`

Bulk Export

[Open as a page →](./post-entities-name-bulk-export/)

Export selected rows as a downloadable JSON file.

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

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

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

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `format` | `string` | no |  |
| `guids` | `array of integer` | yes |  |

**Responses:**

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

## `GET /api/v1/entities/{name}/count`

Count Records

[Open as a page →](./get-entities-name-count/)

Row count for an entity, cached in-process for 30s.

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

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

**Responses:**

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

## `DELETE /api/v1/entities/{name}/{guid}`

Delete Record

[Open as a page →](./delete-entities-name-guid/)

Delete a row — soft (deleted_at) for soft-deletable entities.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |
| `x-prod-approval` | header | no | `string \| null` | Production guard. |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Responses:**

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

## `GET /api/v1/entities/{name}/{guid}`

Read Record

[Open as a page →](./get-entities-name-guid/)

Read one full row + runtime schema for the row drawer.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |

**Responses:**

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

## `PATCH /api/v1/entities/{name}/{guid}`

Update Record

[Open as a page →](./patch-entities-name-guid/)

Partial update — PROD-guarded and audit-logged.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |
| `x-prod-approval` | header | no | `string \| null` | Production guard. |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Request body:** `application/json`

**Responses:**

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

## `GET /api/v1/entities/{name}/{guid}/audit`

Read Audit

[Open as a page →](./get-entities-name-guid-audit/)

Audit trail for one row, projected from lifecycle_log.

Latest first. A multi-field edit is expanded into one event per field.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |
| `limit` | query | no | `integer` |  |

**Responses:**

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

## `GET /api/v1/entities/{name}/{guid}/field/{field}`

Read Field

[Open as a page →](./get-entities-name-guid-field-field/)

Read one field's full, untruncated value — lazy JSON load.

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |
| `field` | path | yes | `string` |  |

**Responses:**

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

## `POST /api/v1/entities/{name}/{guid}/restore`

Restore Record

[Open as a page →](./post-entities-name-guid-restore/)

Restore a soft-deleted row — clears deleted_at a).

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

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `name` | path | yes | `string` |  |
| `guid` | path | yes | `integer` |  |
| `x-prod-approval` | header | no | `string \| null` | Production guard. |
| `Idempotency-Key` | header | no | `string` | Optional. |

**Responses:**

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