> For the complete documentation index, see [llms.txt](https://apidocs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidocs.akinon.com/commerce-openapis/admin/attributes/list-attributes.md).

# List attributes

Returns a paginated list of attributes. Only attributes that apply to products are returned.

Filter by attribute `key`, order with the `sort` parameter, and page through the results with `page` and `limit`.

```json
{"openapi":"3.1.0","info":{"title":"Admin API","version":"1.0.0"},"tags":[{"name":"Attributes","description":"Administrative endpoints for **product attributes** — the definitions that describe what data a product can carry (its name, size, color, material, and so on) and how that data behaves in the catalog, on the storefront, and in variant grouping.\n\nThe attribute system has four related resources, each with its own endpoints:\n\n| Resource | Path | What it is |\n|----------|------|------------|\n| **Attribute** | `/attributes/` | A single attribute definition (e.g. `color`), including its data type and default behavior flags. |\n| **Attribute Value** | `/attribute_value/` | A predefined value that an attribute can take (e.g. `Red` for `color`). |\n| **Attribute Set** | `/attribute_set/` | A named group of attribute configurations assigned to products. |\n| **Attribute Configuration** | `/attribute_config/` | The membership of one attribute in one attribute set, overriding the attribute's behavior for that set. |\n\n## Core Capabilities\n\n**1. Attribute Definitions**\n* Define attributes with a unique `key`, a human-readable `name`, and a `data_type` that controls how the attribute is edited and stored.\n* Control default behavior with the boolean flags described under **Behavior Flags** (visibility, searchability, filterability, variant handling, and form requirements).\n* List and filter attributes; only attributes that apply to products are returned.\n\n**2. Attribute Values**\n* Maintain the predefined values of an attribute (for dropdown, multiple-select, and value/label attributes).\n* Order values explicitly, or let the server order numeric values automatically.\n\n**3. Attribute Sets & Configurations**\n* Group attributes into named sets that are assigned to products.\n* Override an attribute's behavior for a specific set through an attribute configuration, or leave a flag unset to inherit the attribute's own value.\n\n## Data Types\n\nThe `data_type` of an attribute controls how its value is entered and interpreted.\n\n| Value | Description |\n|-------|-------------|\n| `text` | Single-line text. |\n| `email` | An email address. |\n| `area` | Multi-line text. |\n| `date` | A calendar date. |\n| `datetime` | A date and time. |\n| `bool` | A true/false flag. |\n| `valuelabel` | A value paired with a display label. |\n| `dropdown` | A single choice from the attribute's predefined values. |\n| `multiple` | Multiple choices from the attribute's predefined values. |\n| `price` | A monetary amount. |\n| `nested` | A nested object of sub-values. |\n| `image` | An image reference. |\n| `file` | A file reference. |\n| `model` | A reference to another model instance. |\n| `bundle` | A bundle composition value. |\n\n## Attribute Set Types\n\n| Value | Description |\n|-------|-------------|\n| `simple` | A standard attribute set assigned to ordinary products. This is the default. |\n| `grouped` | An attribute set used for grouped products. |\n\n## Behavior Flags\n\nBoth attributes and attribute configurations carry the same set of behavior flags. On an **attribute** they set the default behavior; on an **attribute configuration** they override that behavior for one attribute set.\n\n| Flag | Meaning |\n|------|---------|\n| `is_required` | The attribute must have a value on the product. |\n| `is_visible` | The attribute is shown in management and storefront contexts. |\n| `is_searchable` | The attribute is indexed for search. |\n| `is_filterable` | The attribute can be used as a storefront filter (facet). |\n| `is_variant` | The attribute distinguishes variants of the same product. |\n| `is_variant_listable` | The attribute participates in choosing which variant is the listable one. |\n| `is_form_required` | The attribute is required in the product form. |\n| `is_form_field_required` | The attribute's form field is required. |\n\n## Inheritance in Attribute Configurations\n\nOn an attribute configuration every behavior flag is **nullable**. A `null` value means *inherit the value from the parent attribute*; a non-null value overrides it for that attribute set. The read-only `default_fields` array reports exactly which flags are currently inherited (left `null`) rather than overridden.\n\n## Dynamic Settings & Environment Variables\n\nThe behavior of these endpoints is influenced by the following dynamic setting, configured in the management panel. It is referenced again in the description of the operations it affects.\n\n| Key | Type | Default | Effect |\n|-----|------|---------|--------|\n| `LANDING_PAGE_ATTRIBUTES` | array of strings (attribute keys) | the server configuration value `LANDING_PAGE_ATTRIBUTES`, or `[]` when unset | The list of attribute keys for which attribute values should back a landing page. Affects **create** (`POST /attribute_value/`) and **update** (`PUT`/`PATCH /attribute_value/{id}/`): when the value's attribute `key` is in this list, a landing page is automatically created (and kept in sync on update) for the attribute value. Values of attributes not in this list are unaffected. |\n\n**Environment variables:** No environment variables are read directly by these endpoints. The only related server configuration value is `LANDING_PAGE_ATTRIBUTES`, which serves as the fallback default of the dynamic setting of the same name described above."}],"servers":[{"description":"Omnitron Remote Proxy (external access — recommended)","url":"https://{omnitron_url}/api/remote/{channel_id}","variables":{"omnitron_url":{"default":"sandbox.akinon.com","description":"Omnitron server URL (e.g., {omnitron.akinon.com})"},"channel_id":{"default":"1","description":"The channel identifier the remote request is routed through"}}},{"description":"Commerce API Server (internal / direct access only)","url":"https://{commerce_url}/api/v1","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Internal commerce server URL, reachable only from within the Omnitron network"}}}],"security":[{"tokenAuth":[]}],"components":{"securitySchemes":{"tokenAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Token credential sent in the Authorization header, in the form: `Token <your-token>`. Requires a staff (admin) account."}},"parameters":{"page":{"name":"page","in":"query","required":false,"description":"The page number to return.","schema":{"type":"integer","default":1}},"limit":{"name":"limit","in":"query","required":false,"description":"The number of items to return per page.","schema":{"type":"integer","default":10}},"sort":{"name":"sort","in":"query","required":false,"description":"Orders the results by one or more fields. Separate multiple fields with commas. Prefix a field with a hyphen (`-`) for descending order.","schema":{"type":"string"}}},"schemas":{"PaginatedAttributeList":{"type":"object","description":"A page of attribute results.","properties":{"count":{"type":"integer","description":"The total number of attributes matching the query."},"next":{"type":["string","null"],"format":"uri","description":"The URL of the next page of results, when available."},"previous":{"type":["string","null"],"format":"uri","description":"The URL of the previous page of results, when available."},"results":{"type":"array","description":"The attributes on the current page.","items":{"$ref":"#/components/schemas/Attribute"}}}},"Attribute":{"type":"object","description":"An attribute definition as returned by the API.","properties":{"pk":{"type":"integer","description":"The unique identifier of the attribute.","readOnly":true},"key":{"type":"string","maxLength":255,"description":"The unique machine key of the attribute. Matches `^[a-zA-Z_][a-zA-Z0-9_-]*$`."},"name":{"type":"string","maxLength":255,"description":"The human-readable, translatable name of the attribute."},"data_type":{"$ref":"#/components/schemas/AttributeDataType"},"default_value":{"type":["integer","null"],"description":"The identifier of the attribute value used as the default, when any."},"is_required":{"type":"boolean","description":"Whether the attribute must have a value on the product."},"is_visible":{"type":"boolean","description":"Whether the attribute is shown in management and storefront contexts."},"is_searchable":{"type":"boolean","description":"Whether the attribute is indexed for search."},"is_filterable":{"type":"boolean","description":"Whether the attribute can be used as a storefront filter."},"is_variant":{"type":"boolean","description":"Whether the attribute distinguishes variants of a product."},"is_variant_listable":{"type":"boolean","description":"Whether the attribute participates in choosing the listable variant."},"is_form_required":{"type":"boolean","description":"Whether the attribute is required in the product form."},"is_form_field_required":{"type":"boolean","description":"Whether the attribute's form field is required."}}},"AttributeDataType":{"type":"string","description":"The data type of an attribute, controlling how its value is entered and interpreted. See the **Data Types** table under **Attributes**.","enum":["text","email","area","date","datetime","bool","valuelabel","dropdown","multiple","price","nested","image","file","model","bundle"]},"Error":{"type":"object","description":"An error response.","properties":{"detail":{"type":"string","description":"A human-readable description of the error."}},"additionalProperties":true}},"responses":{"Unauthorized":{"description":"Authentication credentials were not provided or are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The authenticated user does not have administrator privileges.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/attributes/":{"get":{"tags":["Attributes"],"operationId":"listAttributes","summary":"List attributes","description":"Returns a paginated list of attributes. Only attributes that apply to products are returned.\n\nFilter by attribute `key`, order with the `sort` parameter, and page through the results with `page` and `limit`.","parameters":[{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/sort"},{"name":"key","in":"query","description":"Filter by exact attribute key.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"A paginated list of attributes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedAttributeList"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://apidocs.akinon.com/commerce-openapis/admin/attributes/list-attributes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
