# Assets

Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name. Each image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically. Assets are organized in folders, which can be nested within each other.

## GET /v1/assets/ids

> Get ids of all assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/assets/ids":{"get":{"tags":["Assets"],"summary":"Get ids of all assets","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}}}}}}}
```

## GET /v1/assets/{id}

> Get an asset by its id

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetModel":{"type":"object","properties":{"Id":{"type":"integer","description":"The unique numeric identifier for the asset.","format":"int32"},"Uid":{"type":"string","description":"The unique UUID identifier for the asset, used in external references.","format":"uuid"},"CurrentFileVersion":{"type":"integer","description":"The current version information of the asset's file.","format":"int32"},"Created":{"type":"string","description":"The timestamp when the asset was created.","format":"date-time"},"LastModified":{"type":"string","description":"The timestamp when the asset was last modified.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created the asset.","nullable":true},"LastModifiedBy":{"type":"string","description":"The identifier of the user who last modified the asset.","nullable":true},"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type that defines the asset's characteristics.","format":"uuid"},"IsPrivate":{"type":"boolean","description":"Indicates whether the asset is private and requires specific permissions to access."},"FileSize":{"type":"integer","description":"The size of the asset's file in bytes.","format":"int64"},"FileType":{"type":"string","description":"The MIME type of the asset's file.","nullable":true},"Extension":{"type":"string","description":"The file extension of the asset's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileName":{"type":"string","description":"The original filename of the asset, including the extension.","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder containing this asset.","format":"uuid"},"FileUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"CDNUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags associated with the asset for categorization and searching.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this asset is associated with","nullable":true}},"additionalProperties":false,"description":"Represents an asset in the system with its associated metadata and file information."},"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."},"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/assets/{id}":{"get":{"tags":["Assets"],"summary":"Get an asset by its id","parameters":[{"name":"id","in":"path","description":"Id of asset","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetModel"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## DELETE /v1/assets/{id}

> Delete an asset by its id

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"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/assets/{id}":{"delete":{"tags":["Assets"],"summary":"Delete an asset by its id","parameters":[{"name":"id","in":"path","description":"Id of asset to delete","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## PATCH /v1/assets/{id}

> Update an assets data

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.UpdateAssetModel":{"type":"object","properties":{"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type to change the asset to.\r\nThis defines the asset's characteristics and available metadata fields.","format":"uuid","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder where the asset should be moved to.","format":"uuid","nullable":true},"WorkflowStateUid":{"type":"string","description":"The unique identifier of the workflow state to move the asset to.","format":"uuid","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags to replace the existing tags on the asset.\r\nProviding an empty list will remove all tags.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"Business unit relations to set on the asset","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 for updating an existing asset"},"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."},"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/assets/{id}":{"patch":{"tags":["Assets"],"summary":"Update an assets data","parameters":[{"name":"id","in":"path","description":"Id of asset","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Update model for asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.UpdateAssetModel"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/batch

> Get a list of assets by their ids (max 1000)

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetModel":{"type":"object","properties":{"Id":{"type":"integer","description":"The unique numeric identifier for the asset.","format":"int32"},"Uid":{"type":"string","description":"The unique UUID identifier for the asset, used in external references.","format":"uuid"},"CurrentFileVersion":{"type":"integer","description":"The current version information of the asset's file.","format":"int32"},"Created":{"type":"string","description":"The timestamp when the asset was created.","format":"date-time"},"LastModified":{"type":"string","description":"The timestamp when the asset was last modified.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created the asset.","nullable":true},"LastModifiedBy":{"type":"string","description":"The identifier of the user who last modified the asset.","nullable":true},"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type that defines the asset's characteristics.","format":"uuid"},"IsPrivate":{"type":"boolean","description":"Indicates whether the asset is private and requires specific permissions to access."},"FileSize":{"type":"integer","description":"The size of the asset's file in bytes.","format":"int64"},"FileType":{"type":"string","description":"The MIME type of the asset's file.","nullable":true},"Extension":{"type":"string","description":"The file extension of the asset's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileName":{"type":"string","description":"The original filename of the asset, including the extension.","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder containing this asset.","format":"uuid"},"FileUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"CDNUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags associated with the asset for categorization and searching.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this asset is associated with","nullable":true}},"additionalProperties":false,"description":"Represents an asset in the system with its associated metadata and file information."},"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."},"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/assets/batch":{"post":{"tags":["Assets"],"summary":"Get a list of assets by their ids (max 1000)","requestBody":{"description":"Ids of assets","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.Asset.AssetModel"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## GET /v1/assets/{id}/fileversions

> Get all file versions of an asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetFileVersionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"The unique identifier for this specific file version.","format":"uuid"},"AssetUid":{"type":"string","description":"The unique identifier of the parent asset this file version belongs to.","format":"uuid"},"AssetId":{"type":"integer","description":"The unique id of the asset this file version belongs to.","format":"int32"},"FileExtension":{"type":"string","description":"The file extension of this version's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileType":{"type":"string","description":"The MIME type of this version's file.","nullable":true},"FileSize":{"type":"integer","description":"The size of this version's file in bytes.","format":"int64"},"FileName":{"type":"string","description":"The original filename of this version's file, including the extension.","nullable":true},"FileUrl":{"type":"string","description":"The URL where this file version can be accessed.","nullable":true},"Version":{"type":"integer","description":"The version number or identifier for this file version.","format":"int32"},"Created":{"type":"string","description":"The timestamp when this file version was created.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created this file version.","nullable":true}},"additionalProperties":false,"description":"Represents a specific version of an asset's file in the system, tracking version history and file metadata."},"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/assets/{id}/fileversions":{"get":{"tags":["Assets"],"summary":"Get all file versions of an asset","parameters":[{"name":"id","in":"path","description":"Id of asset","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.Asset.AssetFileVersionModel"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/{id}/fileversions

> Create a new version of an asset file

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"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/assets/{id}/fileversions":{"post":{"tags":["Assets"],"summary":"Create a new version of an asset file","parameters":[{"name":"id","in":"path","description":"Id of asset","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"Upload file","format":"binary"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"uuid"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/batch/fileversions

> Get asset file versions for a list of assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetFileVersionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"The unique identifier for this specific file version.","format":"uuid"},"AssetUid":{"type":"string","description":"The unique identifier of the parent asset this file version belongs to.","format":"uuid"},"AssetId":{"type":"integer","description":"The unique id of the asset this file version belongs to.","format":"int32"},"FileExtension":{"type":"string","description":"The file extension of this version's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileType":{"type":"string","description":"The MIME type of this version's file.","nullable":true},"FileSize":{"type":"integer","description":"The size of this version's file in bytes.","format":"int64"},"FileName":{"type":"string","description":"The original filename of this version's file, including the extension.","nullable":true},"FileUrl":{"type":"string","description":"The URL where this file version can be accessed.","nullable":true},"Version":{"type":"integer","description":"The version number or identifier for this file version.","format":"int32"},"Created":{"type":"string","description":"The timestamp when this file version was created.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created this file version.","nullable":true}},"additionalProperties":false,"description":"Represents a specific version of an asset's file in the system, tracking version history and file metadata."},"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/assets/batch/fileversions":{"post":{"tags":["Assets"],"summary":"Get asset file versions for a list of assets","requestBody":{"description":"Asset ids","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.Asset.AssetFileVersionModel"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## GET /v1/assets

> Get assets from page and page size. Assets are sorted by the created date.

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetModelResponse":{"type":"object","properties":{"Assets":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetModel"},"description":"Assets returned from the request","nullable":true},"CurrentPage":{"type":"integer","description":"The current page number","format":"int32"},"PageSize":{"type":"integer","description":"Page Size for the request","format":"int32"},"Total":{"type":"integer","description":"Total number of assets","format":"int32"}},"additionalProperties":false,"description":"Response from a paged asset request"},"Struct.App.Api.Models.Asset.AssetModel":{"type":"object","properties":{"Id":{"type":"integer","description":"The unique numeric identifier for the asset.","format":"int32"},"Uid":{"type":"string","description":"The unique UUID identifier for the asset, used in external references.","format":"uuid"},"CurrentFileVersion":{"type":"integer","description":"The current version information of the asset's file.","format":"int32"},"Created":{"type":"string","description":"The timestamp when the asset was created.","format":"date-time"},"LastModified":{"type":"string","description":"The timestamp when the asset was last modified.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created the asset.","nullable":true},"LastModifiedBy":{"type":"string","description":"The identifier of the user who last modified the asset.","nullable":true},"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type that defines the asset's characteristics.","format":"uuid"},"IsPrivate":{"type":"boolean","description":"Indicates whether the asset is private and requires specific permissions to access."},"FileSize":{"type":"integer","description":"The size of the asset's file in bytes.","format":"int64"},"FileType":{"type":"string","description":"The MIME type of the asset's file.","nullable":true},"Extension":{"type":"string","description":"The file extension of the asset's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileName":{"type":"string","description":"The original filename of the asset, including the extension.","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder containing this asset.","format":"uuid"},"FileUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"CDNUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags associated with the asset for categorization and searching.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this asset is associated with","nullable":true}},"additionalProperties":false,"description":"Represents an asset in the system with its associated metadata and file information."},"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."},"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/assets":{"get":{"tags":["Assets"],"summary":"Get assets from page and page size. Assets are sorted by the created date.","parameters":[{"name":"page","in":"query","description":"Page","schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","description":"Pagesize","schema":{"type":"integer","format":"int32","default":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetModelResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets

> Create a new asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"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/assets":{"post":{"tags":["Assets"],"summary":"Create a new asset","parameters":[{"name":"assetTypeUid","in":"query","description":"Uid of asset type","schema":{"type":"string","format":"uuid"}},{"name":"folderUid","in":"query","description":"Uid of folder","schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"Upload file","format":"binary"}}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"integer","format":"int32"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## PATCH /v1/assets

> Update multiple assets' data

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Product.BatchUpdateAssetModel":{"type":"object","properties":{"AssetId":{"type":"integer","description":"Uid of asset to update","format":"int32"},"UpdateModel":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.UpdateAssetModel"}},"additionalProperties":false,"description":"Update model for a batch of assets"},"Struct.App.Api.Models.Asset.UpdateAssetModel":{"type":"object","properties":{"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type to change the asset to.\r\nThis defines the asset's characteristics and available metadata fields.","format":"uuid","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder where the asset should be moved to.","format":"uuid","nullable":true},"WorkflowStateUid":{"type":"string","description":"The unique identifier of the workflow state to move the asset to.","format":"uuid","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags to replace the existing tags on the asset.\r\nProviding an empty list will remove all tags.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"Business unit relations to set on the asset","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 for updating an existing asset"},"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/assets":{"patch":{"tags":["Assets"],"summary":"Update multiple assets' data","requestBody":{"description":"Update model","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Product.BatchUpdateAssetModel"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/assets/folders/{uid}/assets

> Get assets from a folder by its uid

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetModel":{"type":"object","properties":{"Id":{"type":"integer","description":"The unique numeric identifier for the asset.","format":"int32"},"Uid":{"type":"string","description":"The unique UUID identifier for the asset, used in external references.","format":"uuid"},"CurrentFileVersion":{"type":"integer","description":"The current version information of the asset's file.","format":"int32"},"Created":{"type":"string","description":"The timestamp when the asset was created.","format":"date-time"},"LastModified":{"type":"string","description":"The timestamp when the asset was last modified.","format":"date-time"},"CreatedBy":{"type":"string","description":"The identifier of the user who created the asset.","nullable":true},"LastModifiedBy":{"type":"string","description":"The identifier of the user who last modified the asset.","nullable":true},"AssetTypeUid":{"type":"string","description":"The unique identifier of the asset type that defines the asset's characteristics.","format":"uuid"},"IsPrivate":{"type":"boolean","description":"Indicates whether the asset is private and requires specific permissions to access."},"FileSize":{"type":"integer","description":"The size of the asset's file in bytes.","format":"int64"},"FileType":{"type":"string","description":"The MIME type of the asset's file.","nullable":true},"Extension":{"type":"string","description":"The file extension of the asset's file, including the leading dot (e.g., \".pdf\").","nullable":true},"FileName":{"type":"string","description":"The original filename of the asset, including the extension.","nullable":true},"FolderUid":{"type":"string","description":"The unique identifier of the folder containing this asset.","format":"uuid"},"FileUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"CDNUrl":{"type":"string","description":"The URL where the asset's file can be accessed.","nullable":true},"Tags":{"type":"array","items":{"type":"string"},"description":"Collection of tags associated with the asset for categorization and searching.","nullable":true},"BusinessUnits":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.BusinessUnitRelationModel"},"description":"This business units this asset is associated with","nullable":true}},"additionalProperties":false,"description":"Represents an asset in the system with its associated metadata and file information."},"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."},"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/assets/folders/{uid}/assets":{"get":{"tags":["Assets"],"summary":"Get assets from a folder by its uid","parameters":[{"name":"uid","in":"path","description":"Uid of folder","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Page","schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","description":"Page size","schema":{"type":"integer","format":"int32","default":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetModel"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

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

> Get attribute values for an asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetAttributeValuesModel":{"type":"object","properties":{"AssetId":{"type":"integer","description":"Id of asset","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 asset"},"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/assets/{id}/attributevalues":{"get":{"tags":["Assets"],"summary":"Get attribute values for an asset","parameters":[{"name":"id","in":"path","description":"Id of asset","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.Asset.AssetAttributeValuesModel"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## Get attribute values for multiple assets

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

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetValuesRequestModel":{"type":"object","properties":{"AssetIds":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Ids of assets 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 assets 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.Asset.AssetAttributeValuesModel":{"type":"object","properties":{"AssetId":{"type":"integer","description":"Id of asset","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 asset"}}},"paths":{"/v1/assets/batch/attributevalues":{"post":{"tags":["Assets"],"summary":"Get attribute values for multiple assets","description":"No more than 5000 assets can be requested at a time.","requestBody":{"description":"Request model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetValuesRequestModel"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetAttributeValuesModel"}}}}}}}}}}
```

## GET /v1/assets/{id}/enrichmentinsights

> Get enrichment insights for an asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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"},"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/assets/{id}/enrichmentinsights":{"get":{"tags":["Assets"],"summary":"Get enrichment insights for an asset","parameters":[{"name":"id","in":"path","description":"Id of asset","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"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/batch/enrichmentsinsights

> Get enrichment insights for multiple assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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"},"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/assets/batch/enrichmentsinsights":{"post":{"tags":["Assets"],"summary":"Get enrichment insights for multiple assets","requestBody":{"description":"Ids of assets","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"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/batch/enrichmentinsights/{enrichmentInsightUid}

> Get insights for a batch of assets and a specific Enrichment Insight

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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/assets/batch/enrichmentinsights/{enrichmentInsightUid}":{"post":{"tags":["Assets"],"summary":"Get insights for a batch of assets and a specific Enrichment Insight","parameters":[{"name":"enrichmentInsightUid","in":"query","description":"Uid of enrichment insight to get for batch of assets","schema":{"type":"string","format":"uuid"}},{"name":"enrichmentInsightUid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Ids of assets 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"}}}}}}}}}}
```

## PATCH /v1/assets/{id}/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}

> Enable or disable an enrichment insight for an asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/assets/{id}/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}":{"patch":{"tags":["Assets"],"summary":"Enable or disable an enrichment insight for an asset","parameters":[{"name":"id","in":"path","description":"Id of asset","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 asset","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## PATCH /v1/assets/batch/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}

> Enable or disable an enrichment insight for a batch of assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/assets/batch/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore}":{"patch":{"tags":["Assets"],"summary":"Enable or disable an enrichment insight for a batch of assets","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 assets","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 assets to toggle ignore for","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int32"}}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/assets/{id}/references

> Get references to an asset

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetReferences":{"type":"object","properties":{"AssetId":{"type":"integer","description":"Id of the referenced asset","format":"int32"},"ReferencingCategories":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of categories referencing this asset","nullable":true},"ReferencingProducts":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of products referencing this asset","nullable":true},"ReferencingVariantGroups":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variant groups referencing this asset","nullable":true},"ReferencingVariants":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variants referencing this asset","nullable":true},"ReferencingAssets":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of assets referencing this asset","nullable":true},"ReferencingGlobalListValues":{"type":"array","items":{"type":"string","format":"uuid"},"description":"List of global list values referencing this asset","nullable":true}},"additionalProperties":false,"description":"Model holding references from other entities to a specific asset"},"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"},"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/assets/{id}/references":{"get":{"tags":["Assets"],"summary":"Get references to an asset","parameters":[{"name":"id","in":"path","description":"Id of asset","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Asset.AssetReferences"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/batch/references

> Get references to a batch of assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Asset.AssetReferences":{"type":"object","properties":{"AssetId":{"type":"integer","description":"Id of the referenced asset","format":"int32"},"ReferencingCategories":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of categories referencing this asset","nullable":true},"ReferencingProducts":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of products referencing this asset","nullable":true},"ReferencingVariantGroups":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variant groups referencing this asset","nullable":true},"ReferencingVariants":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of variants referencing this asset","nullable":true},"ReferencingAssets":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.EntityReferenceDetail"},"description":"List of assets referencing this asset","nullable":true},"ReferencingGlobalListValues":{"type":"array","items":{"type":"string","format":"uuid"},"description":"List of global list values referencing this asset","nullable":true}},"additionalProperties":false,"description":"Model holding references from other entities to a specific asset"},"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/assets/batch/references":{"post":{"tags":["Assets"],"summary":"Get references to a batch of assets","requestBody":{"description":"Ids of assets","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.Asset.AssetReferences"}}}}}}}}}}
```

## POST /v1/assets/search

> Get ids of assets matching a certain criteria

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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"},"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/assets/search":{"post":{"tags":["Assets"],"summary":"Get ids of assets matching a 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"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## POST /v1/assets/search/paged

> Get paged result of assets 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":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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},"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/assets/search/paged":{"post":{"tags":["Assets"],"summary":"Get paged result of assets 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"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## GET /v1/assets/queryablefields

> Get all available query fields for assets

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Assets","description":"Assets are files that can be stored in the system and referenced on products, variants, categories and global list values. Assets uploaded to the system are assigned a URL based on the assets file name.\r\nEach image asset can be auto-scaled, cropped and formatted by adding parameters to the URL of the asset. Thus, you should only upload an image once in the highest quality you will need it and the system will take care of any scaling automatically.\r\nAssets are organized in folders, which can be nested within each other."}],"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"},"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/assets/queryablefields":{"get":{"tags":["Assets"],"summary":"Get all available query fields for assets","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Shared.QueryableField"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```
