An attribute is a typed field definition, such as material, weight or meta_title. Attributes are data, not code: you add one through the admin or the API, attach it to an attribute family, and products in that family can carry a value for it immediately. No migration, no deploy.

In the admin

Attributes live under Catalog → Attributes, which has three sections: Product families, Attributes and Groups.

  1. In Attributes, click New.
  2. Enter a Code (lowercase snake_case, used as the JSON key) and an English label.
  3. Pick a Type (see Attribute types) and optionally a Group.
  4. Set the flags: Localizable (different value per locale), Scopable (different value per channel), Variant axis (defines variants).
  5. Choose a Requirement: Required, Suggested or Available. New attributes start as Suggested in the admin.
  6. Optionally set a Default value (see Default values) and type-specific Validation, then click Create attribute.

Click Edit on an attribute to change it later. Delete there first shows how many records hold a value for it.

With the API

MethodPathWhat it does
GET/v1/attributes?entityKind=productList attributes of one kind
POST/v1/attributesCreate
GET / PATCH / DELETE/v1/attributes/{id}Read, update, delete
GET/v1/attributes/{id}/usageCount products, variants, content pages, categories and brands holding a value
GET / POST/v1/attribute-groupsList or create editor groups
curl -X POST https://api.minipim.com/v1/attributes \
  -H "Authorization: Bearer pim_…" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "weight",
    "label": { "en_US": "Weight" },
    "type": "measurement",
    "requirement": "suggested",
    "validation": { "unitFamily": "mass" }
  }'

entityKind is product (default), content, category or brand. Full reference: api.minipim.com/docs.

Requirement levels

  • required: must be filled before a product can go active, and counts toward readiness.
  • suggested: always shown on edit screens, never counted.
  • available: part of the family but hidden on a record until it has a value or someone picks it from Add a field….

The API defaults to available. A family can override the level per attribute. isRequired is still accepted and returned for older clients; requirement wins when both are sent.

Rules and limits

  • Codes must match ^[a-z][a-z0-9_]*$.
  • Codes are unique per organization and entity kind, so products, content pages, categories and brands can each have their own description.
  • entityKind can’t be changed after creation. Delete and recreate instead.
  • A value on a non-localizable attribute must have locale: null; on a non-scopable one, channel: null. A localizable attribute’s values must name a locale. Scopable attributes accept channel: null as the fallback for every channel. The API doesn’t check locale or channel codes in values against the ones you’ve configured, so watch for typos.
  • Changing an attribute’s code or type doesn’t migrate values already stored under it.
  • Deleting an attribute deletes every stored value under its code, on every record of that kind, and detaches it from all families. Check /usage first. The attribute.deleted event reports how many rows were touched.
  • select and multiselect attributes created through the API or admin start with an open list: an unlisted value is accepted and added to the options. Set validation.allowNewValues: false (in the admin, untick Let editors add values as they go) for a closed list.
  • Groups only organize the product editor. They don’t affect validation.
  • Variant-axis attributes appear on variants, not in the product’s attribute editor. Making one required blocks products from going active.

See also

  • Attribute types — All 19 minipim attribute types, the JSON value shape each one accepts, the validation options per type, and which types the admin can create, edit and default.
  • Attribute families — Attribute families define which attributes a minipim product carries: attaching attributes, requirement overrides, ordering, moving products, deletion.
  • Default values — Give a minipim product attribute a default value that is filled in when new products are created. Which types qualify, when defaults apply and when they don't.
  • Locales and translations — Add locales, mark attributes localizable, enter translated values, and read them back with ?locale=. Covers the default locale and how fallback works.