> 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/attribute-configurations/update-an-attribute-configuration.md).

# Update an attribute configuration

Replaces the details of an existing attribute configuration. Provide the full set of writable fields.

* The `attribute` and `attribute_set` of an existing configuration cannot be changed; any values sent for them are ignored.
* A behavior flag sent as `null` reverts to inheriting the attribute's default; a non-null value overrides it. The `default_fields` array is recomputed accordingly.
* When `is_variant_listable` changes, the listable status of the products using this attribute set is recomputed.

```json
{"openapi":"3.1.0","info":{"title":"Admin API","version":"1.0.0"},"tags":[{"name":"Attribute Configurations","description":"The membership of a single attribute in a single attribute set. An attribute configuration overrides the attribute's default behavior flags for that set, or inherits them where a flag is left `null`. See the **Attributes** section for the shared concepts, including **Inheritance in Attribute Configurations**."}],"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."}},"schemas":{"AttributeConfigRequest":{"type":"object","description":"The payload accepted when creating or fully updating an attribute configuration. On update, `attribute` and `attribute_set` are immutable and any values sent for them are ignored.","required":["attribute","attribute_set"],"properties":{"attribute":{"type":"integer","description":"The identifier of the attribute. Together with `attribute_set`, must be unique."},"attribute_set":{"type":"integer","description":"The identifier of the attribute set. Together with `attribute`, must be unique."},"is_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_required`; `null` inherits it."},"is_visible":{"type":["boolean","null"],"description":"Overrides the attribute's `is_visible`; `null` inherits it."},"is_searchable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_searchable`; `null` inherits it."},"is_filterable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_filterable`; `null` inherits it."},"is_variant":{"type":["boolean","null"],"description":"Overrides the attribute's `is_variant`; `null` inherits it."},"is_variant_listable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_variant_listable`; `null` inherits it."},"is_form_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_form_required`; `null` inherits it."},"is_form_field_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_form_field_required`; `null` inherits it."},"order":{"type":["integer","null"],"description":"The sort order of the attribute within the set."},"attribute_config_group":{"type":["integer","null"],"description":"The identifier of the attribute configuration group this configuration belongs to."}}},"AttributeConfig":{"type":"object","description":"The membership of one attribute in one attribute set. Each behavior flag is nullable; a `null` value means the flag is inherited from the parent attribute, and the read-only `default_fields` array reports which flags are currently inherited.","properties":{"pk":{"type":"integer","description":"The unique identifier of the attribute configuration.","readOnly":true},"attribute":{"type":"integer","description":"The identifier of the attribute."},"attribute_set":{"type":"integer","description":"The identifier of the attribute set."},"is_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_required`; `null` inherits it."},"is_visible":{"type":["boolean","null"],"description":"Overrides the attribute's `is_visible`; `null` inherits it."},"is_searchable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_searchable`; `null` inherits it."},"is_filterable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_filterable`; `null` inherits it."},"is_variant":{"type":["boolean","null"],"description":"Overrides the attribute's `is_variant`; `null` inherits it."},"is_variant_listable":{"type":["boolean","null"],"description":"Overrides the attribute's `is_variant_listable`; `null` inherits it. Changing this recomputes the listable status of the attribute set's products."},"is_form_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_form_required`; `null` inherits it."},"is_form_field_required":{"type":["boolean","null"],"description":"Overrides the attribute's `is_form_field_required`; `null` inherits it."},"default_fields":{"type":"array","readOnly":true,"description":"The names of the behavior flags currently inherited from the attribute (those left `null`).","items":{"type":"string"}},"order":{"type":["integer","null"],"description":"The sort order of the attribute within the set."},"attribute_config_group":{"type":["integer","null"],"description":"The identifier of the attribute configuration group this configuration belongs to, when any."}}},"ValidationError":{"type":"object","description":"Returned when the request contains invalid or missing data. Errors are grouped by the field they apply to: each key is the name of a field from the request and its value is a list of one or more messages describing what is wrong with that field. Messages that do not belong to any single field are grouped under `non_field_errors`.","properties":{"non_field_errors":{"type":"array","description":"Error messages that apply to the request as a whole rather than to a specific field.","items":{"type":"string"}}},"additionalProperties":{"type":"array","description":"The list of error messages for the field named by the key.","items":{"type":"string"}}},"Error":{"type":"object","description":"An error response.","properties":{"detail":{"type":"string","description":"A human-readable description of the error."}},"additionalProperties":true}},"responses":{"ValidationError":{"description":"The request contains invalid or missing data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"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"}}}},"AttributeConfigNotFound":{"description":"The requested attribute configuration does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/attribute_config/{id}/":{"put":{"tags":["Attribute Configurations"],"operationId":"updateAttributeConfig","summary":"Update an attribute configuration","description":"Replaces the details of an existing attribute configuration. Provide the full set of writable fields.\n\n* The `attribute` and `attribute_set` of an existing configuration cannot be changed; any values sent for them are ignored.\n* A behavior flag sent as `null` reverts to inheriting the attribute's default; a non-null value overrides it. The `default_fields` array is recomputed accordingly.\n* When `is_variant_listable` changes, the listable status of the products using this attribute set is recomputed.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeConfigRequest"}}}},"responses":{"200":{"description":"The updated attribute configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeConfig"}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/AttributeConfigNotFound"}}}}}}
```


---

# 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/attribute-configurations/update-an-attribute-configuration.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.
