# Products

Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants. The data model for products are described by product structures.

## Get ids of all products in the system

> By default, ids for archived products are not returned

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/ids":{"get":{"tags":["Products"],"summary":"Get ids of all products in the system","description":"By default, ids for archived products are not returned","parameters":[{"name":"includeArchived","in":"query","description":"Include archived products","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## GET /v1/products/{id}

> Get basic model for a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductModel":{"type":"object","properties":{"Id":{"type":"integer","description":"Unique id of the product","format":"int32"},"Name":{"type":"object","additionalProperties":{"type":"string"},"description":"Display name of product (Dictionary of ISO culture code and name)\r\nNote: Available from 3.7.0","nullable":true},"Created":{"type":"string","description":"Timestamp of the product creation","format":"date-time"},"CreatedBy":{"type":"string","description":"Username of the user who created the product","nullable":true},"LastModified":{"type":"string","description":"Timestamp of the last product update","format":"date-time"},"LastModifiedBy":{"type":"string","description":"Username of the user who made the last change to the product","nullable":true},"VariationDefinitionUid":{"type":"string","description":"Variation definition reference. For more information, Struct.App.Api.Models.ProductStructure.VariationDefinition for more information","format":"uuid","nullable":true},"IsArchived":{"type":"boolean","description":"Indicates whether the product is archived"},"ArchiveReason":{"type":"string","description":"The uid of the archive reason selected when the product was archived","format":"uuid","nullable":true},"ProductStructureUid":{"type":"string","description":"The uid of the product structure used for this product","format":"uuid"},"WorkflowStateUid":{"type":"string","description":"The uid of the workflow state of the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this product is associated with","nullable":true},"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductClassificationModel"},"description":"The category classificatoins of the product","nullable":true}},"additionalProperties":false,"description":"Represents the root information always present on a product"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."},"Struct.App.Api.Models.Product.ProductClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true},"IsMasterCatalogue":{"type":"boolean","description":"Indication whether this classification is the master catalogue for the product"},"CatalogueUid":{"type":"string","description":"The catalogue uid of the category the product is classified in","format":"uuid"},"IsDynamicCategory":{"type":"boolean","description":"Indication whether this classification is a dynamic category"}},"additionalProperties":false,"description":"Holds information on products placement in categories"}}},"paths":{"/v1/products/{id}":{"get":{"tags":["Products"],"summary":"Get basic model for a product","parameters":[{"name":"id","in":"path","description":"Id of product to return","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductModel"}}}}}}}}}
```

## DELETE /v1/products/{id}

> Delete a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/{id}":{"delete":{"tags":["Products"],"summary":"Delete a product","parameters":[{"name":"id","in":"path","description":"Id of product to delete","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## PATCH /v1/products/{id}

> Update a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.UpdateProductModel":{"type":"object","properties":{"ProductStructureUid":{"type":"string","description":"Product structure to set on product","format":"uuid","nullable":true},"VariationDefinitionUid":{"type":"string","description":"Variation definition to set on product","format":"uuid","nullable":true},"IsArchived":{"type":"boolean","description":"Indicate whether the product shall be archived or un-archived","nullable":true},"ArchiveReason":{"type":"string","description":"Reference to the archive reason when archiving product (if IsArchived is true)","format":"uuid","nullable":true},"ClassificationsUpdate":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.UpdateProductClassificationsModel"},"WorkflowStateUid":{"type":"string","description":"Workflow state to set on the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"Business unit relations to set on the product","nullable":true},"Values":{"type":"object","additionalProperties":{},"description":"Dictionary of attribute alias and the corresponding attribute value as an object representation","nullable":true}},"additionalProperties":false,"description":"Update model containing the updates to make on a product. Note that properties with null values will be ignored and will not cause an update.\r\nThis means you should only set properties that shall be updated on the product"},"Struct.App.Api.Models.Product.UpdateProductClassificationsModel":{"type":"object","properties":{"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.SetClassificationModel"},"description":"Classifications to add or update for the product","nullable":true},"UpdateMethod":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ClassificationUpdateMethod"},"RemoveWhereOwnerReferenceIs":{"type":"string","description":"If UpdateMethod is RemoveWhereOwnerReferenceMatches, this property can be set to remove all classifications where OwnerReference matches this value.\r\nNote that this is a case-insensitive comparison and that this property is ignored if UpdateMethod is not RemoveWhereOwnerReferenceMatches, but required if it is.","nullable":true}},"additionalProperties":false,"description":"Model for adding classification to a product"},"Struct.App.Api.Models.Product.SetClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true}},"additionalProperties":false,"description":"Model for adding or updating a classification of a product"},"Struct.App.Api.Models.Product.ClassificationUpdateMethod":{"enum":[0,1,2],"type":"integer","description":"Method to use when updating classifications of a product \n\n- `0` = **Replace**: Replace all classifications with the provided classifications\n- `1` = **Add**: Add the provided classifications to the existing classifications\n- `2` = **RemoveWhereOwnerReferenceMatches**: Remove the provided classifications from the existing classifications","format":"int32"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."}}},"paths":{"/v1/products/{id}":{"patch":{"tags":["Products"],"summary":"Update a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Update model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.UpdateProductModel"}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## POST /v1/products/batch

> Get basic model for a range of products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductModel":{"type":"object","properties":{"Id":{"type":"integer","description":"Unique id of the product","format":"int32"},"Name":{"type":"object","additionalProperties":{"type":"string"},"description":"Display name of product (Dictionary of ISO culture code and name)\r\nNote: Available from 3.7.0","nullable":true},"Created":{"type":"string","description":"Timestamp of the product creation","format":"date-time"},"CreatedBy":{"type":"string","description":"Username of the user who created the product","nullable":true},"LastModified":{"type":"string","description":"Timestamp of the last product update","format":"date-time"},"LastModifiedBy":{"type":"string","description":"Username of the user who made the last change to the product","nullable":true},"VariationDefinitionUid":{"type":"string","description":"Variation definition reference. For more information, Struct.App.Api.Models.ProductStructure.VariationDefinition for more information","format":"uuid","nullable":true},"IsArchived":{"type":"boolean","description":"Indicates whether the product is archived"},"ArchiveReason":{"type":"string","description":"The uid of the archive reason selected when the product was archived","format":"uuid","nullable":true},"ProductStructureUid":{"type":"string","description":"The uid of the product structure used for this product","format":"uuid"},"WorkflowStateUid":{"type":"string","description":"The uid of the workflow state of the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this product is associated with","nullable":true},"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductClassificationModel"},"description":"The category classificatoins of the product","nullable":true}},"additionalProperties":false,"description":"Represents the root information always present on a product"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."},"Struct.App.Api.Models.Product.ProductClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true},"IsMasterCatalogue":{"type":"boolean","description":"Indication whether this classification is the master catalogue for the product"},"CatalogueUid":{"type":"string","description":"The catalogue uid of the category the product is classified in","format":"uuid"},"IsDynamicCategory":{"type":"boolean","description":"Indication whether this classification is a dynamic category"}},"additionalProperties":false,"description":"Holds information on products placement in categories"}}},"paths":{"/v1/products/batch":{"post":{"tags":["Products"],"summary":"Get basic model for a range of products","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductModel"}}}}}}}}}}
```

## Get basic models for products

> No more than 5000 products can be requested at a time. If no limit is provided, the default limit of 1000 will be used. By default, archived products are not returned

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductsResultSet":{"type":"object","properties":{"Products":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductModel"},"description":"List of products in result set","nullable":true},"Total":{"type":"integer","description":"The total number of items","format":"int32"},"Remaining":{"type":"integer","description":"The remaining items that lie after the last id of the item in this result set","format":"int32"},"LastId":{"type":"integer","description":"The id of the last item in this result set","format":"int32"}},"additionalProperties":false,"description":"Result set of products from a product query"},"Struct.App.Api.Models.Product.ProductModel":{"type":"object","properties":{"Id":{"type":"integer","description":"Unique id of the product","format":"int32"},"Name":{"type":"object","additionalProperties":{"type":"string"},"description":"Display name of product (Dictionary of ISO culture code and name)\r\nNote: Available from 3.7.0","nullable":true},"Created":{"type":"string","description":"Timestamp of the product creation","format":"date-time"},"CreatedBy":{"type":"string","description":"Username of the user who created the product","nullable":true},"LastModified":{"type":"string","description":"Timestamp of the last product update","format":"date-time"},"LastModifiedBy":{"type":"string","description":"Username of the user who made the last change to the product","nullable":true},"VariationDefinitionUid":{"type":"string","description":"Variation definition reference. For more information, Struct.App.Api.Models.ProductStructure.VariationDefinition for more information","format":"uuid","nullable":true},"IsArchived":{"type":"boolean","description":"Indicates whether the product is archived"},"ArchiveReason":{"type":"string","description":"The uid of the archive reason selected when the product was archived","format":"uuid","nullable":true},"ProductStructureUid":{"type":"string","description":"The uid of the product structure used for this product","format":"uuid"},"WorkflowStateUid":{"type":"string","description":"The uid of the workflow state of the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this product is associated with","nullable":true},"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductClassificationModel"},"description":"The category classificatoins of the product","nullable":true}},"additionalProperties":false,"description":"Represents the root information always present on a product"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."},"Struct.App.Api.Models.Product.ProductClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true},"IsMasterCatalogue":{"type":"boolean","description":"Indication whether this classification is the master catalogue for the product"},"CatalogueUid":{"type":"string","description":"The catalogue uid of the category the product is classified in","format":"uuid"},"IsDynamicCategory":{"type":"boolean","description":"Indication whether this classification is a dynamic category"}},"additionalProperties":false,"description":"Holds information on products placement in categories"}}},"paths":{"/v1/products":{"get":{"tags":["Products"],"summary":"Get basic models for products","description":"No more than 5000 products can be requested at a time. If no limit is provided, the default limit of 1000 will be used. By default, archived products are not returned","parameters":[{"name":"includeArchived","in":"query","description":"Include archived products","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","description":"Number of products to return","schema":{"type":"integer","format":"int32","default":1000}},{"name":"afterId","in":"query","description":"Only return products with id larger than this value","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductsResultSet"}}}}}}}}}
```

## Create new products

> A maximum of 5000 products can be created in one request

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.CreateProductModel":{"type":"object","properties":{"ProductStructureUid":{"type":"string","description":"Product structure to use for product","format":"uuid"},"VariationDefinitionUid":{"type":"string","description":"Variation definition to use for product","format":"uuid","nullable":true},"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.SetClassificationModel"},"description":"Classifications to set on the product","nullable":true},"WorkflowStateUid":{"type":"string","description":"Workflow state to set on the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"Business unit relations to set on the product","nullable":true},"Values":{"type":"object","additionalProperties":{},"description":"Dictionary of attribute alias and the corresponding attribute value as an object representation","nullable":true}},"additionalProperties":false,"description":"Model used to create a new product"},"Struct.App.Api.Models.Product.SetClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true}},"additionalProperties":false,"description":"Model for adding or updating a classification of a product"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."}}},"paths":{"/v1/products":{"post":{"tags":["Products"],"summary":"Create new products","description":"A maximum of 5000 products can be created in one request","requestBody":{"description":"Products","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.CreateProductModel"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## DELETE /v1/products

> Delete multiple products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products":{"delete":{"tags":["Products"],"summary":"Delete multiple products","requestBody":{"description":"Ids of products to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## PATCH /v1/products

> Update multiple products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.BatchUpdateProductModel":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id of product to update","format":"int32"},"UpdateModel":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.UpdateProductModel"}},"additionalProperties":false,"description":"Update model for a product"},"Struct.App.Api.Models.Product.UpdateProductModel":{"type":"object","properties":{"ProductStructureUid":{"type":"string","description":"Product structure to set on product","format":"uuid","nullable":true},"VariationDefinitionUid":{"type":"string","description":"Variation definition to set on product","format":"uuid","nullable":true},"IsArchived":{"type":"boolean","description":"Indicate whether the product shall be archived or un-archived","nullable":true},"ArchiveReason":{"type":"string","description":"Reference to the archive reason when archiving product (if IsArchived is true)","format":"uuid","nullable":true},"ClassificationsUpdate":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.UpdateProductClassificationsModel"},"WorkflowStateUid":{"type":"string","description":"Workflow state to set on the product","format":"uuid","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"Business unit relations to set on the product","nullable":true},"Values":{"type":"object","additionalProperties":{},"description":"Dictionary of attribute alias and the corresponding attribute value as an object representation","nullable":true}},"additionalProperties":false,"description":"Update model containing the updates to make on a product. Note that properties with null values will be ignored and will not cause an update.\r\nThis means you should only set properties that shall be updated on the product"},"Struct.App.Api.Models.Product.UpdateProductClassificationsModel":{"type":"object","properties":{"Classifications":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.SetClassificationModel"},"description":"Classifications to add or update for the product","nullable":true},"UpdateMethod":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ClassificationUpdateMethod"},"RemoveWhereOwnerReferenceIs":{"type":"string","description":"If UpdateMethod is RemoveWhereOwnerReferenceMatches, this property can be set to remove all classifications where OwnerReference matches this value.\r\nNote that this is a case-insensitive comparison and that this property is ignored if UpdateMethod is not RemoveWhereOwnerReferenceMatches, but required if it is.","nullable":true}},"additionalProperties":false,"description":"Model for adding classification to a product"},"Struct.App.Api.Models.Product.SetClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true}},"additionalProperties":false,"description":"Model for adding or updating a classification of a product"},"Struct.App.Api.Models.Product.ClassificationUpdateMethod":{"enum":[0,1,2],"type":"integer","description":"Method to use when updating classifications of a product \n\n- `0` = **Replace**: Replace all classifications with the provided classifications\n- `1` = **Add**: Add the provided classifications to the existing classifications\n- `2` = **RemoveWhereOwnerReferenceMatches**: Remove the provided classifications from the existing classifications","format":"int32"},"Struct.App.Api.Models.Shared.BusinessUnitRelationModel":{"type":"object","properties":{"AccessPolicy":{"type":"string","description":"Access policy for this business unit relation","nullable":true},"BusinessUnitUid":{"type":"string","description":"The business unit uid","format":"uuid"}},"additionalProperties":false,"description":"Represents a relation between an entity and a business unit."}}},"paths":{"/v1/products":{"patch":{"tags":["Products"],"summary":"Update multiple products","requestBody":{"description":"Update model","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.BatchUpdateProductModel"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/products/identifiers/{identifierAlias}

> Get all identifiers and their internal ids for a specific identifier type

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/identifiers/{identifierAlias}":{"get":{"tags":["Products"],"summary":"Get all identifiers and their internal ids for a specific identifier type","parameters":[{"name":"identifierAlias","in":"path","description":"Alias of identifier type","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}}}}
```

## GET /v1/products/identifiers/{identifierAlias}/{identifier}

> Get the internal id of a product based on its identifier

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/identifiers/{identifierAlias}/{identifier}":{"get":{"tags":["Products"],"summary":"Get the internal id of a product based on its identifier","parameters":[{"name":"identifierAlias","in":"path","description":"Alias of identifier type","required":true,"schema":{"type":"string"}},{"name":"identifier","in":"path","description":"Identifier value","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"integer","format":"int32"}}}}}}}}}
```

## POST /v1/products/batch/identifiers

> Get internal ids of multiple products from their identifier

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Shared.IdentifierBatchModel":{"type":"object","properties":{"IdentifierAlias":{"type":"string","description":"The alias of the identifier","nullable":true},"Identifiers":{"type":"array","items":{"type":"string"},"description":"Array of identifiers to return internal ids for","nullable":true}},"additionalProperties":false,"description":"Provide an identifier alias along with an array of identifiers to get the internal entity ids matching those identifiers"}}},"paths":{"/v1/products/batch/identifiers":{"post":{"tags":["Products"],"summary":"Get internal ids of multiple products from their identifier","requestBody":{"description":"Specify alias of identifier type and the identifiers to return internal ids for","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.IdentifierBatchModel"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}}}}
```

## GET /v1/products/{id}/attributevalues

> Get attribute values for a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductAttributeValuesModel":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id of product","format":"int32"},"Values":{"type":"object","additionalProperties":{},"description":"Dictionary of attribute alias and the corresponding attribute value as an object representation","nullable":true}},"additionalProperties":false,"description":"Attribute values for a product"}}},"paths":{"/v1/products/{id}/attributevalues":{"get":{"tags":["Products"],"summary":"Get attribute values for a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"globalListValueReferencesOnly","in":"query","description":"Indicate if only uids of referenced to global list values shall be returned instead of the materialized values","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductAttributeValuesModel"}}}}}}}}}
```

## Get attribute values for multiple products

> No more than 5000 products can be requested at a time.

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductValuesRequestModel":{"type":"object","properties":{"ProductIds":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Ids of products to return","nullable":true},"IncludeValues":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.ValueIncludeMode"},"Scopes":{"type":"array","items":{"type":"string"},"description":"If IncludeValues is Scopes, define which scopes to return values for here","nullable":true},"Aliases":{"type":"array","items":{"type":"string"},"description":"If IncludeValues is Aliases, define aliases of the attributes to include values for","nullable":true},"Uids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"If IncludeValues is Uids, define uids of the attributes to include values for","nullable":true},"LimitToCultureCodes":{"type":"array","items":{"type":"string"},"description":"Only return values for specific languages","nullable":true},"LimitToSegments":{"type":"array","items":{"type":"string"},"description":"Only return values for specific dimension segments","nullable":true},"GlobalListValueReferencesOnly":{"type":"boolean","description":"Indicate if only uids of referenced to global list values shall be returned instead of the materialized values"},"FromTimestamp":{"type":"string","description":"Get attribute values back in time","format":"date-time","nullable":true}},"additionalProperties":false,"description":"Define which categories to fetch data for and what data to fetch"},"Struct.App.Api.Models.Shared.ValueIncludeMode":{"enum":[1,2,3,4,5],"type":"integer","description":"Defines which attribute values to return \n\n- `1` = **All**: Return all attribute values\n- `2` = **Scopes**: Return values for scopes specified in request\n- `3` = **Aliases**: Return values for attribute aliases specified in request\n- `4` = **ScopesAndAliases**: Return values for attributes in specified scopes, plus values in the attributes specified by alias\n- `5` = **Uids**: Return values for attribute uids specified in request","format":"int32"},"Struct.App.Api.Models.Product.ProductAttributeValuesModel":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id of product","format":"int32"},"Values":{"type":"object","additionalProperties":{},"description":"Dictionary of attribute alias and the corresponding attribute value as an object representation","nullable":true}},"additionalProperties":false,"description":"Attribute values for a product"}}},"paths":{"/v1/products/batch/attributevalues":{"post":{"tags":["Products"],"summary":"Get attribute values for multiple products","description":"No more than 5000 products can be requested at a time.","requestBody":{"description":"Request model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductValuesRequestModel"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductAttributeValuesModel"}}}}}}}}}}
```

## GET /v1/products/{id}/classifications

> Get category classifications for a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true},"IsMasterCatalogue":{"type":"boolean","description":"Indication whether this classification is the master catalogue for the product"},"CatalogueUid":{"type":"string","description":"The catalogue uid of the category the product is classified in","format":"uuid"},"IsDynamicCategory":{"type":"boolean","description":"Indication whether this classification is a dynamic category"}},"additionalProperties":false,"description":"Holds information on products placement in categories"}}},"paths":{"/v1/products/{id}/classifications":{"get":{"tags":["Products"],"summary":"Get category classifications for a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductClassificationModel"}}}}}}}}}}
```

## POST /v1/products/{id}/classifications

> Update category classifications of a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.SetClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true}},"additionalProperties":false,"description":"Model for adding or updating a classification of a product"},"Microsoft.AspNetCore.Mvc.ProblemDetails":{"type":"object","properties":{"Type":{"type":"string","nullable":true},"Title":{"type":"string","nullable":true},"Status":{"type":"integer","format":"int32","nullable":true},"Detail":{"type":"string","nullable":true},"Instance":{"type":"string","nullable":true}},"additionalProperties":{}}}},"paths":{"/v1/products/{id}/classifications":{"post":{"tags":["Products"],"summary":"Update category classifications of a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Model with product id and categories to classify the product in","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.SetClassificationModel"}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## DELETE /v1/products/{id}/classifications

> Remove category classifications from a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/{id}/classifications":{"delete":{"tags":["Products"],"summary":"Remove category classifications from a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"category ids to remove the product from","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## POST /v1/products/batch/classifications

> Get category classifications for a batch of products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true},"IsMasterCatalogue":{"type":"boolean","description":"Indication whether this classification is the master catalogue for the product"},"CatalogueUid":{"type":"string","description":"The catalogue uid of the category the product is classified in","format":"uuid"},"IsDynamicCategory":{"type":"boolean","description":"Indication whether this classification is a dynamic category"}},"additionalProperties":false,"description":"Holds information on products placement in categories"}}},"paths":{"/v1/products/batch/classifications":{"post":{"tags":["Products"],"summary":"Get category classifications for a batch of products","requestBody":{"description":"Model containing batch of product ids","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductClassificationModel"}}}}}}}}}}}
```

## POST /v1/products/classifications

> Add category classifications to a batch of products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.SetClassificationModel":{"type":"object","properties":{"CategoryId":{"type":"integer","description":"Id of category the product is placed in","format":"int32"},"IsPrimary":{"type":"boolean","description":"Indication whether this classification is the primary classification for the product"},"OwnerReference":{"type":"string","description":"A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null.\r\nWhen creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the \r\nAPI can be distinguished from those made directly in the UI","nullable":true},"SortOrder":{"type":"integer","description":"Sort order of the product in this category","format":"int32","nullable":true}},"additionalProperties":false,"description":"Model for adding or updating a classification of a product"}}},"paths":{"/v1/products/classifications":{"post":{"tags":["Products"],"summary":"Add category classifications to a batch of products","requestBody":{"description":"Model containing batch og products and categories to classify these in","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.SetClassificationModel"}}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## DELETE /v1/products/classifications

> Remove category classifications from a batch of products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.RemoveClassificationsModel":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id to remove classifications from","format":"int32"},"CategoryIds":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Categories to remove product from","nullable":true}},"additionalProperties":false,"description":"Model for removing classifications for a product"}}},"paths":{"/v1/products/classifications":{"delete":{"tags":["Products"],"summary":"Remove category classifications from a batch of products","requestBody":{"description":"Model containing batch of products and the list of categories to remove them from","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.RemoveClassificationsModel"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/products/{id}/variants

> Get ids of variants of a product

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/{id}/variants":{"get":{"tags":["Products"],"summary":"Get ids of variants of a product","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"includeArchived","in":"query","description":"Return ids of archived variants as well","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## POST /v1/products/batch/variants

> Get ids of variants for a batch of products

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/batch/variants":{"post":{"tags":["Products"],"summary":"Get ids of variants for a batch of products","parameters":[{"name":"includeArchived","in":"query","description":"Return ids of archived variants as well","schema":{"type":"boolean","default":false}}],"requestBody":{"description":"Ids of products","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}}
```

## Get ids of variant groups associated to a product

> \#Available from v.3.11.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/{id}/variantgroups":{"get":{"tags":["Products"],"summary":"Get ids of variant groups associated to a product","description":"#Available from v.3.11.0","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"includeArchived","in":"query","description":"Return ids of archived variant groups as well","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## Get ids of variant groups for a batch of products

> \#Available from v.3.11.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/batch/variantgroups":{"post":{"tags":["Products"],"summary":"Get ids of variant groups for a batch of products","description":"#Available from v.3.11.0","parameters":[{"name":"includeArchived","in":"query","description":"Return ids of archived variant groups as well","schema":{"type":"boolean","default":false}}],"requestBody":{"description":"Ids of products","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}}
```

## Get references to a product

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductReferences":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id of the referenced product","format":"int32"},"ReferencingCategories":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of categories referencing this product","nullable":true},"ReferencingProducts":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of products referencing this product","nullable":true},"ReferencingVariantGroups":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variant groups referencing this product","nullable":true},"ReferencingVariants":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variants referencing this product","nullable":true},"ReferencingAssets":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of assets referencing this product","nullable":true},"ReferencingGlobalListValues":{"type":"array","items":{"type":"string","format":"uuid"},"description":"List of global list values referencing this product","nullable":true}},"additionalProperties":false,"description":"Model holding references from other entities to a product"},"Struct.App.Api.Models.Shared.EntityReferenceDetail":{"type":"object","properties":{"EntityId":{"type":"integer","description":"The id of the referencing entity","format":"int32"},"AttributeUid":{"type":"string","description":"The attribute on the referencing entity that holds the reference","format":"uuid"}},"additionalProperties":false,"description":"Model holding the attribute reference information for an entity reference"}}},"paths":{"/v1/products/{id}/references":{"get":{"tags":["Products"],"summary":"Get references to a product","description":"#Available from v.3.5.0","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductReferences"}}}}}}}}}
```

## Get references to a batch of products

> \#Available from v.3.5.0> \
> No more than 5000 values can be requested at a time.

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.ProductReferences":{"type":"object","properties":{"ProductId":{"type":"integer","description":"Id of the referenced product","format":"int32"},"ReferencingCategories":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of categories referencing this product","nullable":true},"ReferencingProducts":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of products referencing this product","nullable":true},"ReferencingVariantGroups":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variant groups referencing this product","nullable":true},"ReferencingVariants":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variants referencing this product","nullable":true},"ReferencingAssets":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of assets referencing this product","nullable":true},"ReferencingGlobalListValues":{"type":"array","items":{"type":"string","format":"uuid"},"description":"List of global list values referencing this product","nullable":true}},"additionalProperties":false,"description":"Model holding references from other entities to a product"},"Struct.App.Api.Models.Shared.EntityReferenceDetail":{"type":"object","properties":{"EntityId":{"type":"integer","description":"The id of the referencing entity","format":"int32"},"AttributeUid":{"type":"string","description":"The attribute on the referencing entity that holds the reference","format":"uuid"}},"additionalProperties":false,"description":"Model holding the attribute reference information for an entity reference"}}},"paths":{"/v1/products/batch/references":{"post":{"tags":["Products"],"summary":"Get references to a batch of products","description":"#Available from v.3.5.0\r\nNo more than 5000 values can be requested at a time.","requestBody":{"description":"Ids of products","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.ProductReferences"}}}}}}}}}}
```

## POST /v1/products/search

> Get ids of products matching certain criteria

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Shared.SearchModel":{"type":"object","properties":{"IncludeArchived":{"type":"boolean","description":"Include archived items in result"},"QueryModel":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.QueryModel"}},"additionalProperties":false,"description":"Search model used for searching products or variants in PIM"},"Struct.App.Api.Models.Shared.QueryModel":{"type":"object","properties":{"BooleanOperator":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BooleanOperator"},"QueryModelType":{"type":"string","description":"The type of query model. Name matches exact name of concrete model implementation","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Definition of general query model"},"Struct.App.Api.Models.Shared.BooleanOperator":{"enum":[0,1],"type":"integer","description":"Boolean operator \n\n- `0` = **And**: All conditions must be met\n- `1` = **Or**: At least one condition must be met","format":"int32"}}},"paths":{"/v1/products/search":{"post":{"tags":["Products"],"summary":"Get ids of products matching certain criteria","requestBody":{"description":"Query model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.SearchModel"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## POST /v1/products/search/paged

> Get paged result of products matching certain criteria. Result mapped with headers and item results

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Shared.SearchPagedModel":{"type":"object","properties":{"Page":{"type":"integer","format":"int32"},"PageSize":{"type":"integer","format":"int32","nullable":true},"FieldUids":{"type":"array","items":{"type":"string"},"nullable":true},"SortByFieldUid":{"type":"string","nullable":true},"SortDescending":{"type":"boolean","nullable":true},"IncludeArchived":{"type":"boolean","description":"Include archived items in result"},"QueryModel":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.QueryModel"}},"additionalProperties":false,"description":"Extended search model used for searching products or variants in PIM with support for paging and sorting"},"Struct.App.Api.Models.Shared.QueryModel":{"type":"object","properties":{"BooleanOperator":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BooleanOperator"},"QueryModelType":{"type":"string","description":"The type of query model. Name matches exact name of concrete model implementation","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Definition of general query model"},"Struct.App.Api.Models.Shared.BooleanOperator":{"enum":[0,1],"type":"integer","description":"Boolean operator \n\n- `0` = **And**: All conditions must be met\n- `1` = **Or**: At least one condition must be met","format":"int32"},"Struct.App.Api.Models.Shared.SearchResultModel":{"type":"object","properties":{"TotalHits":{"type":"integer","format":"int32"},"Page":{"type":"integer","format":"int32"},"PageSize":{"type":"integer","format":"int32"},"TotalPages":{"type":"integer","format":"int32"},"ItemListHeaders":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.ItemListHeader"},"nullable":true},"ListItems":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.ListItem"},"nullable":true}},"additionalProperties":false},"Struct.App.Api.Models.Shared.ItemListHeader":{"type":"object","properties":{"FieldUid":{"type":"string","nullable":true},"FieldName":{"type":"string","nullable":true},"FieldType":{"type":"string","nullable":true},"SupportsSearching":{"type":"boolean"},"SupportsSorting":{"type":"boolean"}},"additionalProperties":false},"Struct.App.Api.Models.Shared.ListItem":{"type":"object","properties":{"Id":{"type":"integer","format":"int32"},"ShownValues":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false}}},"paths":{"/v1/products/search/paged":{"post":{"tags":["Products"],"summary":"Get paged result of products matching certain criteria. Result mapped with headers and item results","requestBody":{"description":"Query model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.SearchPagedModel"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.SearchResultModel"}}}}}}}}}
```

## GET /v1/products/queryablefields

> Get all available query fields in the PIM installation

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Shared.QueryableField":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of field in PIM","nullable":true},"Name":{"type":"string","description":"The display name of the field","nullable":true},"SupportsSorting":{"type":"boolean","description":"If true field can be used for sorting"}},"additionalProperties":false,"description":"Representation of a queryable field in PIM"}}},"paths":{"/v1/products/queryablefields":{"get":{"tags":["Products"],"summary":"Get all available query fields in the PIM installation","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.QueryableField"}}}}}}}}}}
```

## Get Enrichment Insights for a product

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight":{"type":"object","properties":{"EnrichmentInsightSetupUid":{"type":"string","description":"Uid of enrichment insight","format":"uuid"},"EntityId":{"type":"integer","description":"Id of entity","format":"int32"},"Completeness":{"type":"integer","description":"Completeness in percentage (0 - 100). Is null, if ignored is true","format":"int32","nullable":true},"MissingData":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.InsightDataReference"},"description":"List of missing data for this entity to reach 100% completeness for this enrichment insight","nullable":true},"Ignored":{"type":"boolean","description":"Indicates whether the completeness is ignored for this entity and this enrichment insight"}},"additionalProperties":false,"description":"Model representing an entity's enrichment insight"},"Struct.App.Api.Models.EnrichmentInsight.InsightDataReference":{"type":"object","properties":{"Type":{"type":"string","description":"Type of data reference","nullable":true},"DataReference":{"type":"string","description":"The data reference itself","nullable":true}},"additionalProperties":false,"description":"Model representing an insights data reference"}}},"paths":{"/v1/products/{id}/enrichmentinsights":{"get":{"tags":["Products"],"summary":"Get Enrichment Insights for a product","description":"#Available from v.3.5.0","parameters":[{"name":"id","in":"path","description":"Id of product to get insights for","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight"}}}}}}}}}}
```

## Get Enrichment Insights for a batch of products

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight":{"type":"object","properties":{"EnrichmentInsightSetupUid":{"type":"string","description":"Uid of enrichment insight","format":"uuid"},"EntityId":{"type":"integer","description":"Id of entity","format":"int32"},"Completeness":{"type":"integer","description":"Completeness in percentage (0 - 100). Is null, if ignored is true","format":"int32","nullable":true},"MissingData":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.InsightDataReference"},"description":"List of missing data for this entity to reach 100% completeness for this enrichment insight","nullable":true},"Ignored":{"type":"boolean","description":"Indicates whether the completeness is ignored for this entity and this enrichment insight"}},"additionalProperties":false,"description":"Model representing an entity's enrichment insight"},"Struct.App.Api.Models.EnrichmentInsight.InsightDataReference":{"type":"object","properties":{"Type":{"type":"string","description":"Type of data reference","nullable":true},"DataReference":{"type":"string","description":"The data reference itself","nullable":true}},"additionalProperties":false,"description":"Model representing an insights data reference"}}},"paths":{"/v1/products/batch/enrichmentinsights":{"post":{"tags":["Products"],"summary":"Get Enrichment Insights for a batch of products","description":"#Available from v.3.5.0","requestBody":{"description":"Ids of products to get insights for","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight"}}}}}}}}}}
```

## Get insights for a batch of products and a specific Enrichment Insight

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight":{"type":"object","properties":{"EnrichmentInsightSetupUid":{"type":"string","description":"Uid of enrichment insight","format":"uuid"},"EntityId":{"type":"integer","description":"Id of entity","format":"int32"},"Completeness":{"type":"integer","description":"Completeness in percentage (0 - 100). Is null, if ignored is true","format":"int32","nullable":true},"MissingData":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.InsightDataReference"},"description":"List of missing data for this entity to reach 100% completeness for this enrichment insight","nullable":true},"Ignored":{"type":"boolean","description":"Indicates whether the completeness is ignored for this entity and this enrichment insight"}},"additionalProperties":false,"description":"Model representing an entity's enrichment insight"},"Struct.App.Api.Models.EnrichmentInsight.InsightDataReference":{"type":"object","properties":{"Type":{"type":"string","description":"Type of data reference","nullable":true},"DataReference":{"type":"string","description":"The data reference itself","nullable":true}},"additionalProperties":false,"description":"Model representing an insights data reference"}}},"paths":{"/v1/products/batch/enrichmentinsights/{enrichmentInsightUid}":{"post":{"tags":["Products"],"summary":"Get insights for a batch of products and a specific Enrichment Insight","description":"#Available from v.3.5.0","parameters":[{"name":"enrichmentInsightUid","in":"query","description":"Uid of enrichment insight to get for batch of products","schema":{"type":"string","format":"uuid"}},{"name":"enrichmentInsightUid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Ids of products to get insights for","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.EnrichmentInsight.EntityEnrichmentInsight"}}}}}}}}}}
```

## Enable or disable an enrichment insight for a product

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/{id}/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}":{"patch":{"tags":["Products"],"summary":"Enable or disable an enrichment insight for a product","description":"#Available from v.3.5.0","parameters":[{"name":"id","in":"path","description":"Id of product","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"enrichmentInsightSetupUid","in":"path","description":"Uid of enrichment insight to toggle ignore for","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"ignore","in":"path","description":"Indicate whether to ignore the insight for the given enrichment insight and products","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## Enable or disable an enrichment insight for a batch of products

> \#Available from v.3.5.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Products","description":"Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants.\r\nThe data model for products are described by product structures."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/products/batch/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}":{"patch":{"tags":["Products"],"summary":"Enable or disable an enrichment insight for a batch of products","description":"#Available from v.3.5.0","parameters":[{"name":"enrichmentInsightSetupUid","in":"query","description":"Uid of enrichment insight to toggle ignore for","schema":{"type":"string","format":"uuid"}},{"name":"ignore","in":"query","description":"Indicate whether to ignore the insight for the given enrichment insight and products","schema":{"type":"boolean"}},{"name":"enrichmentInsightSetupUid","in":"path","required":true,"schema":{"type":"string"}},{"name":"ignore","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Ids of products to toggle ignore for","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```
