Skip to content

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

EndpointMethodAuthentication
/api/admin/catalog/families/{id}GETAdmin 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/.

Path Parameter

ParameterTypeRequiredDescription
idintegerYesThe numeric attribute family ID

Response Shape

The response is a single JSON object (not wrapped in { data }) with the following fields:

FieldTypeDescription
idintegerAttribute family ID
codestringFamily code (e.g. default, apparel)
namestringFamily display name (e.g. Default, Apparel)
attributeGroupsarrayAll attribute groups belonging to this family (see below)

attributeGroups[] item shape

Each entry in the attributeGroups array corresponds to one row in attribute_groups:

FieldTypeDescription
idintegerAttribute group ID
codestringGroup code (e.g. general, price)
namestringGroup display name (e.g. General, Price)
columnintegerLayout column position for the group (typically 1 or 2)
positionintegerDisplay order position of the group within the family
attributesarrayAttributes mapped to this group (see below)

attributeGroups[].attributes[] item shape

Each entry represents one attribute mapped to the group via attribute_group_mappings:

FieldTypeDescription
idintegerAttribute ID
codestringAttribute code (e.g. sku, name, color)
typestringAttribute type (e.g. text, select, boolean)
isRequiredinteger1 = required on product forms, 0 = optional
columnintegerLayout column position of this attribute within the group
positionintegerDisplay order position of this attribute within the group

attributeGroups and the nested attributes arrays arrive as plain inline JSON — no IRI strings, no sub-resource links — so one call returns the family's whole structure. Every id inside is numeric.

Errors

HTTP StatusCause
401 UnauthorizedMissing, expired, or revoked admin Bearer token
401 UnauthorizedMissing or invalid admin Bearer token
404 Not FoundThe specified {id} does not exist in the database

Notes

  • attributeGroups is 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.
  • attributeGroups is null in listing rows. The GET /api/admin/catalog/families listing returns only id, code, and name. The full nested payload is only available from this detail endpoint.
  • No timestamps. The attribute_families table has $timestamps = false — there are no createdAt or updatedAt fields on the family itself. The attribute_groups table similarly carries no timestamps.
  • column and position fields come from the attribute_group_mappings pivot and control where each attribute is rendered in the product-creation form layout. column is typically 1 or 2 (left or right panel); position controls vertical order.
  • The {id} route parameter must be a digit. The route carries a requirements: ['id' => '\d+'] constraint — non-numeric path segments are rejected with 404 before 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), use GET /api/admin/catalog/attributes/{id}.

Released under the MIT License.