# ProductStructures

Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants as well as how they are presented in the backoffice UI within tabs and sections.

## Get all product structures

> \#Available from v.3.4.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"ProductStructures","description":"Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants\r\nas well as how they are presented in the backoffice UI within tabs and sections."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.ProductStructure.ProductStructure":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of product structure","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable alias of product structure","nullable":true},"Label":{"type":"string","description":"Presented name of product structure in backoffice","nullable":true},"HasVariants":{"type":"boolean","description":"Indicates whether products using this product structure can have variants. VariantConfiguration\r\nis required when this is true"},"HasVariantGroups":{"type":"boolean","description":"Indicates whether products using this product structure can have variant groups. VariantGroupConfiguration\r\nis required when this is true"},"ProductConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductConfiguration"},"VariantGroupConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration"},"VariantConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantConfiguration"},"VariationDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariationDefinition"},"description":"Defines different variant variations (eg. some products have variants of color/size, others of width/length, others again of just color and so on.)","nullable":true},"AlwaysOnDefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Set defining attributes that must always be available no matter if they are part of the variation definition for a variant or not","nullable":true},"ProductIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a product in the system","nullable":true},"VariantGroupIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a variant group","nullable":true},"VariantIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a SKU and the internal id of the variant","nullable":true}},"additionalProperties":false,"description":"Product structure is the model that defines the fields available on products and variants\r\nas well as how these are presented in tabs and sections in the PIM backoffice"},"Struct.App.Api.Models.ProductStructure.ProductConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration itself\r\nVariant_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on products using this product configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The product configuration defines the tabs, sections and properties available on a product as well as the wizard used for creating new products."},"Struct.App.Api.Models.DataConfiguration.NameConfiguration":{"type":"object","properties":{"NamePattern":{"type":"string","description":"Pattern defining how attribute values shall be concatenated to form a name. Ex. {0} - {1}","nullable":true},"NameAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uids of attributes to use in rendering. Number of attributes must match number of referenced attributes in NamePattern","nullable":true}},"additionalProperties":false,"description":"Definition on how to generate names for items"},"Struct.App.Api.Models.DataConfiguration.WizardSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard setup","format":"uuid"},"Steps":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardStepSetup"},"description":"The steps that are part of this wizard","nullable":true}},"additionalProperties":false,"description":"Defines a step wizard that allows a step wizard presentation for data fulfillment"},"Struct.App.Api.Models.DataConfiguration.WizardStepSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard step","format":"uuid"},"Headline":{"type":"string","description":"Headline for wizard step","nullable":true},"Description":{"type":"string","description":"Description for wizard step","nullable":true},"Type":{"type":"string","description":"The type of wizard step defining the actual implementation type of the abstract WizardStep","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a wizard step. Available implementations (Type's) are:\r\n      * DynamicWizardStepSetup\r\n      * ClassificationWizardStepSetup"},"Struct.App.Api.Models.DataConfiguration.TabSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of tab","format":"uuid"},"ViewPermission":{"type":"string","description":"Uid of permision required to view this tab","format":"uuid","nullable":true},"SavePermission":{"type":"string","description":"Uid of permission required to edit data on this tab","format":"uuid","nullable":true},"Type":{"type":"string","description":"The type of tab defining the actual implementation type of the abstract Tab","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a Tab. Available implementations (Type's) are:\r\n      * VariantsTabSetup\r\n      * AttributesOnCategoryTabSetup\r\n      * ClassificationsTabSetup\r\n      * DynamicTabSetup"},"Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration":{"type":"object","properties":{"GroupingAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes to group variants by. All variants with the same values as a variant group in the specified Grouping attributes will be associated to that variant group","nullable":true},"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse VariantGroup_[attributeUid] to reference a media attribute on the Variant group configuration itself","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on Variant groups using this Variant group configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant groups configuration defines the tabs, sections and properties available on a variant group as well as the wizard used for creating new variant groups."},"Struct.App.Api.Models.ProductStructure.VariantConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the variant.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and\r\nVariant_[attributeUid] to reference a media attribute on the Variant configuration itself","nullable":true},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on variants using this variant configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant configuration defines the tabs, sections and properties available on a variant as well as the wizard used for creating new variants."},"Struct.App.Api.Models.ProductStructure.VariationDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of variation definition","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable identifier for variation definition","nullable":true},"Name":{"type":"string","description":"Presented name of variation definition in backoffice","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"DefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uid of the attributes which are defining for variants using this variation definition (eg. uid of color attribute, uids of color and size attribute etc.)","nullable":true},"SortOrder":{"type":"integer","description":"The presented sortorder of the variation definition in backoffice","format":"int32"}},"additionalProperties":false,"description":"Variation definition defines how variants of a product differ from each other - eg. what are the defining attributes (color, color and size, width and height etc.)"},"Struct.App.Api.Models.DataConfiguration.IdentifierDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of identifier definition","format":"uuid"},"Alias":{"type":"string","description":"Unqique human readable identifier of the definition","nullable":true},"IdentifierPattern":{"type":"string","description":"Pattern defining how to generate identifier string from values of the selected attributes (ex. {0} - {1} to render the values of two selected attributes in IdentifierAttributes with a - between them)","nullable":true},"IdentifierAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes for which values should be used for generating the identifier string (ex. uid of attribute for Model number and uid of attribute for SKU)","nullable":true}},"additionalProperties":false,"description":"An identifier definition defines how to create a map between certain attribute values and the internal id of the item (product, variant or category)"}}},"paths":{"/v1/productstructures":{"get":{"tags":["ProductStructures"],"summary":"Get all product structures","description":"#Available from v.3.4.0","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductStructure"}}}}}}}}}}
```

## Create new product structure

> \#Available from v.3.2.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"ProductStructures","description":"Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants\r\nas well as how they are presented in the backoffice UI within tabs and sections."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.ProductStructure.ProductStructure":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of product structure","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable alias of product structure","nullable":true},"Label":{"type":"string","description":"Presented name of product structure in backoffice","nullable":true},"HasVariants":{"type":"boolean","description":"Indicates whether products using this product structure can have variants. VariantConfiguration\r\nis required when this is true"},"HasVariantGroups":{"type":"boolean","description":"Indicates whether products using this product structure can have variant groups. VariantGroupConfiguration\r\nis required when this is true"},"ProductConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductConfiguration"},"VariantGroupConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration"},"VariantConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantConfiguration"},"VariationDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariationDefinition"},"description":"Defines different variant variations (eg. some products have variants of color/size, others of width/length, others again of just color and so on.)","nullable":true},"AlwaysOnDefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Set defining attributes that must always be available no matter if they are part of the variation definition for a variant or not","nullable":true},"ProductIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a product in the system","nullable":true},"VariantGroupIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a variant group","nullable":true},"VariantIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a SKU and the internal id of the variant","nullable":true}},"additionalProperties":false,"description":"Product structure is the model that defines the fields available on products and variants\r\nas well as how these are presented in tabs and sections in the PIM backoffice"},"Struct.App.Api.Models.ProductStructure.ProductConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration itself\r\nVariant_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on products using this product configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The product configuration defines the tabs, sections and properties available on a product as well as the wizard used for creating new products."},"Struct.App.Api.Models.DataConfiguration.NameConfiguration":{"type":"object","properties":{"NamePattern":{"type":"string","description":"Pattern defining how attribute values shall be concatenated to form a name. Ex. {0} - {1}","nullable":true},"NameAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uids of attributes to use in rendering. Number of attributes must match number of referenced attributes in NamePattern","nullable":true}},"additionalProperties":false,"description":"Definition on how to generate names for items"},"Struct.App.Api.Models.DataConfiguration.WizardSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard setup","format":"uuid"},"Steps":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardStepSetup"},"description":"The steps that are part of this wizard","nullable":true}},"additionalProperties":false,"description":"Defines a step wizard that allows a step wizard presentation for data fulfillment"},"Struct.App.Api.Models.DataConfiguration.WizardStepSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard step","format":"uuid"},"Headline":{"type":"string","description":"Headline for wizard step","nullable":true},"Description":{"type":"string","description":"Description for wizard step","nullable":true},"Type":{"type":"string","description":"The type of wizard step defining the actual implementation type of the abstract WizardStep","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a wizard step. Available implementations (Type's) are:\r\n      * DynamicWizardStepSetup\r\n      * ClassificationWizardStepSetup"},"Struct.App.Api.Models.DataConfiguration.TabSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of tab","format":"uuid"},"ViewPermission":{"type":"string","description":"Uid of permision required to view this tab","format":"uuid","nullable":true},"SavePermission":{"type":"string","description":"Uid of permission required to edit data on this tab","format":"uuid","nullable":true},"Type":{"type":"string","description":"The type of tab defining the actual implementation type of the abstract Tab","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a Tab. Available implementations (Type's) are:\r\n      * VariantsTabSetup\r\n      * AttributesOnCategoryTabSetup\r\n      * ClassificationsTabSetup\r\n      * DynamicTabSetup"},"Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration":{"type":"object","properties":{"GroupingAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes to group variants by. All variants with the same values as a variant group in the specified Grouping attributes will be associated to that variant group","nullable":true},"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse VariantGroup_[attributeUid] to reference a media attribute on the Variant group configuration itself","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on Variant groups using this Variant group configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant groups configuration defines the tabs, sections and properties available on a variant group as well as the wizard used for creating new variant groups."},"Struct.App.Api.Models.ProductStructure.VariantConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the variant.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and\r\nVariant_[attributeUid] to reference a media attribute on the Variant configuration itself","nullable":true},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on variants using this variant configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant configuration defines the tabs, sections and properties available on a variant as well as the wizard used for creating new variants."},"Struct.App.Api.Models.ProductStructure.VariationDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of variation definition","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable identifier for variation definition","nullable":true},"Name":{"type":"string","description":"Presented name of variation definition in backoffice","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"DefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uid of the attributes which are defining for variants using this variation definition (eg. uid of color attribute, uids of color and size attribute etc.)","nullable":true},"SortOrder":{"type":"integer","description":"The presented sortorder of the variation definition in backoffice","format":"int32"}},"additionalProperties":false,"description":"Variation definition defines how variants of a product differ from each other - eg. what are the defining attributes (color, color and size, width and height etc.)"},"Struct.App.Api.Models.DataConfiguration.IdentifierDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of identifier definition","format":"uuid"},"Alias":{"type":"string","description":"Unqique human readable identifier of the definition","nullable":true},"IdentifierPattern":{"type":"string","description":"Pattern defining how to generate identifier string from values of the selected attributes (ex. {0} - {1} to render the values of two selected attributes in IdentifierAttributes with a - between them)","nullable":true},"IdentifierAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes for which values should be used for generating the identifier string (ex. uid of attribute for Model number and uid of attribute for SKU)","nullable":true}},"additionalProperties":false,"description":"An identifier definition defines how to create a map between certain attribute values and the internal id of the item (product, variant or category)"},"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/productstructures":{"post":{"tags":["ProductStructures"],"summary":"Create new product structure","description":"#Available from v.3.2.0","requestBody":{"description":"Product structure to create","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductStructure"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## Update a product structure

> \#Available from v.3.2.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"ProductStructures","description":"Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants\r\nas well as how they are presented in the backoffice UI within tabs and sections."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.ProductStructure.ProductStructure":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of product structure","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable alias of product structure","nullable":true},"Label":{"type":"string","description":"Presented name of product structure in backoffice","nullable":true},"HasVariants":{"type":"boolean","description":"Indicates whether products using this product structure can have variants. VariantConfiguration\r\nis required when this is true"},"HasVariantGroups":{"type":"boolean","description":"Indicates whether products using this product structure can have variant groups. VariantGroupConfiguration\r\nis required when this is true"},"ProductConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductConfiguration"},"VariantGroupConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration"},"VariantConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantConfiguration"},"VariationDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariationDefinition"},"description":"Defines different variant variations (eg. some products have variants of color/size, others of width/length, others again of just color and so on.)","nullable":true},"AlwaysOnDefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Set defining attributes that must always be available no matter if they are part of the variation definition for a variant or not","nullable":true},"ProductIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a product in the system","nullable":true},"VariantGroupIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a variant group","nullable":true},"VariantIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a SKU and the internal id of the variant","nullable":true}},"additionalProperties":false,"description":"Product structure is the model that defines the fields available on products and variants\r\nas well as how these are presented in tabs and sections in the PIM backoffice"},"Struct.App.Api.Models.ProductStructure.ProductConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration itself\r\nVariant_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on products using this product configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The product configuration defines the tabs, sections and properties available on a product as well as the wizard used for creating new products."},"Struct.App.Api.Models.DataConfiguration.NameConfiguration":{"type":"object","properties":{"NamePattern":{"type":"string","description":"Pattern defining how attribute values shall be concatenated to form a name. Ex. {0} - {1}","nullable":true},"NameAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uids of attributes to use in rendering. Number of attributes must match number of referenced attributes in NamePattern","nullable":true}},"additionalProperties":false,"description":"Definition on how to generate names for items"},"Struct.App.Api.Models.DataConfiguration.WizardSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard setup","format":"uuid"},"Steps":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardStepSetup"},"description":"The steps that are part of this wizard","nullable":true}},"additionalProperties":false,"description":"Defines a step wizard that allows a step wizard presentation for data fulfillment"},"Struct.App.Api.Models.DataConfiguration.WizardStepSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard step","format":"uuid"},"Headline":{"type":"string","description":"Headline for wizard step","nullable":true},"Description":{"type":"string","description":"Description for wizard step","nullable":true},"Type":{"type":"string","description":"The type of wizard step defining the actual implementation type of the abstract WizardStep","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a wizard step. Available implementations (Type's) are:\r\n      * DynamicWizardStepSetup\r\n      * ClassificationWizardStepSetup"},"Struct.App.Api.Models.DataConfiguration.TabSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of tab","format":"uuid"},"ViewPermission":{"type":"string","description":"Uid of permision required to view this tab","format":"uuid","nullable":true},"SavePermission":{"type":"string","description":"Uid of permission required to edit data on this tab","format":"uuid","nullable":true},"Type":{"type":"string","description":"The type of tab defining the actual implementation type of the abstract Tab","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a Tab. Available implementations (Type's) are:\r\n      * VariantsTabSetup\r\n      * AttributesOnCategoryTabSetup\r\n      * ClassificationsTabSetup\r\n      * DynamicTabSetup"},"Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration":{"type":"object","properties":{"GroupingAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes to group variants by. All variants with the same values as a variant group in the specified Grouping attributes will be associated to that variant group","nullable":true},"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse VariantGroup_[attributeUid] to reference a media attribute on the Variant group configuration itself","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on Variant groups using this Variant group configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant groups configuration defines the tabs, sections and properties available on a variant group as well as the wizard used for creating new variant groups."},"Struct.App.Api.Models.ProductStructure.VariantConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the variant.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and\r\nVariant_[attributeUid] to reference a media attribute on the Variant configuration itself","nullable":true},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on variants using this variant configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant configuration defines the tabs, sections and properties available on a variant as well as the wizard used for creating new variants."},"Struct.App.Api.Models.ProductStructure.VariationDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of variation definition","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable identifier for variation definition","nullable":true},"Name":{"type":"string","description":"Presented name of variation definition in backoffice","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"DefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uid of the attributes which are defining for variants using this variation definition (eg. uid of color attribute, uids of color and size attribute etc.)","nullable":true},"SortOrder":{"type":"integer","description":"The presented sortorder of the variation definition in backoffice","format":"int32"}},"additionalProperties":false,"description":"Variation definition defines how variants of a product differ from each other - eg. what are the defining attributes (color, color and size, width and height etc.)"},"Struct.App.Api.Models.DataConfiguration.IdentifierDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of identifier definition","format":"uuid"},"Alias":{"type":"string","description":"Unqique human readable identifier of the definition","nullable":true},"IdentifierPattern":{"type":"string","description":"Pattern defining how to generate identifier string from values of the selected attributes (ex. {0} - {1} to render the values of two selected attributes in IdentifierAttributes with a - between them)","nullable":true},"IdentifierAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes for which values should be used for generating the identifier string (ex. uid of attribute for Model number and uid of attribute for SKU)","nullable":true}},"additionalProperties":false,"description":"An identifier definition defines how to create a map between certain attribute values and the internal id of the item (product, variant or category)"},"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/productstructures":{"put":{"tags":["ProductStructures"],"summary":"Update a product structure","description":"#Available from v.3.2.0","requestBody":{"description":"Updated product structure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductStructure"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## Get a product structure

> \#Available from v.3.2.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"ProductStructures","description":"Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants\r\nas well as how they are presented in the backoffice UI within tabs and sections."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.ProductStructure.ProductStructure":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of product structure","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable alias of product structure","nullable":true},"Label":{"type":"string","description":"Presented name of product structure in backoffice","nullable":true},"HasVariants":{"type":"boolean","description":"Indicates whether products using this product structure can have variants. VariantConfiguration\r\nis required when this is true"},"HasVariantGroups":{"type":"boolean","description":"Indicates whether products using this product structure can have variant groups. VariantGroupConfiguration\r\nis required when this is true"},"ProductConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductConfiguration"},"VariantGroupConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration"},"VariantConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariantConfiguration"},"VariationDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.VariationDefinition"},"description":"Defines different variant variations (eg. some products have variants of color/size, others of width/length, others again of just color and so on.)","nullable":true},"AlwaysOnDefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Set defining attributes that must always be available no matter if they are part of the variation definition for a variant or not","nullable":true},"ProductIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a product in the system","nullable":true},"VariantGroupIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a model number and the internal id of a variant group","nullable":true},"VariantIdentifierDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.IdentifierDefinition"},"description":"Defines identifier setups used to create maps between eg. a SKU and the internal id of the variant","nullable":true}},"additionalProperties":false,"description":"Product structure is the model that defines the fields available on products and variants\r\nas well as how these are presented in tabs and sections in the PIM backoffice"},"Struct.App.Api.Models.ProductStructure.ProductConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration itself\r\nVariant_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on products using this product configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The product configuration defines the tabs, sections and properties available on a product as well as the wizard used for creating new products."},"Struct.App.Api.Models.DataConfiguration.NameConfiguration":{"type":"object","properties":{"NamePattern":{"type":"string","description":"Pattern defining how attribute values shall be concatenated to form a name. Ex. {0} - {1}","nullable":true},"NameAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uids of attributes to use in rendering. Number of attributes must match number of referenced attributes in NamePattern","nullable":true}},"additionalProperties":false,"description":"Definition on how to generate names for items"},"Struct.App.Api.Models.DataConfiguration.WizardSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard setup","format":"uuid"},"Steps":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardStepSetup"},"description":"The steps that are part of this wizard","nullable":true}},"additionalProperties":false,"description":"Defines a step wizard that allows a step wizard presentation for data fulfillment"},"Struct.App.Api.Models.DataConfiguration.WizardStepSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of wizard step","format":"uuid"},"Headline":{"type":"string","description":"Headline for wizard step","nullable":true},"Description":{"type":"string","description":"Description for wizard step","nullable":true},"Type":{"type":"string","description":"The type of wizard step defining the actual implementation type of the abstract WizardStep","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a wizard step. Available implementations (Type's) are:\r\n      * DynamicWizardStepSetup\r\n      * ClassificationWizardStepSetup"},"Struct.App.Api.Models.DataConfiguration.TabSetup":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of tab","format":"uuid"},"ViewPermission":{"type":"string","description":"Uid of permision required to view this tab","format":"uuid","nullable":true},"SavePermission":{"type":"string","description":"Uid of permission required to edit data on this tab","format":"uuid","nullable":true},"Type":{"type":"string","description":"The type of tab defining the actual implementation type of the abstract Tab","nullable":true,"readOnly":true}},"additionalProperties":false,"description":"Abstract representation of a Tab. Available implementations (Type's) are:\r\n      * VariantsTabSetup\r\n      * AttributesOnCategoryTabSetup\r\n      * ClassificationsTabSetup\r\n      * DynamicTabSetup"},"Struct.App.Api.Models.ProductStructure.VariantGroupConfiguration":{"type":"object","properties":{"GroupingAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes to group variants by. All variants with the same values as a variant group in the specified Grouping attributes will be associated to that variant group","nullable":true},"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the product.\r\nUse VariantGroup_[attributeUid] to reference a media attribute on the Variant group configuration itself","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"CopyWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on Variant groups using this Variant group configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant groups configuration defines the tabs, sections and properties available on a variant group as well as the wizard used for creating new variant groups."},"Struct.App.Api.Models.ProductStructure.VariantConfiguration":{"type":"object","properties":{"ThumbnailReference":{"type":"string","description":"Reference to a media attribute which holds the image that should be presented as thumbnail for the variant.\r\nUse Product_[attributeUid] to reference a media attribute on the Product configuration of the Product structure and\r\nVariant_[attributeUid] to reference a media attribute on the Variant configuration itself","nullable":true},"CreateWizard":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.WizardSetup"},"Tabs":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.TabSetup"},"description":"The tabs that shall be shown on variants using this variant configuration in the backoffice","nullable":true}},"additionalProperties":false,"description":"The variant configuration defines the tabs, sections and properties available on a variant as well as the wizard used for creating new variants."},"Struct.App.Api.Models.ProductStructure.VariationDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of variation definition","format":"uuid"},"Alias":{"type":"string","description":"Unique human readable identifier for variation definition","nullable":true},"Name":{"type":"string","description":"Presented name of variation definition in backoffice","nullable":true},"NameConfiguration":{"$ref":"#/components/schemas/Struct.App.Api.Models.DataConfiguration.NameConfiguration"},"DefiningAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Uid of the attributes which are defining for variants using this variation definition (eg. uid of color attribute, uids of color and size attribute etc.)","nullable":true},"SortOrder":{"type":"integer","description":"The presented sortorder of the variation definition in backoffice","format":"int32"}},"additionalProperties":false,"description":"Variation definition defines how variants of a product differ from each other - eg. what are the defining attributes (color, color and size, width and height etc.)"},"Struct.App.Api.Models.DataConfiguration.IdentifierDefinition":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of identifier definition","format":"uuid"},"Alias":{"type":"string","description":"Unqique human readable identifier of the definition","nullable":true},"IdentifierPattern":{"type":"string","description":"Pattern defining how to generate identifier string from values of the selected attributes (ex. {0} - {1} to render the values of two selected attributes in IdentifierAttributes with a - between them)","nullable":true},"IdentifierAttributes":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Attributes for which values should be used for generating the identifier string (ex. uid of attribute for Model number and uid of attribute for SKU)","nullable":true}},"additionalProperties":false,"description":"An identifier definition defines how to create a map between certain attribute values and the internal id of the item (product, variant or category)"},"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/productstructures/{uid}":{"get":{"tags":["ProductStructures"],"summary":"Get a product structure","description":"#Available from v.3.2.0","parameters":[{"name":"uid","in":"path","description":"Unique id of product structure","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.ProductStructure.ProductStructure"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## Delete a product structure

> \#Available from v.3.2.0

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"ProductStructures","description":"Product structures define models for products and variants in the system. Specifically, product structures define which properties are available on products and variants\r\nas well as how they are presented in the backoffice UI within tabs and sections."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/productstructures/{uid}":{"delete":{"tags":["ProductStructures"],"summary":"Delete a product structure","description":"#Available from v.3.2.0","parameters":[{"name":"uid","in":"path","description":"Unique id of product structure to delete","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}}}}
```
