---
title: "Get Assembly Detail"
method: GET
path: "/api/assemblies/{slug}"
tags: ["assemblies"]
---

# Get Assembly Detail

`GET /api/assemblies/{slug}`

## Request

- Base URL: `https://api.civilquants.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.civilquants.com/api/assemblies/{slug}`
- Auth: none declared

## Path parameters

- `slug` string, required

## Response `200`

Successful Response

- AssemblyDetailResponse: Detail view including auto-generated parameter schema. `parameter_groups` is the structured form used by the G.6.4 schema-driven LiveAssemblyPage: each group is a collapsible section, each field is one input control. Order is preserved from Parameters dataclass declaration.
  - `slug` string, required
  - `display_name` string, required
  - `category` string, required
  - `description` string, required
  - `version` string, required
  - `tier` 'free' | 'paid', required
  - `parameter_groups` ParameterGroupSchema[], required
    - `key` string, required
    - `fields` ParameterFieldSchema[], required
      - `key` string, required: Dataclass field name; the Compute request key
      - `label` string, required: Human-readable display name
      - `unit` string, required: Engineering unit (m, m³, kg, mm, no, etc.)
      - `type` 'number' | 'integer' | 'boolean' | 'string' | 'array', required
      - `default` union: Scalar default for slider / select / text inputs. `list[float]` supports tuple-of-floats Parameters fields (e.g. anchor row levels) — surfaced as a comma-separated text input when bespoke=True. Array-typed fields (list-of-object Parameters like the services bundle) always default to an empty list engine-side; their starter rows come from the workspace default overrides, so `default` stays null here.
        - number
        - integer
        - boolean
        - string
        - number[]
      - `min` number, nullable
      - `max` number, nullable
      - `step` number, nullable
      - `choices` string[], nullable: Enum values for select dropdowns; null for free-typed inputs
      - `bespoke` boolean: UI shows a free-typed override alongside a slider
      - `help_text` string, nullable
      - `item_fields` ParameterFieldSchema[], nullable: For type='array' only: the per-row field schemas of the list's item object (one entry per dataclass field of the item type). Drives the workspace row editor — each row renders one input per item field. Null for scalar parameters.
  - `dependent_height_link` DependentHeightLink: The engine's stem→retained-height relationship for an assembly (mirrors ``DEPENDENT_HEIGHT_RULE``). Exposed so a client can offer a freeboard affordance over it (60th-fire item M2). Named after the engine relationship, not after freeboard — the schema states what is true about the assembly; the client decides to render a freeboard control on top. ``None`` when the assembly has no such relationship.
    - `primary_field` string, required
    - `dependent_field` string, required

## Other responses

- `422`: Validation Error

---

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