Schemas & Attributes
Define your product structure
Schemas define the attribute groups, data types, and validation rules that shape your products. Sigma PIM supports 8 attribute types, dimension-scoped values, conditional guards, and variant inheritance — all configured through schemas and attributes.
8 Attribute Types
text number boolean datetime media option relation complex
Dimension Scoping
Any attribute can be scoped to Language, Market, or Channel via dimensionIds. Unscoped attributes use a global value.
Validation Rules
Enforce maxLength, min/max, pattern regex, and unique constraints per attribute.
Conditional Guards
Show or hide attributes based on other field values using 5 operators: equals, notEquals, isEmpty, isNotEmpty, in.
Schema Endpoints
List all schemas
Returns an array of all schemas in the workspace. Each schema includes its attribute groups, variant configuration, and optional workflow reference.
curl https://api.sigma-pim.com/api/v1/schemas \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
[
{
"id": "schema-apparel",
"alias": "apparel",
"name": "Apparel",
"description": "Clothing and accessories",
"icon": "shirt",
"variantEnabled": true,
"workflowId": "wf-standard",
"attributeGroups": [
{
"id": "grp-general",
"name": "General",
"sortOrder": 0,
"attributeIds": ["attr-product-name", "attr-sku", "attr-price"]
},
{
"id": "grp-details",
"name": "Details",
"sortOrder": 1,
"attributeIds": ["attr-description", "attr-material"]
}
]
}
]
Create a schema
Creates a new schema that defines the structure for a type of product. Attribute groups organize attributes into logical tabs in the UI.
| Field | Type | Required | Description |
id | string | Yes | Unique identifier for the schema |
alias | string | Yes | URL-safe alias (e.g. apparel) |
name | string | Yes | Human-readable display name |
description | string | No | Optional description of the schema |
icon | string | No | Icon identifier for UI display |
variantEnabled | boolean | Yes | Whether records of this schema can have variants |
attributeGroups | AttributeGroup[] | Yes | Array of attribute groups with id, name, sortOrder, attributeIds |
workflowId | string | No | Reference to a Workflow entity for lifecycle management |
curl -X POST https://api.sigma-pim.com/api/v1/schemas \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"id": "schema-apparel",
"alias": "apparel",
"name": "Apparel",
"description": "Clothing and accessories",
"icon": "shirt",
"variantEnabled": true,
"workflowId": "wf-standard",
"attributeGroups": [
{
"id": "grp-general",
"name": "General",
"sortOrder": 0,
"attributeIds": ["attr-product-name", "attr-sku", "attr-price"]
},
{
"id": "grp-details",
"name": "Details",
"sortOrder": 1,
"attributeIds": ["attr-description", "attr-material"]
}
]
}'
{
"id": "schema-apparel",
"alias": "apparel",
"name": "Apparel",
"description": "Clothing and accessories",
"icon": "shirt",
"variantEnabled": true,
"workflowId": "wf-standard",
"attributeGroups": [
{
"id": "grp-general",
"name": "General",
"sortOrder": 0,
"attributeIds": ["attr-product-name", "attr-sku", "attr-price"]
},
{
"id": "grp-details",
"name": "Details",
"sortOrder": 1,
"attributeIds": ["attr-description", "attr-material"]
}
]
}
Get a schema
Returns a single schema by its ID, including all attribute groups and configuration.
| Parameter | In | Description |
id | path | Schema ID (e.g. schema-apparel) |
curl https://api.sigma-pim.com/api/v1/schemas/schema-apparel \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
{
"id": "schema-apparel",
"alias": "apparel",
"name": "Apparel",
"description": "Clothing and accessories",
"icon": "shirt",
"variantEnabled": true,
"workflowId": "wf-standard",
"attributeGroups": [ ]
}
Update a schema
Updates an existing schema. You can modify any field — name, description, attribute groups, variant configuration, or workflow reference. Fields not included in the request body remain unchanged.
| Parameter | In | Description |
id | path | Schema ID to update |
curl -X PUT https://api.sigma-pim.com/api/v1/schemas/schema-apparel \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Apparel & Footwear",
"description": "Clothing, accessories, and shoes",
"attributeGroups": [
{
"id": "grp-general",
"name": "General",
"sortOrder": 0,
"attributeIds": ["attr-product-name", "attr-sku", "attr-price", "attr-color"]
}
]
}'
{
"id": "schema-apparel",
"alias": "apparel",
"name": "Apparel & Footwear",
"description": "Clothing, accessories, and shoes",
"variantEnabled": true,
"workflowId": "wf-standard",
"attributeGroups": [
{
"id": "grp-general",
"name": "General",
"sortOrder": 0,
"attributeIds": ["attr-product-name", "attr-sku", "attr-price", "attr-color"]
}
]
}
Delete a schema
Permanently deletes a schema. This will not automatically delete records using this schema — ensure records are migrated or removed first.
| Parameter | In | Description |
id | path | Schema ID to delete |
curl -X DELETE https://api.sigma-pim.com/api/v1/schemas/schema-apparel \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
List attributes for a schema
Returns all attribute definitions referenced by the schema's attribute groups, in group order. This is a convenience endpoint that resolves the attribute IDs from each group into full attribute objects.
| Parameter | In | Description |
id | path | Schema ID |
curl https://api.sigma-pim.com/api/v1/schemas/schema-apparel/attributes \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
[
{
"id": "attr-product-name",
"alias": "product-name",
"name": "Product Name",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": true,
"multiValue": false,
"inheritable": true,
"validation": { "maxLength": 200 }
},
{
"id": "attr-sku",
"alias": "sku",
"name": "SKU",
"dataType": "text",
"dimensionIds": [],
"required": true,
"multiValue": false,
"inheritable": false,
"validation": { "unique": true, "pattern": "^[A-Z0-9-]+$" }
},
{
"id": "attr-price",
"alias": "price",
"name": "Price",
"dataType": "number",
"dimensionIds": ["dim-market"],
"required": true,
"multiValue": false,
"inheritable": true,
"unit": "EUR",
"validation": { "min": 0 }
}
]
Attribute Endpoints
List all attributes
Returns all attribute definitions across the workspace. Attributes are shared resources — the same attribute can be referenced by multiple schemas.
curl https://api.sigma-pim.com/api/v1/attributes \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
[
{
"id": "attr-product-name",
"alias": "product-name",
"name": "Product Name",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": true,
"multiValue": false,
"inheritable": true,
"validation": { "maxLength": 200 }
},
]
Create an attribute
Creates a new attribute definition. The dataType determines which validation rules and options are applicable. Use dimensionIds to scope the attribute to specific dimensions (e.g. language, market).
| Field | Type | Required | Description |
id | string | Yes | Unique identifier |
alias | string | Yes | URL-safe alias used in values map (e.g. product-name) |
name | string | Yes | Display name |
dataType | string | Yes | One of: text, number, boolean, datetime, media, option, relation, complex |
dimensionIds | string[] | Yes | Dimension IDs this attribute is scoped to (empty array for global) |
required | boolean | Yes | Whether a value must be provided |
multiValue | boolean | Yes | Whether the attribute accepts multiple values |
inheritable | boolean | Yes | Whether variants inherit this value from parent |
readOnly | boolean | No | If true, value cannot be edited via UI |
optionListId | string | No | Required for option type — references an OptionList |
unit | string | No | Unit of measurement (e.g. EUR, kg, cm) |
validation | object | No | Validation rules: maxLength, min, max, pattern, unique |
guards | AttributeGuard[] | No | Conditional visibility rules based on other attribute values |
curl -X POST https://api.sigma-pim.com/api/v1/attributes \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"id": "attr-description",
"alias": "description",
"name": "Product Description",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": false,
"multiValue": false,
"inheritable": true,
"validation": {
"maxLength": 5000
}
}'
{
"id": "attr-description",
"alias": "description",
"name": "Product Description",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": false,
"multiValue": false,
"inheritable": true,
"validation": { "maxLength": 5000 }
}
Get an attribute
Returns a single attribute definition by its ID.
| Parameter | In | Description |
id | path | Attribute ID (e.g. attr-product-name) |
curl https://api.sigma-pim.com/api/v1/attributes/attr-product-name \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
{
"id": "attr-product-name",
"alias": "product-name",
"name": "Product Name",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": true,
"multiValue": false,
"inheritable": true,
"validation": { "maxLength": 200 }
}
Update an attribute
Updates an existing attribute definition. Changes to dataType may affect existing values. Changes to validation rules are applied to future writes; existing values are not retroactively validated.
| Parameter | In | Description |
id | path | Attribute ID to update |
curl -X PUT https://api.sigma-pim.com/api/v1/attributes/attr-description \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Long Description",
"required": true,
"validation": {
"maxLength": 10000
}
}'
{
"id": "attr-description",
"alias": "description",
"name": "Long Description",
"dataType": "text",
"dimensionIds": ["dim-language"],
"required": true,
"multiValue": false,
"inheritable": true,
"validation": { "maxLength": 10000 }
}
Delete an attribute
Permanently deletes an attribute definition. Ensure it is removed from all schema attribute groups first. Existing values for this attribute on records will become orphaned.
| Parameter | In | Description |
id | path | Attribute ID to delete |
curl -X DELETE https://api.sigma-pim.com/api/v1/attributes/attr-description \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Attribute Types Reference
| Type | Value Format | Applicable Validation | Notes |
text | String | maxLength, pattern, unique | Supports multiLine and richText flags |
number | Number | min, max | Supports unit (e.g. EUR, kg) |
boolean | true / false | — | Simple toggle |
datetime | ISO 8601 string | — | e.g. 2024-01-15T10:30:00Z |
media | URL string or object | — | Image, video, or document references |
option | Option value ID(s) | — | Requires optionListId reference |
relation | Entity ID(s) | — | Requires targetSchemaId for validation |
complex | Nested object | — | Uses subFields for nested attribute definitions |
Conditional Guards
Guards let you conditionally show or hide attributes based on other attribute values. For example, show a "Material Composition" field only when the product category is set to "Apparel".
{
"id": "attr-material-composition",
"alias": "material-composition",
"name": "Material Composition",
"dataType": "text",
"dimensionIds": [],
"required": false,
"multiValue": false,
"inheritable": true,
"guards": [
{
"attributeId": "attr-category",
"operator": "equals",
"value": "apparel"
}
]
}