Catalog Attribute Family — Detail
Returns a single attribute family record by ID, including all attribute groups and — within each group — all attributes associated via the attribute_group_mappings pivot (with their pivot position and column).
This is the read endpoint to call when an admin needs the complete structure of an attribute family — e.g. when opening the edit form in the Catalog → Attribute Families UI.
Endpoint
| Endpoint | Method | Authentication |
|---|---|---|
/api/admin/catalog/families/{id} | GET | Admin Bearer token |
{id} must be a positive integer. Non-numeric values are rejected by a route requirement (\d+) — this prevents the {id} segment from matching any other path under /catalog/families/.
Authentication
Every request requires:
Authorization: Bearer <token>Obtain the Bearer token via Authentication.
Path Parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The numeric attribute family ID |
Response Shape
The response is a single JSON object (not wrapped in { data }) with the following fields:
| Field | Type | Description |
|---|---|---|
id | integer | Attribute family ID |
code | string | Family code (e.g. default, apparel) |
name | string | Family display name (e.g. Default, Apparel) |
attributeGroups | array | All attribute groups belonging to this family (see below) |
attributeGroups[] item shape
Each entry in the attributeGroups array corresponds to one row in attribute_groups:
| Field | Type | Description |
|---|---|---|
id | integer | Attribute group ID |
code | string | Group code (e.g. general, price) |
name | string | Group display name (e.g. General, Price) |
column | integer | Layout column position for the group (typically 1 or 2) |
position | integer | Display order position of the group within the family |
attributes | array | Attributes mapped to this group (see below) |
attributeGroups[].attributes[] item shape
Each entry represents one attribute mapped to the group via attribute_group_mappings:
| Field | Type | Description |
|---|---|---|
id | integer | Attribute ID |
code | string | Attribute code (e.g. sku, name, color) |
type | string | Attribute type (e.g. text, select, boolean) |
isRequired | integer | 1 = required on product forms, 0 = optional |
column | integer | Layout column position of this attribute within the group |
position | integer | Display order position of this attribute within the group |
Plain arrays — no follow-up calls needed
attributeGroups and the nested attributes arrays are serialized as plain inline JSON objects — there are no IRI strings or sub-resource links. The full structure is embedded in a single response.
Example Request
curl -X GET "https://your-domain.com/api/admin/catalog/families/1" \
-H "Authorization: Bearer <token>" \
-H "Accept: application/json"Example Response
{
"id": 1,
"code": "default",
"name": "Default",
"attributeGroups": [
{
"id": 1,
"code": "general",
"name": "General",
"column": 1,
"position": 1,
"attributes": [
{
"id": 1,
"code": "sku",
"type": "text",
"isRequired": 1,
"column": 1,
"position": 1
},
{
"id": 2,
"code": "name",
"type": "text",
"isRequired": 1,
"column": 1,
"position": 2
}
]
}
]
}Errors
| HTTP Status | Cause |
|---|---|
401 Unauthorized | Missing, expired, or revoked admin Bearer token |
401 Unauthorized | Missing or invalid admin Bearer token |
404 Not Found | The specified {id} does not exist in the database |
Notes
attributeGroupsis a plain JSON array, not a sub-resource IRI. Groups and their nested attributes are embedded directly in the response — no follow-up requests are needed.attributeGroupsisnullin listing rows. TheGET /api/admin/catalog/familieslisting returns onlyid,code, andname. The full nested payload is only available from this detail endpoint.- No timestamps. The
attribute_familiestable has$timestamps = false— there are nocreatedAtorupdatedAtfields on the family itself. Theattribute_groupstable similarly carries no timestamps. columnandpositionfields come from theattribute_group_mappingspivot and control where each attribute is rendered in the product-creation form layout.columnis typically1or2(left or right panel);positioncontrols vertical order.- The
{id}route parameter must be a digit. The route carries arequirements: ['id' => '\d+']constraint — non-numeric path segments are rejected with404before reaching the provider. - Attribute detail fields are slim. Only the fields needed for family-structure display are returned per attribute (
id,code,type,isRequired,column,position). For the full attribute payload (translations, options, validation), useGET /api/admin/catalog/attributes/{id}.

