API Documentation

Every value knows its scope

Language, Market, Channel are all first-class dimensions. No hardcoded locale fields. Any attribute can be scoped by any combination of dimensions. The scope matrix is the cartesian product of all selected dimension segments.

First-class Dimensions

Language, Market, and Channel are all generic dimensions — no special "localized" boolean. Every attribute declares which dimensions scope it via dimensionIds.

Scope Matrix

The scope matrix is the cartesian product of all segments across selected dimensions. Use POST /dimensions/scope-matrix to compute it.

Segments

Each dimension contains named segments. A Language dimension might have en, da, sv. A Market dimension might have DK, SE, NO.

Default Segment

Each dimension has a defaultSegmentId that determines which segment is used as the fallback when no scope is specified.

Endpoints

MethodPathDescription
GET/dimensionsList all dimensions
POST/dimensionsCreate a dimension
GET/dimensions/:idGet dimension by ID
PUT/dimensions/:idUpdate a dimension
DELETE/dimensions/:idDelete a dimension
POST/dimensions/scope-matrixCompute scope matrix
GET /dimensions

Returns all dimensions with their segments.

curl https://api.sigma-pim.com/api/v1/dimensions \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response [ { "id": "dim-language", "alias": "language", "name": "Language", "defaultSegmentId": "seg-en", "segments": [ { "id": "seg-en", "alias": "en", "name": "English", "isDefault": true }, { "id": "seg-da", "alias": "da", "name": "Danish", "isDefault": false }, { "id": "seg-sv", "alias": "sv", "name": "Swedish", "isDefault": false } ] }, { "id": "dim-market", "alias": "market", "name": "Market", "defaultSegmentId": "seg-dk", "segments": [ { "id": "seg-dk", "alias": "dk", "name": "Denmark", "isDefault": true }, { "id": "seg-se", "alias": "se", "name": "Sweden", "isDefault": false }, { "id": "seg-no", "alias": "no", "name": "Norway", "isDefault": false } ] } ]
POST /dimensions

Create a new dimension with its segments. Each segment has a unique ID, alias, and display name.

Request Body
FieldTypeDescription
idstringUnique identifier for the dimension
aliasstringURL-friendly alias
namestringDisplay name
segmentsSegment[]Array of segment objects
segments[].idstringUnique segment identifier
segments[].aliasstringSegment alias (e.g. "en", "da")
segments[].namestringSegment display name
segments[].isDefaultbooleanWhether this is the default segment
defaultSegmentIdstringID of the default segment
curl -X POST https://api.sigma-pim.com/api/v1/dimensions \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -H "Content-Type: application/json" \ -d '{ "id": "dim-language", "alias": "language", "name": "Language", "defaultSegmentId": "seg-en", "segments": [ { "id": "seg-en", "alias": "en", "name": "English", "isDefault": true }, { "id": "seg-da", "alias": "da", "name": "Danish", "isDefault": false }, { "id": "seg-sv", "alias": "sv", "name": "Swedish", "isDefault": false } ] }'
// Response — 201 Created { "id": "dim-language", "alias": "language", "name": "Language", "defaultSegmentId": "seg-en", "segments": [ { "id": "seg-en", "alias": "en", "name": "English", "isDefault": true }, { "id": "seg-da", "alias": "da", "name": "Danish", "isDefault": false }, { "id": "seg-sv", "alias": "sv", "name": "Swedish", "isDefault": false } ] }
GET /dimensions/:id

Retrieve a single dimension by its ID, including all segments.

Path Parameters
ParameterTypeDescription
idstringThe dimension ID (e.g. dim-language)
curl https://api.sigma-pim.com/api/v1/dimensions/dim-language \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response { "id": "dim-language", "alias": "language", "name": "Language", "defaultSegmentId": "seg-en", "segments": [ { "id": "seg-en", "alias": "en", "name": "English", "isDefault": true }, { "id": "seg-da", "alias": "da", "name": "Danish", "isDefault": false }, { "id": "seg-sv", "alias": "sv", "name": "Swedish", "isDefault": false } ] }
PUT /dimensions/:id

Update a dimension, including adding, removing, or modifying segments. Provide the full dimension object.

curl -X PUT https://api.sigma-pim.com/api/v1/dimensions/dim-market \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -H "Content-Type: application/json" \ -d '{ "id": "dim-market", "alias": "market", "name": "Market", "defaultSegmentId": "seg-dk", "segments": [ { "id": "seg-dk", "alias": "dk", "name": "Denmark", "isDefault": true }, { "id": "seg-se", "alias": "se", "name": "Sweden", "isDefault": false }, { "id": "seg-no", "alias": "no", "name": "Norway", "isDefault": false }, { "id": "seg-fi", "alias": "fi", "name": "Finland", "isDefault": false } ] }'
// Response — updated dimension with new Finland segment { "id": "dim-market", "alias": "market", "name": "Market", "defaultSegmentId": "seg-dk", "segments": [ { "id": "seg-dk", "alias": "dk", "name": "Denmark", "isDefault": true }, { "id": "seg-se", "alias": "se", "name": "Sweden", "isDefault": false }, { "id": "seg-no", "alias": "no", "name": "Norway", "isDefault": false }, { "id": "seg-fi", "alias": "fi", "name": "Finland", "isDefault": false } ] }
DELETE /dimensions/:id

Delete a dimension. Returns 204 No Content on success.

curl -X DELETE https://api.sigma-pim.com/api/v1/dimensions/dim-channel \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response — 204 No Content (empty body)
POST /dimensions/scope-matrix

Compute the scope matrix — the cartesian product of all segments across the specified dimensions. This tells you every possible scope combination an attribute value can have.

Request Body
FieldTypeDescription
dimensionIdsstring[]Array of dimension IDs to compute the matrix for
curl -X POST https://api.sigma-pim.com/api/v1/dimensions/scope-matrix \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \ -H "Content-Type: application/json" \ -d '{ "dimensionIds": ["dim-language", "dim-market"] }'
// Response — 3 languages x 3 markets = 9 scope combinations [ { "dim-language": "seg-en", "dim-market": "seg-dk" }, { "dim-language": "seg-en", "dim-market": "seg-se" }, { "dim-language": "seg-en", "dim-market": "seg-no" }, { "dim-language": "seg-da", "dim-market": "seg-dk" }, { "dim-language": "seg-da", "dim-market": "seg-se" }, { "dim-language": "seg-da", "dim-market": "seg-no" }, { "dim-language": "seg-sv", "dim-market": "seg-dk" }, { "dim-language": "seg-sv", "dim-market": "seg-se" }, { "dim-language": "seg-sv", "dim-market": "seg-no" } ]