API Documentation

Bidirectional product sync

Push products to Shopify, pull from Shopify, or run a full bidirectional sync. Track sync history with detailed logs and maintain entity-product mappings for reliable data consistency.

Push

Send Sigma PIM entities to the external channel. Creates new products or updates existing ones based on sync mappings.

Pull

Import products from the external channel into Sigma PIM. Creates new entities or updates existing ones.

Bidirectional

Full two-way sync. Push local changes and pull remote changes in a single operation. Direction: bidirectional

Test Connection

Verify the channel's connection credentials before syncing. Returns connection status and shop metadata.

Endpoints

Method Endpoint Description
POST /channels/:id/test-connection Test Shopify connection
POST /channels/:id/sync Full bidirectional sync
POST /channels/:id/push Push entities to Shopify
POST /channels/:id/pull Pull products from Shopify
GET /channels/:id/sync-logs Get sync history
GET /channels/:id/sync-mappings Get entity-product mappings

Test connection

Verify that the channel's connection credentials are valid. For Shopify channels, this tests the API key and shop URL. Returns connection status and shop metadata.

curl -X POST https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/test-connection \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response { "ok": true, "shopName": "Sigma EU Store", "shopUrl": "https://sigma-eu.myshopify.com", "plan": "Shopify Plus", "productCount": 234 }

Full bidirectional sync

Run a complete bidirectional sync. Pushes local changes to Shopify and pulls remote changes back. Uses checksum-based change detection to minimize unnecessary writes.

curl -X POST https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/sync \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response — SyncLog { "id": "synclog-20260308-001", "channelId": "ch-shopify-eu", "direction": "bidirectional", "status": "success", "startedAt": "2026-03-08T10:00:00.000Z", "completedAt": "2026-03-08T10:00:12.450Z", "pushed": 45, "pulled": 3, "skipped": 2, "failed": 0, "errors": [] }

Push to Shopify

Push all matching entities from Sigma PIM to the Shopify store. Field mappings defined on the channel are applied during the push. Only entities matching the channel's schema and catalog filters are included.

curl -X POST https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/push \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response — SyncLog { "id": "synclog-20260308-002", "channelId": "ch-shopify-eu", "direction": "push", "status": "success", "startedAt": "2026-03-08T10:15:00.000Z", "completedAt": "2026-03-08T10:15:08.230Z", "pushed": 45, "pulled": 0, "skipped": 2, "failed": 0, "errors": [] }

Pull from Shopify

Pull products from the Shopify store into Sigma PIM. Uses the channel's field mappings in reverse to populate entity attributes. New products create new entities; existing mappings update in place.

curl -X POST https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/pull \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
// Response — SyncLog { "id": "synclog-20260308-003", "channelId": "ch-shopify-eu", "direction": "pull", "status": "success", "startedAt": "2026-03-08T10:30:00.000Z", "completedAt": "2026-03-08T10:30:05.120Z", "pushed": 0, "pulled": 3, "skipped": 0, "failed": 0, "errors": [] }

Sync history

Retrieve the sync log history for a channel. Each log entry records the direction, status, timestamps, and item counts for a sync operation.

curl https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/sync-logs \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

SyncLog shape

Field Type Description
id string Unique sync log ID
channelId string Channel that was synced
direction string push | pull | bidirectional
status string running | success | failed | partial
startedAt string ISO 8601 timestamp
completedAt string? ISO 8601 timestamp, null if still running
pushed number Count of entities pushed to the channel
pulled number Count of products pulled from the channel
skipped number Count of unchanged items skipped
failed number Count of items that failed to sync
errors array Array of { entityId?, externalId?, message }
// Response [ { "id": "synclog-20260308-001", "channelId": "ch-shopify-eu", "direction": "bidirectional", "status": "success", "startedAt": "2026-03-08T10:00:00.000Z", "completedAt": "2026-03-08T10:00:12.450Z", "pushed": 45, "pulled": 3, "skipped": 2, "failed": 0, "errors": [] }, { "id": "synclog-20260307-004", "channelId": "ch-shopify-eu", "direction": "push", "status": "partial", "startedAt": "2026-03-07T14:00:00.000Z", "completedAt": "2026-03-07T14:00:09.870Z", "pushed": 38, "pulled": 0, "skipped": 1, "failed": 2, "errors": [ { "entityId": "ent-042", "message": "Shopify API rate limit exceeded" }, { "entityId": "ent-089", "message": "Missing required field: title" } ] } ]

Entity-product mappings

Retrieve the mapping between Sigma PIM entities and external products for a channel. Each mapping tracks the external ID, variant IDs, and last sync timestamps for reliable change detection.

curl https://api.sigma-pim.com/api/v1/channels/ch-shopify-eu/sync-mappings \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

SyncMapping shape

Field Type Description
id string Unique mapping ID
channelId string Channel this mapping belongs to
entityId string Sigma PIM entity ID
externalId string External product ID (e.g. Shopify product ID)
externalVariantIds string[]? External variant IDs mapped to this entity
lastPushedAt string? Last time entity was pushed to channel
lastPulledAt string? Last time product was pulled from channel
checksum string? Content hash for change detection
// Response [ { "id": "smap-001", "channelId": "ch-shopify-eu", "entityId": "ent-coastal-windbreaker", "externalId": "8234567890123", "externalVariantIds": ["44567890123", "44567890124"], "lastPushedAt": "2026-03-08T10:00:11.200Z", "lastPulledAt": "2026-03-08T10:00:12.100Z", "checksum": "a3f8b2c1d4e5" }, { "id": "smap-002", "channelId": "ch-shopify-eu", "entityId": "ent-alpine-parka", "externalId": "8234567890456", "externalVariantIds": ["44567890567"], "lastPushedAt": "2026-03-08T10:00:11.800Z", "lastPulledAt": null, "checksum": "b7e9c3a2f1d6" } ]