FAQs
Q1. What framework and database does the PIM Service use?
Fastify (v5) on Node 20+ with TypeScript, backed by MongoDB (
pimdb_${STAGE}). Redis is an optional cache and EventBridge carries indexing events.
Q2. How is authentication and authorization enforced?
JWT bearer tokens; each protected route requires a specific privilege (and, for CRUD, admin). Failures return
403 EQ-PIM-4030001. SetSKIP_AUTH=trueonly for local testing.
Q3. Which endpoints are public?
All
/v1/search/*,/v1/action/*(storefront),/v1/health, and (only whenSTAGE=local)/v1/internal/import-actionand/v1/internal/export-action. None require a privilege.
Q4. What does the error-code format mean?
EQ-PIM-XXXXXXX— prefixEQ-PIM-, then 7 digits whose first three encode the HTTP status (e.g.404,422,500). The authoritative status comes from an internal status map kept consistent with those digits.
Q5. What events does the service publish, and where?
Primarily
INDEX_REQUESTEDto the EventBridge busEVENT_BUS_NAME(defaulteq-pim-service-eventbus); the specific entity change (e.g.PRODUCT_CREATED) is insidedata.event. The bulk-indexing fan-out also publishesBULK_INDEX_CHUNK/BULK_CATEGORY_INDEX_CHUNK(self-consumed) and bulk jobs emitbatch.execution.{progress,completed,failed}status events. Locally, if publish fails, indexing runs in-process.
Q6. Which search engine is used?
Per instance: Typesense or Elasticsearch/OpenSearch, chosen by the instance’s
searchEngineproperty (defaultelasticsearch). Index collections are namedeq9-pim-{instanceId}-products/-categories.
Q7. How do bulk import/export and indexing run in production?
Via AWS Step Functions invoking the PIM Service in a direct-invocation batch mode. Action prefixes route the work:
batch.(import),batch.export.(export),price.clone.(clone),refresh./category.(indexer).
Q8. How is multi-tenancy handled?
Nearly all endpoints require an
instanceIdquery parameter; data is scoped by instance (and oftencatalogId). Per-tenant behavior (locales, search engine, plugins) comes frominstance.properties.
Q9. Can behavior be customized per tenant without changing the service?
Yes — via the plugin registry (
pluginConfigselects custom validators, allowlisted by environment) and marketplace connectors.
Q10. Why do some composite-product endpoints seem missing?
Several GET/DELETE operations for bundles/kits/collections are not currently enabled. See the flags in §3.
Revision History
2026-08-05 | JP – Created the page and added the content.