# Brands

Manage brands

## Retrieving all brands

> Retrieves all brands created in the tenant. No specific scopes are required.

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"parameters":{"query_q":{"name":"q","in":"query","description":"A standard query parameter is used to search for specific values.\n\n* Searching for items by string-based properties:\n  * By field value: `q=name:brand_one`, where `name` is the field name and `brand_one` is its desired value.\n  * By localized field value: `q=name.en:brand_one`, where `name` is the field name, `en` is a language code, and `brand_one` is the field value expressed in the specified language. **Note**: This query works only for localized fields stored in the map format, where `key` is the language code and `value` is the translation to a particular language.\n* Searching for items by a number-based property:\n  * With a specific value: `q=metadata.version:2`\n  * With a value greater than: `q=metadata.version:>1`\n  * With a value lower than: `q=metadata.version:<3`\n  * With a value greater than or equal to: `q=metadata.version:>=1`\n  * With a value lower than or equal to: `q=metadata.version:<=2`\n  * With a value within a range of values: `q=metadata.version:(>=1 AND <=2)`\\\n   where `metadata.version` is the name of the number-based field, and `2` is it's querying value.\n* Searching for items by a date-based property: All numer-based property queries are also valid for dates. In that case, the date should be placed within double quotes: `q=metadata.createdAt:(>=\"2021-05-18T07:27:27.455Z\" AND <\"2021-05-20T07:27:27.455Z\")`\n* Searching for items with a nonexistent or empty property: `q=localizedDescription.en:null`, where `localizedDescription.en` is the field that has its value set to `null`.\n* Searching for items with an existing property: `q=localizedDescription:exists`, where `localizedDescription` is the field that has a non-empty value.\n* Searching for items by multiple specific values: `q=id:(5c3325baa9812100098ff48f,5c3325d1a9812100098ff494)`, where `id` is the field name, and strings within the bracket are the desired values.\n* Searching for items by multiple fields: `q=id:5c3325baa9812100098ff48f name:brand_one` where `id` and `name` are field names. All objects that contain the specified values are returned. Multiple fields (separated by space) can be specified. Multiple values for each field can also be specified in a format presented earlier.\n* Searching for items with string-based properties conforming to a regex: `q=name:~_on` or `q=name:(~brand on)` - in case of searching for strings with space, where `name` is the name of field and `_on` or `brand on` is its querying regex.\n* Searching for items with a localized string-based property conforming to a regex: `localizedName.en:~(_on)` - where `localizedName` is the localized field name, `en` is a desired language, and `_on` is a search term.\n","schema":{"type":"string"}},"header_accept_language":{"name":"Accept-Language","in":"header","description":"The language or multiple languages acceptable for the response. Defines language(s) of the localized fields that should be returned in the response body.\nIf set to `*`, the response body will contain translations into all languages specified in the tenant configuration.\nThe specified language needs to be defined in the Configuration Service, under the `project_lang` key.\n\n**Note**: If not specified, the localized fields will be saved in the default language configured by the tenant in the Configuration Service.\n","schema":{"type":"string"},"required":false},"pageSize":{"schema":{"type":"string"},"in":"query","name":"pageSize","description":"The number of documents to be retrieved per page."},"pageNumber":{"schema":{"type":"string"},"in":"query","name":"pageNumber","description":"The page number to be retrieved. The size of the pages should be specified by the pageSize parameter."},"sort":{"schema":{"type":"string"},"in":"query","name":"sort","description":"List of properties used to sort the results, separated by colons."},"fields":{"schema":{"type":"string"},"in":"query","name":"fields","description":"Fields to be returned in the response."},"xTotalCount":{"schema":{"type":"boolean"},"in":"header","name":"X-Total-Count","description":"Flag indicating whether the total number of retrieved results should be returned."}},"schemas":{"brands":{"title":"Collection of Brands","type":"array","items":{"$ref":"#/components/schemas/brandResponse"}},"brandResponse":{"title":"Brand Response","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"cloudinaryUrl":{"type":"string","description":"Id of the associated media file."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"image":{"type":"string","description":"Link to the associated media file."},"mediaId":{"type":"string","description":"Id of the media."},"id":{"type":"string","description":"Unique identifier of a brand."},"metadata":{"$ref":"#/components/schemas/metaData"}}},"metaData":{"title":"Metadata","type":"object","properties":{"createdAt":{"type":"string","description":"Date and time when the object was created compliant with the ISO 8601 standard."},"modifiedAt":{"type":"string","description":"Date and time when the object was last modified compliant with the ISO 8601 standard."},"version":{"minimum":1,"type":"integer","description":"Object version."}}},"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}},"responses":{"trait_400":{"description":"Request syntactically incorrect. Details of the error are included in the response payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_403":{"description":"Given authorization scopes are not sufficient and do not match the required scopes.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}}},"paths":{"/brand/brands":{"get":{"tags":["Brands"],"description":"Retrieves all brands created in the tenant. No specific scopes are required.","operationId":"GET-brand-list-brands","parameters":[{"$ref":"#/components/parameters/query_q"},{"$ref":"#/components/parameters/header_accept_language"},{"$ref":"#/components/parameters/pageSize"},{"$ref":"#/components/parameters/pageNumber"},{"$ref":"#/components/parameters/sort"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/xTotalCount"}],"responses":{"200":{"description":"The brands have been successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/brands"}}}},"400":{"$ref":"#/components/responses/trait_400"},"403":{"$ref":"#/components/responses/trait_403"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Retrieving all brands"}}}}
```

## Adding a new brand

> Creates a new brand.

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":["brand.brand_manage"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"parameters":{"header_content_language":{"name":"Content-Language","in":"header","description":"Defines the language in which the localized fields are specified.\nIf set to `*`, the request body may contain translations into all languages specified in the tenant configuration.\nThe specified language need to be defined in the Configuration Serivce under `project_lang` key.\n\n**Note**: If not specified, localized fields will be saved in the default language configured by the tenant in the Configuration Service.\n","schema":{"type":"string"},"required":false}},"schemas":{"brand":{"title":"Brand","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of a brand."},"name":{"type":"string","description":"Brand name."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}}}},"brandResponse":{"title":"Brand Response","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"cloudinaryUrl":{"type":"string","description":"Id of the associated media file."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"image":{"type":"string","description":"Link to the associated media file."},"mediaId":{"type":"string","description":"Id of the media."},"id":{"type":"string","description":"Unique identifier of a brand."},"metadata":{"$ref":"#/components/schemas/metaData"}}},"metaData":{"title":"Metadata","type":"object","properties":{"createdAt":{"type":"string","description":"Date and time when the object was created compliant with the ISO 8601 standard."},"modifiedAt":{"type":"string","description":"Date and time when the object was last modified compliant with the ISO 8601 standard."},"version":{"minimum":1,"type":"integer","description":"Object version."}}},"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}},"responses":{"trait_400":{"description":"Request syntactically incorrect. Details of the error are included in the response payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_403":{"description":"Given authorization scopes are not sufficient and do not match the required scopes.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_409":{"description":"Creation failed because there was a conflict with another resource. Details of the error are included in the response payload.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}}},"paths":{"/brand/brands":{"post":{"tags":["Brands"],"description":"Creates a new brand.","operationId":"POST-brand-create-brand","parameters":[{"$ref":"#/components/parameters/header_content_language"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/brand"}}}},"responses":{"201":{"description":"The brand has been successfully created.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/brandResponse"}}}},"400":{"$ref":"#/components/responses/trait_400"},"403":{"$ref":"#/components/responses/trait_403"},"409":{"$ref":"#/components/responses/trait_409"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Adding a new brand"}}}}
```

## Retrieving a brand

> Retrieves details of a specified brand. No specific scopes are required.

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"parameters":{"header_accept_language":{"name":"Accept-Language","in":"header","description":"The language or multiple languages acceptable for the response. Defines language(s) of the localized fields that should be returned in the response body.\nIf set to `*`, the response body will contain translations into all languages specified in the tenant configuration.\nThe specified language needs to be defined in the Configuration Service, under the `project_lang` key.\n\n**Note**: If not specified, the localized fields will be saved in the default language configured by the tenant in the Configuration Service.\n","schema":{"type":"string"},"required":false}},"schemas":{"brandResponse":{"title":"Brand Response","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"cloudinaryUrl":{"type":"string","description":"Id of the associated media file."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"image":{"type":"string","description":"Link to the associated media file."},"mediaId":{"type":"string","description":"Id of the media."},"id":{"type":"string","description":"Unique identifier of a brand."},"metadata":{"$ref":"#/components/schemas/metaData"}}},"metaData":{"title":"Metadata","type":"object","properties":{"createdAt":{"type":"string","description":"Date and time when the object was created compliant with the ISO 8601 standard."},"modifiedAt":{"type":"string","description":"Date and time when the object was last modified compliant with the ISO 8601 standard."},"version":{"minimum":1,"type":"integer","description":"Object version."}}},"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}},"responses":{"trait_400":{"description":"Request syntactically incorrect. Details of the error are included in the response payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_404":{"description":"The requested resource does not exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}}},"paths":{"/brand/brands/{brandId}":{"get":{"tags":["Brands"],"description":"Retrieves details of a specified brand. No specific scopes are required.","operationId":"GET-brand-retrieve-brand","parameters":[{"$ref":"#/components/parameters/header_accept_language"}],"responses":{"200":{"description":"Brand successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/brandResponse"}}}},"400":{"$ref":"#/components/responses/trait_400"},"404":{"$ref":"#/components/responses/trait_404"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Retrieving a brand"}}}}
```

## Updating a brand

> Updates a specified brand by replacing all of its existing data with data from the request body.<br>

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":["brand.brand_manage"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"parameters":{"header_content_language":{"name":"Content-Language","in":"header","description":"Defines the language in which the localized fields are specified.\nIf set to `*`, the request body may contain translations into all languages specified in the tenant configuration.\nThe specified language need to be defined in the Configuration Serivce under `project_lang` key.\n\n**Note**: If not specified, localized fields will be saved in the default language configured by the tenant in the Configuration Service.\n","schema":{"type":"string"},"required":false}},"schemas":{"updateBrand":{"title":"Brand","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"metadata":{"$ref":"#/components/schemas/updateMetaData"}}},"updateMetaData":{"title":"Metadata","type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Object version."}}},"brandResponse":{"title":"Brand Response","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"cloudinaryUrl":{"type":"string","description":"Id of the associated media file."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"image":{"type":"string","description":"Link to the associated media file."},"mediaId":{"type":"string","description":"Id of the media."},"id":{"type":"string","description":"Unique identifier of a brand."},"metadata":{"$ref":"#/components/schemas/metaData"}}},"metaData":{"title":"Metadata","type":"object","properties":{"createdAt":{"type":"string","description":"Date and time when the object was created compliant with the ISO 8601 standard."},"modifiedAt":{"type":"string","description":"Date and time when the object was last modified compliant with the ISO 8601 standard."},"version":{"minimum":1,"type":"integer","description":"Object version."}}},"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}},"responses":{"trait_400":{"description":"Request syntactically incorrect. Details of the error are included in the response payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_403":{"description":"Given authorization scopes are not sufficient and do not match the required scopes.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_404":{"description":"The requested resource does not exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}}},"paths":{"/brand/brands/{brandId}":{"put":{"tags":["Brands"],"description":"Updates a specified brand by replacing all of its existing data with data from the request body.\n","operationId":"PUT-brand-update-brand","parameters":[{"$ref":"#/components/parameters/header_content_language"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/updateBrand"}}},"required":false},"responses":{"200":{"description":"The brand has been successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/brandResponse"}}}},"400":{"$ref":"#/components/responses/trait_400"},"403":{"$ref":"#/components/responses/trait_403"},"404":{"$ref":"#/components/responses/trait_404"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Updating a brand"}}}}
```

## Deleting a brand

> Deletes a specified brand.<br>

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":["brand.brand_delete"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"responses":{"trait_403":{"description":"Given authorization scopes are not sufficient and do not match the required scopes.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_404":{"description":"The requested resource does not exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}},"schemas":{"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}}},"paths":{"/brand/brands/{brandId}":{"delete":{"tags":["Brands"],"description":"Deletes a specified brand.\n","operationId":"DELETE-brand-remove-brand","responses":{"204":{"description":"The brand has been successfully deleted."},"403":{"$ref":"#/components/responses/trait_403"},"404":{"$ref":"#/components/responses/trait_404"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Deleting a brand"}}}}
```

## Partially updating a brand

> Partially updates a specified brand by replacing fields provided in the request body.<br>

```json
{"openapi":"3.0.1","info":{"title":"Brand Service","version":"0.0.1"},"tags":[{"name":"Brands","description":"Manage brands"}],"servers":[{"url":"https://api.emporix.io"}],"security":[{"OAuth2":["brand.brand_manage"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api.emporix.io/oauth/token","scopes":{"brand.brand_manage":"Needed to manage brands."}}}}},"parameters":{"header_content_language":{"name":"Content-Language","in":"header","description":"Defines the language in which the localized fields are specified.\nIf set to `*`, the request body may contain translations into all languages specified in the tenant configuration.\nThe specified language need to be defined in the Configuration Serivce under `project_lang` key.\n\n**Note**: If not specified, localized fields will be saved in the default language configured by the tenant in the Configuration Service.\n","schema":{"type":"string"},"required":false}},"schemas":{"updateBrand":{"title":"Brand","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"metadata":{"$ref":"#/components/schemas/updateMetaData"}}},"updateMetaData":{"title":"Metadata","type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Object version."}}},"brandResponse":{"title":"Brand Response","type":"object","properties":{"name":{"type":"string","description":"Brand name."},"cloudinaryUrl":{"type":"string","description":"Id of the associated media file."},"description":{"type":"string","description":"Brand description."},"localizedName":{"type":"object","description":"Map of key-value pairs containing localized names of the brand.","additionalProperties":{"type":"string"}},"localizedDescription":{"type":"object","description":"Map of key-value pairs containing localized descriptions of the brand.","additionalProperties":{"type":"string"}},"image":{"type":"string","description":"Link to the associated media file."},"mediaId":{"type":"string","description":"Id of the media."},"id":{"type":"string","description":"Unique identifier of a brand."},"metadata":{"$ref":"#/components/schemas/metaData"}}},"metaData":{"title":"Metadata","type":"object","properties":{"createdAt":{"type":"string","description":"Date and time when the object was created compliant with the ISO 8601 standard."},"modifiedAt":{"type":"string","description":"Date and time when the object was last modified compliant with the ISO 8601 standard."},"version":{"minimum":1,"type":"integer","description":"Object version."}}},"error":{"title":"error","required":["status","code","message"],"type":"object","properties":{"code":{"maximum":599,"minimum":100,"type":"integer","description":"Original HTTP error code, should be consistent with the response HTTP code."},"status":{"type":"string","description":"HTTP status"},"errorCode":{"type":"string","description":"Code of the error"},"resourceId":{"type":"string","description":"Id of the resource"},"message":{"type":"string","description":"Descriptive error message for debugging."},"details":{"type":"array","description":"List of problems causing this error.","items":{"title":"errorDetail","oneOf":[{"type":"string","description":"detailed exception message"},{"type":"object","properties":{"field":{"type":"string","description":"A bean notation expression specifying the element in the request data that causes the error, for example `product.variants[3].name`. This field may be empty if the violation was not field-specific."},"type":{"pattern":"[a-z]+[a-z_]*[a-z]+","type":"string","description":"Classification of the error detail type, provided in lower case with underscore, for example missing_value. This value must always be interpreted in the context of the general error type."},"message":{"type":"string","description":"Descriptive and detailed message for debugging."},"moreInfo":{"type":"string","description":"Link to documentation."}},"description":"Schema for the specific error cause."}]}}},"description":"Schema for API-specific errors."}},"responses":{"trait_400":{"description":"Request syntactically incorrect. Details of the error are included in the response payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_403":{"description":"Given authorization scopes are not sufficient and do not match the required scopes.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_404":{"description":"The requested resource does not exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"trait_500":{"description":"Some server side error occurred.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}}},"paths":{"/brand/brands/{brandId}":{"patch":{"tags":["Brands"],"description":"Partially updates a specified brand by replacing fields provided in the request body.\n","operationId":"PATCH-brand-update-brand","parameters":[{"$ref":"#/components/parameters/header_content_language"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/updateBrand"}}},"required":false},"responses":{"200":{"description":"The brand has been successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/brandResponse"}}}},"400":{"$ref":"#/components/responses/trait_400"},"403":{"$ref":"#/components/responses/trait_403"},"404":{"$ref":"#/components/responses/trait_404"},"500":{"$ref":"#/components/responses/trait_500"}},"summary":"Partially updating a brand"}}}}
```


---

# Agent Instructions: 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:

```
GET https://developer.emporix.io/api-references/api-guides/products-labels-and-brands/brand-service/api-reference/brands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
