Struct Docs
Struct.PIM 4
Struct.PIM 4
  • Struct PIM Documentation
  • API Reference
  • Latest updates from Struct HQ
  • Latest updates in Documentation
  • Fundamental concepts
    • Get familiar with Struct PIM
    • Catalogues & categories
    • Products & variants
    • Attributes
    • Product structures
    • Identifiers
    • Global lists
    • Localization & segmentation
    • Revisions & changelog
    • Publications
    • Supplier onboarding portal
  • Tutorials
    • Helpful guides
      • How to search efficiently
      • How to use Import
        • How to import products
        • How to import data into a list property on entities
        • How to import categories
        • How to import with media
        • How to use File templates
    • Example projects
      • Working with the API
  • Integration
    • Integrate with Struct PIM
    • Web API
    • Webhooks
  • Media format
  • API Reference
    • Introduction
    • Endpoints
      • AssetFolders
      • Assets
      • AssetTypes
      • AttributeGroups
      • Attributes
      • AttributeScopes
      • Browse
      • BusinessUnits
      • Catalogues
      • Categories
      • Dimensions
      • Exports
      • EnrichmentInsightSetups
      • GlobalLists
      • Languages
      • Maintenance
      • Miscellaneous
      • Messaging
      • Permissions
      • Products
      • ProductStructures
      • Publications
      • Transactions
      • UserGroup
      • UserRoles
      • Users
      • VariantGroups
      • UserTasks
      • Variants
      • Webhooks
      • Workflows
      • Models
Powered by GitBook
On this page
  1. API Reference
  2. Endpoints

Categories

PreviousCataloguesNextDimensions

Categories are used to create hierarchical structures within a catalogue.Categories serves as a means for structuring products in meaningful classifications

Get ids of all categories in the system

get

Categories are used to organize products within catalogues. Categories can be nested in a hierarchy structure of any depth. The catalogue data model defines attributes which can hold data for each category. Attributes can be attached to categories in the master catalogue to define a structure of attributes available to products depending on their category placement in the master catalogue.

Authorizations
Responses
200
OK
Responseinteger · int32[]
get
GET /v1/categories/ids HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  1
]

Get basic models for categories

get

No more than 5000 categories can be requested at a time. If no limit is provided, the default limit of 1000 will be used

Authorizations
Query parameters
limitinteger · int32Optional

Number of categories to return

Default: 1000
afterIdinteger · int32Optional

Only get categories with id larger than this id

Responses
200
OK
get
GET /v1/categories HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

{
  "Categories": [
    {
      "Id": 1,
      "ParentId": 1,
      "SortOrder": 1,
      "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
      "Created": "2025-05-09T12:05:51.100Z",
      "CreatedBy": "text",
      "LastModified": "2025-05-09T12:05:51.100Z",
      "LastModifiedBy": "text",
      "HasChildren": true,
      "Name": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "Dynamic": true,
      "QuerySetup": {
        "ProductQuery": {
          "BooleanOperator": 0,
          "QueryModelType": "text"
        },
        "VariantGroupQuery": {
          "BooleanOperator": 0,
          "QueryModelType": "text"
        }
      },
      "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
      "BusinessUnits": [
        {
          "AccessPolicy": "text",
          "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
        }
      ]
    }
  ],
  "Total": 1,
  "Remaining": 1,
  "LastId": 1
}

Get basic model for a category

get
Authorizations
Path parameters
idinteger · int32Required

Id of category

Responses
200
OK
get
GET /v1/categories/{id} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

{
  "Id": 1,
  "ParentId": 1,
  "SortOrder": 1,
  "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
  "Created": "2025-05-09T12:05:51.100Z",
  "CreatedBy": "text",
  "LastModified": "2025-05-09T12:05:51.100Z",
  "LastModifiedBy": "text",
  "HasChildren": true,
  "Name": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "Dynamic": true,
  "QuerySetup": {
    "ProductQuery": {
      "BooleanOperator": 0,
      "QueryModelType": "text"
    },
    "VariantGroupQuery": {
      "BooleanOperator": 0,
      "QueryModelType": "text"
    }
  },
  "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
  "BusinessUnits": [
    {
      "AccessPolicy": "text",
      "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ]
}

Delete a category

delete
Authorizations
Path parameters
idinteger · int32Required

Id of category to delete

Responses
200
OK
delete
DELETE /v1/categories/{id} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

No content

Get child categories of a specific category

get
Authorizations
Path parameters
idinteger · int32Required

Id of category to get children for

Responses
200
OK
get
GET /v1/categories/{id}/children HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  {
    "Id": 1,
    "ParentId": 1,
    "SortOrder": 1,
    "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
    "Created": "2025-05-09T12:05:51.100Z",
    "CreatedBy": "text",
    "LastModified": "2025-05-09T12:05:51.100Z",
    "LastModifiedBy": "text",
    "HasChildren": true,
    "Name": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "Dynamic": true,
    "QuerySetup": {
      "ProductQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      },
      "VariantGroupQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      }
    },
    "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
    "BusinessUnits": [
      {
        "AccessPolicy": "text",
        "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ]
  }
]

Get ids of products in a category

get
Authorizations
Path parameters
idinteger · int32Required

Id of category to get products for

Query parameters
includeArchivedbooleanOptional

Include archived products

Default: false
Responses
200
OK
Responseinteger · int32[]
get
GET /v1/categories/{id}/products HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  1
]

Get the number of products in a category

get
Authorizations
Path parameters
idinteger · int32Required

Id of category to get product count for

Query parameters
includeArchivedbooleanOptional

Include archived products in count

Default: false
Responses
200
OK
Responseinteger · int32
get
GET /v1/categories/{id}/products/count HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

1

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

get

Use to get a map from an identifier to the internal id of a category in the system. Identifiers are based on attribute values that hold references to external systems. Thus, the identifier can be the id of the category in an external system. You can then use this map to know which category id to update or delete based on the id of the corresponding category in the external system

Authorizations
Path parameters
identifierAliasstringRequired

Alias of identifier type

Responses
200
OK
get
GET /v1/categories/identifiers/{identifierAlias} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

{
  "ANY_ADDITIONAL_PROPERTY": 1
}

Get the internal id of a category based on its identifier

get

Use to get a map from an identifier to the internal id of a category in the system. Identifiers are based on attribute values that hold references to external systems. Thus, the identifier can be the id of the category in an external system. You can then use this map to know which category id to update or delete based on the id of the corresponding category in the external system

Authorizations
Path parameters
identifierAliasstringRequired

Alias of identifier type

identifierstringRequired

Identifier value

Responses
200
OK
Responseinteger · int32
get
GET /v1/categories/identifiers/{identifierAlias}/{identifier} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

1

Get attribute values for the category

get
Authorizations
Path parameters
idinteger · int32Required

Id of category

Query parameters
globalListValueReferencesOnlybooleanOptional

Indicate if only uids of referenced to global list values shall be returned instead of the materialized values

Default: false
Responses
200
OK
404
Not Found
get
GET /v1/categories/{id}/attributevalues HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
{
  "CategoryId": 1,
  "Values": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}

Get product attributes on category

get
Authorizations
Query parameters
categoryIdinteger · int32Optional

Id of category to get attached attributes from

Responses
200
OK
get
GET /v1/categories/productattributes HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  {
    "AttributeUid": "123e4567-e89b-12d3-a456-426614174000",
    "CategoryId": 1,
    "Owner": 1,
    "EditableOnEntities": 0,
    "SortOrder": 1
  }
]

Attach attribute to a category, which is to be visible to products in that category

post
Authorizations
Query parameters
categoryIdinteger · int32Optional

Id of category to attach attribute to

attributeUidstring · uuidOptional

Uid of attribute to attach

editableOnEntitiesinteger · enumOptional

Represents where attributes added to categories are editable on entities placed in that category

Possible values:
sortOrderinteger · int32Optional

Sort order of attribute on category

Responses
200
OK
400
Bad Request
post
POST /v1/categories/productattributes HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*

No content

Remove a product attribute from a category

delete
Authorizations
Query parameters
categoryIdinteger · int32Optional

Id of category the attribute is attached to

attributeUidstring · uuidOptional

Uid of attached attribute

Responses
200
OK
delete
DELETE /v1/categories/productattributes HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

No content

Update attribute on a category

patch
Authorizations
Query parameters
categoryIdinteger · int32Optional

Id of category the attribute is attached to

attributeUidstring · uuidOptional

Uid of attached attribute

editableOnEntitiesinteger · enumOptional

Represents where attributes added to categories are editable on entities placed in that category

Possible values:
sortOrderinteger · int32Optional

Sort order of attribute on category

Responses
200
OK
patch
PATCH /v1/categories/productattributes HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

No content

Get references to a category

get

#Available from v.3.5.0

Authorizations
Path parameters
idinteger · int32Required

Id of category

Responses
200
OK
get
GET /v1/categories/{id}/references HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

{
  "CategoryId": 1,
  "ReferencingCategories": [
    {
      "EntityId": 1,
      "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "ReferencingProducts": [
    {
      "EntityId": 1,
      "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "ReferencingVariantGroups": [
    {
      "EntityId": 1,
      "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "ReferencingVariants": [
    {
      "EntityId": 1,
      "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "ReferencingAssets": [
    {
      "EntityId": 1,
      "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "ReferencingGlobalListValues": [
    "123e4567-e89b-12d3-a456-426614174000"
  ]
}

Get Enrichment Insights for a category

get

#Available from v.3.5.0

Authorizations
Path parameters
idinteger · int32Required

Id of category to get insights for

Responses
200
OK
get
GET /v1/categories/{id}/enrichmentinsights HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  {
    "EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
    "EntityId": 1,
    "Completeness": 1,
    "MissingData": [
      {
        "Type": "text",
        "DataReference": "text"
      }
    ],
    "Ignored": true
  }
]

Enable or disable an enrichment insight for a category

patch

#Available from v.3.5.0

Authorizations
Path parameters
idinteger · int32Required

Id of category

enrichmentInsightSetupUidstring · uuidRequired

Uid of enrichment insight to toggle ignore for

ignorebooleanRequired

Indicate whether to ignore the insight for the given enrichment insight and category

Responses
200
OK
patch
PATCH /v1/categories/{id}/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

No content

Get all available query fields in the PIM installation

get
Authorizations
Responses
200
OK
get
GET /v1/categories/queryablefields HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Accept: */*
200

OK

[
  {
    "Uid": "text",
    "Name": "text",
    "SupportsSorting": true
  }
]
  • GETGet ids of all categories in the system
  • GETGet basic models for categories
  • POSTCreate new categories
  • DELETEDelete multiple categories
  • PATCHUpdate multiple categories
  • GETGet basic model for a category
  • DELETEDelete a category
  • PATCHUpdate category
  • POSTGet basic model for a batch of categories
  • GETGet child categories of a specific category
  • POSTGet child categories for a range categories
  • GETGet ids of products in a category
  • POSTGet ids of products in a categories
  • GETGet the number of products in a category
  • POSTGet the number of products in a batch of categories
  • GETGet all identifiers and their internal ids for a specific identifier type
  • GETGet the internal id of a category based on its identifier
  • POSTGet internal ids of multiple categories from their identifier
  • GETGet attribute values for the category
  • PATCH/v1/categories/{id}/attributevalues
  • POSTGet attribute values for multiple categories
  • PATCHUpdate attribute values on multiple categories
  • GETGet product attributes on category
  • POSTAttach attribute to a category, which is to be visible to products in that category
  • DELETERemove a product attribute from a category
  • PATCHUpdate attribute on a category
  • GETGet references to a category
  • POSTGet references to a batch of categories
  • GETGet Enrichment Insights for a category
  • POSTGet Enrichment Insights for a batch of categories
  • POSTGet insights for a batch of categories and a specific Enrichment Insight
  • PATCHEnable or disable an enrichment insight for a category
  • PATCHEnable or disable an enrichment insight for a batch of categories
  • POSTGet ids of categories matching certain criteria
  • POSTGet paged result of categories matching certain criteria. Result mapped with headers and item results
  • GETGet all available query fields in the PIM installation

Create new categories

post

A maximum of 5000 categories can be created in one request

Authorizations
Body

Model for creating a new category

CatalogueUidstring · uuidOptional

Uid of catalogue to add category to

ParentIdinteger · int32 | nullableOptional

Id of parent id to place category underneath (set as null, of category shall be at root level of catalogue)

SortOrderinteger · int32 | nullableOptional

Sort order of category compared to other categories at the same level i the catalogue

Dynamicboolean | nullableOptional

Set if products for this category is found by search query set on category

WorkflowStateUidstring · uuid | nullableOptional

Workflow state to set on the category

Responses
200
OK
Responseinteger · int32[]
400
Bad Request
post
POST /v1/categories HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 398

[
  {
    "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
    "ParentId": 1,
    "SortOrder": 1,
    "Dynamic": true,
    "QuerySetup": {
      "ProductQuery": {
        "BooleanOperator": 0
      },
      "VariantGroupQuery": {
        "BooleanOperator": 0
      }
    },
    "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
    "BusinessUnits": [
      {
        "AccessPolicy": "text",
        "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "Values": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
]
[
  1
]

Delete multiple categories

delete
Authorizations
Body
integer · int32[]Optional
Responses
200
OK
delete
DELETE /v1/categories HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

No content

Update multiple categories

patch

A maximum of 5000 categories can be updated in one request

Authorizations
Body
Responses
200
OK
400
Bad Request
patch
PATCH /v1/categories HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 425

{
  "ANY_ADDITIONAL_PROPERTY": {
    "SortOrder": 1,
    "MoveCommand": {
      "ParentId": 1,
      "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000"
    },
    "QuerySetup": {
      "ProductQuery": {
        "BooleanOperator": 0
      },
      "VariantGroupQuery": {
        "BooleanOperator": 0
      }
    },
    "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
    "BusinessUnits": [
      {
        "AccessPolicy": "text",
        "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "Values": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}

No content

Update category

patch
Authorizations
Path parameters
idinteger · int32Required

Id of category to update

Body

Model representing a category update

SortOrderinteger · int32 | nullableOptional

Set to update sort order of category compared to other categories at the same level in the catalogue (set as null if you do not want to update this)

WorkflowStateUidstring · uuid | nullableOptional

Workflow state to set on the category

Responses
200
OK
patch
PATCH /v1/categories/{id} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 397

{
  "SortOrder": 1,
  "MoveCommand": {
    "ParentId": 1,
    "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000"
  },
  "QuerySetup": {
    "ProductQuery": {
      "BooleanOperator": 0
    },
    "VariantGroupQuery": {
      "BooleanOperator": 0
    }
  },
  "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
  "BusinessUnits": [
    {
      "AccessPolicy": "text",
      "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "Values": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}
200

OK

No content

Get basic model for a batch of categories

post

#Available from v.3.2.0

Authorizations
Body
integer · int32[]Optional
Responses
200
OK
post
POST /v1/categories/batch HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

[
  {
    "Id": 1,
    "ParentId": 1,
    "SortOrder": 1,
    "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
    "Created": "2025-05-09T12:05:51.100Z",
    "CreatedBy": "text",
    "LastModified": "2025-05-09T12:05:51.100Z",
    "LastModifiedBy": "text",
    "HasChildren": true,
    "Name": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "Dynamic": true,
    "QuerySetup": {
      "ProductQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      },
      "VariantGroupQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      }
    },
    "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
    "BusinessUnits": [
      {
        "AccessPolicy": "text",
        "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ]
  }
]

Get child categories for a range categories

post
Authorizations
Body
integer · int32[]Optional
Responses
200
OK
post
POST /v1/categories/batch/children HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

[
  {
    "Id": 1,
    "ParentId": 1,
    "SortOrder": 1,
    "CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
    "Created": "2025-05-09T12:05:51.100Z",
    "CreatedBy": "text",
    "LastModified": "2025-05-09T12:05:51.100Z",
    "LastModifiedBy": "text",
    "HasChildren": true,
    "Name": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "Dynamic": true,
    "QuerySetup": {
      "ProductQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      },
      "VariantGroupQuery": {
        "BooleanOperator": 0,
        "QueryModelType": "text"
      }
    },
    "WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
    "BusinessUnits": [
      {
        "AccessPolicy": "text",
        "BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ]
  }
]

Get ids of products in a categories

post
Authorizations
Body

Wrapper for product children batch query

CategoryIdsinteger · int32[] | nullableOptional

Category ids to request products for

IncludeArchivedbooleanOptional

Indicate whether archibed products shall also be included

Responses
200
OK
post
POST /v1/categories/batch/products HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 42

{
  "CategoryIds": [
    1
  ],
  "IncludeArchived": true
}
200

OK

{
  "ANY_ADDITIONAL_PROPERTY": [
    1
  ]
}

Get the number of products in a batch of categories

post
Authorizations
Body

Wrapper for product children batch query

CategoryIdsinteger · int32[] | nullableOptional

Category ids to request products for

IncludeArchivedbooleanOptional

Indicate whether archibed products shall also be included

Responses
200
OK
post
POST /v1/categories/batch/products/count HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 42

{
  "CategoryIds": [
    1
  ],
  "IncludeArchived": true
}
200

OK

{
  "ANY_ADDITIONAL_PROPERTY": 1
}

Get internal ids of multiple categories from their identifier

post

Use to get a map from an identifier to the internal id of a category in the system. Identifiers are based on attribute values that hold references to external systems. Thus, the identifier can be the id of the category in an external system. You can then use this map to know which category id to update or delete based on the id of the corresponding category in the external system

Authorizations
Body

Provide an identifier alias along with an array of identifiers to get the internal entity ids matching those identifiers

IdentifierAliasstring | nullableOptional

The alias of the identifier

Identifiersstring[] | nullableOptional

Array of identifiers to return internal ids for

Responses
200
OK
post
POST /v1/categories/batch/identifiers HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 49

{
  "IdentifierAlias": "text",
  "Identifiers": [
    "text"
  ]
}
200

OK

{
  "ANY_ADDITIONAL_PROPERTY": 1
}
patch
Authorizations
Path parameters
idinteger · int32Required

Id of category

Body
Other propertiesanyOptional
Responses
200
OK
patch
PATCH /v1/categories/{id}/attributevalues HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 38

{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}
200

OK

No content

Get attribute values for multiple categories

post

No more than 5000 categories can be requested at a time.

Authorizations
Body

Define which categories to fetch data for and what data to fetch

CategoryIdsinteger · int32[] | nullableOptional

Ids of categories to return

IncludeValuesinteger · enumOptional

Defines which attribute values to return

Possible values:
Scopesstring[] | nullableOptional

If IncludeValues is Scopes, define which scopes to return values for here

Aliasesstring[] | nullableOptional

If IncludeValues is Aliases, define aliases of the attributes to include values for

Uidsstring · uuid[] | nullableOptional

If IncludeValues is Uids, define uids of the attributes to include values for

LimitToCultureCodesstring[] | nullableOptional

Only return values for specific languages

LimitToSegmentsstring[] | nullableOptional

Only return values for specific dimension segments

GlobalListValueReferencesOnlybooleanOptional

Indicate if only uids of referenced to global list values shall be returned instead of the materialized values

FromTimestampstring · date-time | nullableOptional

Get attribute values back in time

Responses
200
OK
400
Bad Request
post
POST /v1/categories/batch/attributevalues HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 260

{
  "CategoryIds": [
    1
  ],
  "IncludeValues": 1,
  "Scopes": [
    "text"
  ],
  "Aliases": [
    "text"
  ],
  "Uids": [
    "123e4567-e89b-12d3-a456-426614174000"
  ],
  "LimitToCultureCodes": [
    "text"
  ],
  "LimitToSegments": [
    "text"
  ],
  "GlobalListValueReferencesOnly": true,
  "FromTimestamp": "2025-05-09T12:05:51.100Z"
}
[
  {
    "CategoryId": 1,
    "Values": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
]

Update attribute values on multiple categories

patch

A maximum of 5000 categories can be updated in one request

Authorizations
Body

Category attribute values container

CategoryIdinteger · int32Optional

Id of category

Responses
200
OK
patch
PATCH /v1/categories/attributevalues HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 66

[
  {
    "CategoryId": 1,
    "Values": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
]
200

OK

No content

Get references to a batch of categories

post

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

Authorizations
Body
integer · int32[]Optional
Responses
200
OK
post
POST /v1/categories/batch/references HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

[
  {
    "CategoryId": 1,
    "ReferencingCategories": [
      {
        "EntityId": 1,
        "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "ReferencingProducts": [
      {
        "EntityId": 1,
        "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "ReferencingVariantGroups": [
      {
        "EntityId": 1,
        "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "ReferencingVariants": [
      {
        "EntityId": 1,
        "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "ReferencingAssets": [
      {
        "EntityId": 1,
        "AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "ReferencingGlobalListValues": [
      "123e4567-e89b-12d3-a456-426614174000"
    ]
  }
]

Get Enrichment Insights for a batch of categories

post

#Available from v.3.5.0

Authorizations
Body
integer · int32[]Optional
Responses
200
OK
post
POST /v1/categories/batch/enrichmentinsights HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

{
  "EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
  "EntityId": 1,
  "Completeness": 1,
  "MissingData": [
    {
      "Type": "text",
      "DataReference": "text"
    }
  ],
  "Ignored": true
}

Get insights for a batch of categories and a specific Enrichment Insight

post

#Available from v.3.5.0

Authorizations
Path parameters
enrichmentInsightUidstring · uuidRequired

Uid of enrichment insight to get for batch of categories

Body
integer · int32[]Optional
Responses
200
OK
post
POST /v1/categories/batch/enrichmentinsights/{enrichmentInsightUid} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

{
  "EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
  "EntityId": 1,
  "Completeness": 1,
  "MissingData": [
    {
      "Type": "text",
      "DataReference": "text"
    }
  ],
  "Ignored": true
}

Enable or disable an enrichment insight for a batch of categories

patch

#Available from v.3.5.0

Authorizations
Path parameters
enrichmentInsightSetupUidstring · uuidRequired

Uid of enrichment insight to toggle ignore for

ignorebooleanRequired

Indicate whether to ignore the insight for the given enrichment insight and categories

Body
integer · int32[]Optional
Responses
200
OK
patch
PATCH /v1/categories/batch/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore} HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3

[
  1
]
200

OK

No content

Get ids of categories matching certain criteria

post
Authorizations
Body

Search model used for searching products or variants in PIM

IncludeArchivedbooleanOptional

Include archived items in result

Responses
200
OK
Responseinteger · int32[]
post
POST /v1/categories/search HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 59

{
  "IncludeArchived": true,
  "QueryModel": {
    "BooleanOperator": 0
  }
}
200

OK

[
  1
]

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

post
Authorizations
Body

Extended search model used for searching products or variants in PIM with support for paging and sorting

Pageinteger · int32Optional
PageSizeinteger · int32 | nullableOptional
FieldUidsstring[] | nullableOptional
SortByFieldUidstring | nullableOptional
SortDescendingboolean | nullableOptional
IncludeArchivedbooleanOptional

Include archived items in result

Responses
200
OK
post
POST /v1/categories/search/paged HTTP/1.1
Host: 
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 148

{
  "Page": 1,
  "PageSize": 1,
  "FieldUids": [
    "text"
  ],
  "SortByFieldUid": "text",
  "SortDescending": true,
  "IncludeArchived": true,
  "QueryModel": {
    "BooleanOperator": 0
  }
}
200

OK

{
  "TotalHits": 1,
  "Page": 1,
  "PageSize": 1,
  "TotalPages": 1,
  "ItemListHeaders": [
    {
      "FieldUid": "text",
      "FieldName": "text",
      "FieldType": "text",
      "SupportsSearching": true,
      "SupportsSorting": true
    }
  ],
  "ListItems": [
    {
      "Id": 1,
      "ShownValues": [
        "text"
      ]
    }
  ]
}