# Product attributes

Beta operations for managing Product attributes.

 - [GET /Metadata/Products/attributes](https://docs.api.saleslayer.com/apis/catalog-v2.0/product-metadata/getproductattributesasync.md): Every attribute of the Product definition, the tenant's own and the platform's, a page at a time and in the order the definition declares them, each summarised: what a screen listing the attributes sh
 - [POST /Metadata/Products/attributes](https://docs.api.saleslayer.com/apis/catalog-v2.0/product-metadata/createproductattributeasync.md): Adds a custom attribute to the Product definition and places it on a product form. The attribute's identifier is derived from its `title` and reported back. ## Request Body The body is the attribute.
 - [GET /Metadata/Products/attributes('{attributeId}')](https://docs.api.saleslayer.com/apis/catalog-v2.0/product-metadata/getproductattributeasync.md): Everything about one attribute of the Product definition, the tenant's own or the platform's, in every language: what it is, what its type carries, where a product form draws it and what may be change
 - [PATCH /Metadata/Products/attributes('{attributeId}')](https://docs.api.saleslayer.com/apis/catalog-v2.0/product-metadata/updateproductattributeasync.md): Changes an attribute of the Product definition, the tenant's own or the platform's. A patch: every field left out, or sent as `null`, is one the attribute keeps. ## Request Body The body is the change
 - [DELETE /Metadata/Products/attributes('{attributeId}')](https://docs.api.saleslayer.com/apis/catalog-v2.0/product-metadata/deleteproductattributeasync.md): Deletes an attribute of the tenant's own from the Product definition, or only takes it off one Product form, within the request. No snapshot is taken before: nothing keeps what it changes. The attribu
