# SalesChannelProductCategories

## Get product category

> Retrieve a specific product category by ID.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"id_path":{"name":"id","in":"path","description":"Unique identifier of the resource","required":true,"schema":{"type":"integer"}}},"schemas":{"ProductCategory":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"type":"integer","format":"int64","description":"Foreign key to Product object"},"category":{"type":"integer","format":"int64","description":"Foreign key to CategoryNode object"},"modified_date":{"type":"string","format":"date-time","description":"Last modification date of the product category relationship","readOnly":true},"created_date":{"type":"string","format":"date-time","description":"Creation date of the product category relationship","readOnly":true}}}},"responses":{"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{id}/":{"get":{"summary":"Get product category","description":"Retrieve a specific product category by ID.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/id_path"}],"responses":{"200":{"description":"Product category","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCategory"}}}},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Update product category (full update)

> Update a product category with full replacement of fields.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"id_path":{"name":"id","in":"path","description":"Unique identifier of the resource","required":true,"schema":{"type":"integer"}}},"schemas":{"ProductCategory":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"type":"integer","format":"int64","description":"Foreign key to Product object"},"category":{"type":"integer","format":"int64","description":"Foreign key to CategoryNode object"},"modified_date":{"type":"string","format":"date-time","description":"Last modification date of the product category relationship","readOnly":true},"created_date":{"type":"string","format":"date-time","description":"Creation date of the product category relationship","readOnly":true}}}},"responses":{"400":{"description":"Required field(s) are missing, data is invalid, or the action is not allowed.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field":{"oneOf":[{"type":"array","description":"Indicates that no value was provided for the {field} field in the request.","items":{"type":"string"}},{"type":"array","description":"Indicates usage of a non-existent object for {field} in the request.","items":{"type":"string"}}]},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"non_field_errors":{"description":"Indicates invalid data or action usage in the request.","type":"array","items":{"type":"string"}},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"detail":{"description":"Provides a detailed message for the given error.","type":"string"},"code":{"type":"string","description":"Represents the server-side error code."}}}]}}}},"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"},"ProductNotInCategoryException":{"content":{}},"ProductInMultipleCategoriesException":{"content":{}},"CategoryIsNotLeafException":{"content":{}},"ProductAlreadyExistsOnTreeException":{"content":{}}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{id}/":{"put":{"summary":"Update product category (full update)","description":"Update a product category with full replacement of fields.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/id_path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["product","category"],"properties":{"product":{"type":"integer","format":"int64","description":"ID of the product to categorize"},"category":{"type":"integer","format":"int64","description":"ID of the category node"}}}}}},"responses":{"200":{"description":"Product category updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCategory"}}}},"400":{"$ref":"#/components/responses/400"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"422":{"description":"Invalid product or category","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/responses/ProductNotInCategoryException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductInMultipleCategoriesException/content/application~1json/schema"},{"$ref":"#/components/responses/CategoryIsNotLeafException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductAlreadyExistsOnTreeException/content/application~1json/schema"}]}}}},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Delete product category

> Delete a specific product category by ID. This will remove the association between the product and category.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"id_path":{"name":"id","in":"path","description":"Unique identifier of the resource","required":true,"schema":{"type":"integer"}}},"responses":{"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{id}/":{"delete":{"summary":"Delete product category","description":"Delete a specific product category by ID. This will remove the association between the product and category.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/id_path"}],"responses":{"204":{"description":"Product category deleted successfully"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Update product category (partial update)

> Partially update a product category.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"id_path":{"name":"id","in":"path","description":"Unique identifier of the resource","required":true,"schema":{"type":"integer"}}},"schemas":{"ProductCategory":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"type":"integer","format":"int64","description":"Foreign key to Product object"},"category":{"type":"integer","format":"int64","description":"Foreign key to CategoryNode object"},"modified_date":{"type":"string","format":"date-time","description":"Last modification date of the product category relationship","readOnly":true},"created_date":{"type":"string","format":"date-time","description":"Creation date of the product category relationship","readOnly":true}}}},"responses":{"400":{"description":"Required field(s) are missing, data is invalid, or the action is not allowed.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field":{"oneOf":[{"type":"array","description":"Indicates that no value was provided for the {field} field in the request.","items":{"type":"string"}},{"type":"array","description":"Indicates usage of a non-existent object for {field} in the request.","items":{"type":"string"}}]},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"non_field_errors":{"description":"Indicates invalid data or action usage in the request.","type":"array","items":{"type":"string"}},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"detail":{"description":"Provides a detailed message for the given error.","type":"string"},"code":{"type":"string","description":"Represents the server-side error code."}}}]}}}},"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"},"ProductNotInCategoryException":{"content":{}},"ProductInMultipleCategoriesException":{"content":{}},"CategoryIsNotLeafException":{"content":{}},"ProductAlreadyExistsOnTreeException":{"content":{}}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{id}/":{"patch":{"summary":"Update product category (partial update)","description":"Partially update a product category.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/id_path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"product":{"type":"integer","format":"int64","description":"ID of the product to categorize"},"category":{"type":"integer","format":"int64","description":"ID of the category node"}}}}}},"responses":{"200":{"description":"Product category updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCategory"}}}},"400":{"$ref":"#/components/responses/400"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"422":{"description":"Invalid product or category","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/responses/ProductNotInCategoryException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductInMultipleCategoriesException/content/application~1json/schema"},{"$ref":"#/components/responses/CategoryIsNotLeafException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductAlreadyExistsOnTreeException/content/application~1json/schema"}]}}}},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Get detailed product category

> Retrieve detailed information for a specific product category, including full product and category details.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"id_path":{"name":"id","in":"path","description":"Unique identifier of the resource","required":true,"schema":{"type":"integer"}}},"schemas":{"ProductCategoryDetailed":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"$ref":"#/components/schemas/Product"},"category":{"$ref":"#/components/schemas/CategoryNode"}}},"Product":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique identifier for the product"},"name":{"type":"string","description":"Name of the product","maxLength":255},"base_code":{"type":"string","description":"Base code for product variants","nullable":true},"sku":{"type":"string","description":"Stock keeping unit - unique identifier for the product","maxLength":255},"uuid":{"type":"string","format":"uuid","description":"Unique identifier for the product price."},"description":{"type":"string","description":"Detailed description of the product","maxLength":512,"nullable":true},"brand":{"type":"integer","description":"Foreign key to Brand model","nullable":true},"erp_categories":{"type":"array","items":{"type":"integer"},"description":"List of ERP category IDs"},"tax_rate":{"type":"number","format":"decimal","description":"Tax rate percentage","maximum":999.99,"minimum":0,"nullable":true},"weight":{"type":"number","format":"decimal","description":"Product weight","maximum":99999999.99,"minimum":0,"nullable":true},"product_type":{"type":"string","enum":["pre_product","simple","product_meta","bundle","grouped","pre_miscellaneous","miscellaneous","offer"],"description":"Type of the product"},"productization_date":{"type":"string","format":"date-time","nullable":true,"description":"Date when product was productized from pre status"},"data_source":{"type":"integer","description":"Foreign key to DataSource model","nullable":true},"created_date":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the product was created"},"modified_date":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the product was last updated"},"is_active":{"type":"boolean","description":"Whether the product is currently active","default":true},"attribute_set":{"type":"integer","description":"Foreign key to AttributeSet model","nullable":true},"parent":{"type":"integer","description":"Foreign key to parent Product","nullable":true},"group_products":{"type":"array","items":{"type":"integer"},"description":"List of product IDs in the group","nullable":true},"attributes":{"type":"object","description":"Dynamic attributes stored as JSON","additionalProperties":true,"nullable":true},"listing_code":{"type":"string","description":"Listing code for the product","nullable":true},"is_seller_product":{"type":"boolean","description":"Whether the product is a seller product","default":false},"custom_attribute_set":{"type":"integer","description":"Foreign key to AttributeSet model","nullable":true}},"required":["name","sku","barcode","product_type"]},"CategoryNode":{"type":"object","allOf":[{"$ref":"#/components/schemas/UUIDStarterModel"},{"$ref":"#/components/schemas/Entity"},{"$ref":"#/components/schemas/MP_Node"}],"properties":{"pk":{"type":"integer","format":"int64","readOnly":true,"description":"Category Node ID"},"order":{"type":"integer","description":"Order of the category node"},"name":{"type":"string","maxLength":64,"description":"Name of the category node."},"remote_attributes":{"type":"object","description":"Remote attributes of the category node","nullable":true},"sort_option":{"type":"integer","description":"Related sort option object ID"},"marketplace_attribute_set":{"type":"integer","description":"Related marketplace attribute set object ID"}},"required":["pk","order","name","created_date","modified_date"]},"UUIDStarterModel":{"type":"object","properties":{"created_date":{"type":"string","format":"date-time","readOnly":true,"description":"The date and time when the object was created."},"modified_date":{"type":"string","format":"date-time","description":"The date and time when the object was last modified."},"uuid":{"type":"string","format":"uuid","description":"Unique UUID identifier","readOnly":true}}},"Entity":{"type":"object","properties":{"attributes":{"type":"object","description":"A JSON object to store various attributes of the entity."},"attributes_kwargs":{"type":"object","description":"A JSON object to store additional attribute keyword arguments."},"localized_attributes":{"type":"object","description":"A JSON object to store localized attributes."},"localized_attributes_kwargs":{"type":"object","description":"A JSON object to store localized attributes keyword arguments."}}},"MP_Node":{"type":"object","properties":{"path":{"type":"string","description":"The path of the node in the tree."},"depth":{"type":"integer","description":"The depth of the node in the tree."},"numchild":{"type":"integer","description":"The number of children the node has."}}}},"responses":{"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{id}/detailed/":{"get":{"summary":"Get detailed product category","description":"Retrieve detailed information for a specific product category, including full product and category details.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/id_path"}],"responses":{"200":{"description":"Detailed product category information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCategoryDetailed"}}}},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Get bulk create status

> Get the current status of a bulk create operation. Returns progress information, errors, and overall status of the operation.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"bulk_cache_key":{"name":"pk","in":"path","required":true,"description":"Bulk operation cache key","schema":{"type":"string","format":"uuid"}}},"schemas":{"BulkProcessStatus":{"type":"object","properties":{"progress":{"type":"array","items":{"type":"array","items":{"type":"integer"}},"description":"Progress information for each chunk, where the first value is the current progress and the second is the total size"},"errors":{"type":"array","items":{"type":"string"},"description":"List of errors encountered during the operation"},"chunk_count":{"type":"integer","description":"Total number of chunks the operation was divided into"},"status":{"type":"string","enum":["waiting","in_progress","completed","failed"],"description":"Current status of the bulk operation"}}}},"responses":{"500":{"description":"Server Error"},"BulkProcessInvalidCacheKey":{"content":{}}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{pk}/bulk_create_status/":{"get":{"summary":"Get bulk create status","description":"Get the current status of a bulk create operation. Returns progress information, errors, and overall status of the operation.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/bulk_cache_key"}],"responses":{"200":{"description":"Bulk operation status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkProcessStatus"}}}},"404":{"description":"Invalid cache key","content":{"application/json":{"schema":{"$ref":"#/components/responses/BulkProcessInvalidCacheKey/content/application~1json/schema"}}}},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Get bulk delete status

> Get the current status of a bulk delete operation. Returns progress information, errors, and overall status of the operation.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"bulk_cache_key":{"name":"pk","in":"path","required":true,"description":"Bulk operation cache key","schema":{"type":"string","format":"uuid"}}},"schemas":{"BulkProcessStatus":{"type":"object","properties":{"progress":{"type":"array","items":{"type":"array","items":{"type":"integer"}},"description":"Progress information for each chunk, where the first value is the current progress and the second is the total size"},"errors":{"type":"array","items":{"type":"string"},"description":"List of errors encountered during the operation"},"chunk_count":{"type":"integer","description":"Total number of chunks the operation was divided into"},"status":{"type":"string","enum":["waiting","in_progress","completed","failed"],"description":"Current status of the bulk operation"}}}},"responses":{"500":{"description":"Server Error"},"BulkProcessInvalidCacheKey":{"description":"Invalid bulk operation cache key","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/{pk}/bulk_delete_status/":{"get":{"summary":"Get bulk delete status","description":"Get the current status of a bulk delete operation. Returns progress information, errors, and overall status of the operation.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/bulk_cache_key"}],"responses":{"200":{"description":"Bulk operation status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkProcessStatus"}}}},"404":{"$ref":"#/components/responses/BulkProcessInvalidCacheKey"},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## List product categories

> Retrieve a list of all product categories for the specified channel. Results can be filtered by product or category.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"product_id":{"name":"product","in":"query","description":"Filter by product ID","schema":{"type":"integer","format":"int64"}},"category_id":{"name":"category","in":"query","description":"Filter by category ID","schema":{"type":"integer","format":"int64"}}},"schemas":{"ProductCategory":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"type":"integer","format":"int64","description":"Foreign key to Product object"},"category":{"type":"integer","format":"int64","description":"Foreign key to CategoryNode object"},"modified_date":{"type":"string","format":"date-time","description":"Last modification date of the product category relationship","readOnly":true},"created_date":{"type":"string","format":"date-time","description":"Creation date of the product category relationship","readOnly":true}}}},"responses":{"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/":{"get":{"summary":"List product categories","description":"Retrieve a list of all product categories for the specified channel. Results can be filtered by product or category.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/product_id"},{"$ref":"#/components/parameters/category_id"}],"responses":{"200":{"description":"List of product categories","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductCategory"}}}}},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## Create product category

> Create a new product category. Associates a product with a category in the channel's category tree.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}}},"schemas":{"ProductCategory":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"type":"integer","format":"int64","description":"Foreign key to Product object"},"category":{"type":"integer","format":"int64","description":"Foreign key to CategoryNode object"},"modified_date":{"type":"string","format":"date-time","description":"Last modification date of the product category relationship","readOnly":true},"created_date":{"type":"string","format":"date-time","description":"Creation date of the product category relationship","readOnly":true}}}},"responses":{"400":{"description":"Required field(s) are missing, data is invalid, or the action is not allowed.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field":{"oneOf":[{"type":"array","description":"Indicates that no value was provided for the {field} field in the request.","items":{"type":"string"}},{"type":"array","description":"Indicates usage of a non-existent object for {field} in the request.","items":{"type":"string"}}]},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"non_field_errors":{"description":"Indicates invalid data or action usage in the request.","type":"array","items":{"type":"string"}},"code":{"type":"string","description":"Represents the server-side error code."}}},{"type":"object","properties":{"detail":{"description":"Provides a detailed message for the given error.","type":"string"},"code":{"type":"string","description":"Represents the server-side error code."}}}]}}}},"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"},"ProductNotInCategoryException":{"content":{}},"ProductInMultipleCategoriesException":{"content":{}},"CategoryIsNotLeafException":{"content":{}},"ProductAlreadyExistsOnTreeException":{"content":{}}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/":{"post":{"summary":"Create product category","description":"Create a new product category. Associates a product with a category in the channel's category tree.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["product","category"],"properties":{"product":{"type":"integer","format":"int64","description":"ID of the product to categorize"},"category":{"type":"integer","format":"int64","description":"ID of the category node"}}}}}},"responses":{"201":{"description":"Product category created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCategory"}}}},"400":{"$ref":"#/components/responses/400"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"422":{"description":"Invalid product or category","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/responses/ProductNotInCategoryException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductInMultipleCategoriesException/content/application~1json/schema"},{"$ref":"#/components/responses/CategoryIsNotLeafException/content/application~1json/schema"},{"$ref":"#/components/responses/ProductAlreadyExistsOnTreeException/content/application~1json/schema"}]}}}},"500":{"$ref":"#/components/responses/500"}}}}}}
```

## List detailed product categories

> Retrieve a detailed list of all product categories for the specified channel, including full product and category information.

```json
{"openapi":"3.0.3","info":{"title":"Omnitron API","version":"1.0.0"},"security":[{"Token":[]}],"components":{"securitySchemes":{"Token":{"type":"apiKey","in":"header","name":"Authorization"}},"parameters":{"channel_id":{"name":"channel_id","in":"path","required":true,"description":"Channel ID to operate on","schema":{"type":"integer","format":"int64"}},"product_id":{"name":"product","in":"query","description":"Filter by product ID","schema":{"type":"integer","format":"int64"}},"category_id":{"name":"category","in":"query","description":"Filter by category ID","schema":{"type":"integer","format":"int64"}}},"schemas":{"ProductCategoryDetailed":{"type":"object","properties":{"pk":{"type":"integer","format":"int64","description":"Product Category ID","readOnly":true},"product":{"$ref":"#/components/schemas/Product"},"category":{"$ref":"#/components/schemas/CategoryNode"}}},"Product":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true,"description":"Unique identifier for the product"},"name":{"type":"string","description":"Name of the product","maxLength":255},"base_code":{"type":"string","description":"Base code for product variants","nullable":true},"sku":{"type":"string","description":"Stock keeping unit - unique identifier for the product","maxLength":255},"uuid":{"type":"string","format":"uuid","description":"Unique identifier for the product price."},"description":{"type":"string","description":"Detailed description of the product","maxLength":512,"nullable":true},"brand":{"type":"integer","description":"Foreign key to Brand model","nullable":true},"erp_categories":{"type":"array","items":{"type":"integer"},"description":"List of ERP category IDs"},"tax_rate":{"type":"number","format":"decimal","description":"Tax rate percentage","maximum":999.99,"minimum":0,"nullable":true},"weight":{"type":"number","format":"decimal","description":"Product weight","maximum":99999999.99,"minimum":0,"nullable":true},"product_type":{"type":"string","enum":["pre_product","simple","product_meta","bundle","grouped","pre_miscellaneous","miscellaneous","offer"],"description":"Type of the product"},"productization_date":{"type":"string","format":"date-time","nullable":true,"description":"Date when product was productized from pre status"},"data_source":{"type":"integer","description":"Foreign key to DataSource model","nullable":true},"created_date":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the product was created"},"modified_date":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the product was last updated"},"is_active":{"type":"boolean","description":"Whether the product is currently active","default":true},"attribute_set":{"type":"integer","description":"Foreign key to AttributeSet model","nullable":true},"parent":{"type":"integer","description":"Foreign key to parent Product","nullable":true},"group_products":{"type":"array","items":{"type":"integer"},"description":"List of product IDs in the group","nullable":true},"attributes":{"type":"object","description":"Dynamic attributes stored as JSON","additionalProperties":true,"nullable":true},"listing_code":{"type":"string","description":"Listing code for the product","nullable":true},"is_seller_product":{"type":"boolean","description":"Whether the product is a seller product","default":false},"custom_attribute_set":{"type":"integer","description":"Foreign key to AttributeSet model","nullable":true}},"required":["name","sku","barcode","product_type"]},"CategoryNode":{"type":"object","allOf":[{"$ref":"#/components/schemas/UUIDStarterModel"},{"$ref":"#/components/schemas/Entity"},{"$ref":"#/components/schemas/MP_Node"}],"properties":{"pk":{"type":"integer","format":"int64","readOnly":true,"description":"Category Node ID"},"order":{"type":"integer","description":"Order of the category node"},"name":{"type":"string","maxLength":64,"description":"Name of the category node."},"remote_attributes":{"type":"object","description":"Remote attributes of the category node","nullable":true},"sort_option":{"type":"integer","description":"Related sort option object ID"},"marketplace_attribute_set":{"type":"integer","description":"Related marketplace attribute set object ID"}},"required":["pk","order","name","created_date","modified_date"]},"UUIDStarterModel":{"type":"object","properties":{"created_date":{"type":"string","format":"date-time","readOnly":true,"description":"The date and time when the object was created."},"modified_date":{"type":"string","format":"date-time","description":"The date and time when the object was last modified."},"uuid":{"type":"string","format":"uuid","description":"Unique UUID identifier","readOnly":true}}},"Entity":{"type":"object","properties":{"attributes":{"type":"object","description":"A JSON object to store various attributes of the entity."},"attributes_kwargs":{"type":"object","description":"A JSON object to store additional attribute keyword arguments."},"localized_attributes":{"type":"object","description":"A JSON object to store localized attributes."},"localized_attributes_kwargs":{"type":"object","description":"A JSON object to store localized attributes keyword arguments."}}},"MP_Node":{"type":"object","properties":{"path":{"type":"string","description":"The path of the node in the tree."},"depth":{"type":"integer","description":"The depth of the node in the tree."},"numchild":{"type":"integer","description":"The number of children the node has."}}}},"responses":{"403":{"description":"Forbidden"},"404":{"description":"The given resource or object was not found or does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"description":"Contains a detailed description of the error.","type":"string"}}}}}},"500":{"description":"Server Error"}}},"paths":{"/api/v1/channel/{channel_id}/product_categories/detailed/":{"get":{"summary":"List detailed product categories","description":"Retrieve a detailed list of all product categories for the specified channel, including full product and category information.","tags":["SalesChannelProductCategories"],"parameters":[{"$ref":"#/components/parameters/channel_id"},{"$ref":"#/components/parameters/product_id"},{"$ref":"#/components/parameters/category_id"}],"responses":{"200":{"description":"Detailed list of product categories","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductCategoryDetailed"}}}}},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"500":{"$ref":"#/components/responses/500"}}}}}}
```
