Error Codes
The service defines 345 error codes.
Format
EQ-PIM-XXXXXXX — prefix EQ-PIM- followed by 7 digits where the first three digits encode the HTTP status and the last four are a sequence number. Examples: EQ-PIM-4040001 (404), EQ-PIM-4220001 (422), EQ-PIM-5000001 (500).
The definitive HTTP status for a code is looked up from an internal status map kept consistent with the encoded digits, not by parsing the string.
Error response shape
Every error response carries these fields, plus an Error-Code response header:
| Field | Meaning |
|---|---|
errorCode |
The EQ-PIM-* code |
errorMessage |
Localized message (with parameter templating) |
validations |
Present only when detail strings are supplied |
details |
Present only when an extension/external validator returns field-level info (and its message overrides errorMessage) |
401/403 authorization error payloads are additionally reshaped into the standard error format.
HTTP status quick reference
| HTTP | Meaning | Example code |
|---|---|---|
| 400 | Bad request / malformed input | EQ-PIM-4000001 (BAD_REQUEST) |
| 401 | Unauthorized / token issues | EQ-PIM-4010001 (UNAUTHORIZED) |
| 403 | Forbidden / insufficient privilege | EQ-PIM-4030001 (FORBIDDEN) |
| 404 | Resource not found | EQ-PIM-4040001 (NOT_FOUND) |
| 405 | Method not allowed | EQ-PIM-4050001 (METHOD_NOT_ALLOWED) |
| 409 | Conflict / already exists | EQ-PIM-4090001 (CONFLICT) |
| 415 | Unsupported media type | UNSUPPORTED_MEDIA_TYPE |
| 422 | Validation error | EQ-PIM-4220001 (VALIDATION_ERROR) |
| 429 | Too many requests | EQ-PIM-4290001 (TOO_MANY_REQUESTS) |
| 500 | Internal server error | EQ-PIM-5000001 (INTERNAL_SERVER_ERROR) |
Codes are grouped into these categories: Generic (500x), Instance, Authentication & Authorization, Attribute, Workflow, Field Validation (4220025–4220100+), Product, Product Template, Category, Catalog, Asset, Price, Price Rule, Channel, Locale, Database, Cache, Search, Navigation, Contract/B2B, and S3 Storage.
Generic & auth (representative)
| Code | HTTP | Constant | When | How to resolve |
|---|---|---|---|---|
| EQ-PIM-5000001 | 500 | INTERNAL_SERVER_ERROR | Unexpected server/DB failure | Retry; check logs/DB connectivity |
| EQ-PIM-4220001 | 422 | VALIDATION_ERROR | Data/business-rule validation failed | Fix request per validations |
| EQ-PIM-4000001 | 400 | BAD_REQUEST | Malformed request | Correct request structure |
| EQ-PIM-4000006 | 400 | INVALID_REQUEST_BODY_FORMAT | Body is not valid JSON | Send valid JSON |
| EQ-PIM-4000016 | 400 | EMPTY_REQUEST_BODY | Empty body on PATCH/PUT | Include a non-empty body |
| EQ-PIM-4000019 | 400 | TOO_MANY_IDS | >20 comma-separated IDs | Send ≤20 IDs per request |
| EQ-PIM-4010001 | 401 | UNAUTHORIZED | No/invalid authentication | Provide a valid bearer token |
| EQ-PIM-4030001 | 403 | FORBIDDEN | Missing required privilege | Grant the pim:* privilege |
| EQ-PIM-4040001 | 404 | NOT_FOUND | Resource/route not found | Verify path and IDs |
| EQ-PIM-4090001 | 409 | CONFLICT | Resource already exists | Use update, or a unique identifier |
| EQ-PIM-4290001 | 429 | TOO_MANY_REQUESTS | Rate limit exceeded | Back off and retry |
Instance & validation (representative)
| Code | HTTP | Constant | When | How to resolve |
|---|---|---|---|---|
| — | 404 | INSTANCE_NOT_FOUND | instanceId doesn’t exist |
Use a valid instance |
| — | 409 | INSTANCE_ALREADY_EXISTS | Duplicate instance | Use a unique instance |
| — | 422 | INSTANCE_INACTIVE | Instance is inactive | Activate the instance |
| — | 400 | INVALID_INSTANCE_ID | instanceId not a valid ObjectId |
Provide a valid ObjectId |
| — | 400 | INSTANCE_ID_REQUIRED | instanceId query missing |
Add ?instanceId=... |
| EQ-PIM-4220099 | 422 | INVALID_LIMIT_VALUE | Bad pagination limit |
Use a valid limit |
| — | 422 | INVALID_OBJECT_ID / INVALID_PAGE_NUMBER | Bad id/page | Correct the parameter |
Attribute / product / category / catalog (representative)
| Code | HTTP | Constant | When | How to resolve |
|---|---|---|---|---|
| EQ-PIM-4090004 | 409 | ATTRIBUTE_ALREADY_EXISTS | Duplicate attribute | Use a unique identifier |
| EQ-PIM-4220169 | 422 | EMPTY_OPTION_VALUE | Empty option in options list | Provide non-empty options |
| EQ-PIM-4090013 | 409 | ATTRIBUTE_GROUP_HAS_ATTRIBUTES | Deleting a group in use | Remove attributes first |
| EQ-PIM-4220113 | 422 | INVALID_PRODUCT_STATUS | Bad product status value | Use an allowed status |
| EQ-PIM-4220149 | 422 | BUNDLE_SKUIDS_NOT_APPLICABLE | skuIds sent for bundle |
Omit skuIds for bundles |
| EQ-PIM-4040008 | 404 | PRODUCT_MODEL_NOT_FOUND | Referenced model missing | Create/reference valid model |
| EQ-PIM-4220109 | 422 | INVALID_CATEGORY_IDENTIFIER_FORMAT | Bad category identifier | Fix identifier format |
| EQ-PIM-4220090 | 422 | INVALID_CATALOG_SUBTYPE | Bad catalog subtype | Use a valid subtype |
Asset / price / search / cache (representative)
| Code | HTTP | Constant | When | How to resolve |
|---|---|---|---|---|
| EQ-PIM-4220054 | 422 | INVALID_FILE_TYPE | Unsupported upload type | Upload an allowed file type |
| EQ-PIM-4220136 | 422 | EMPTY_FILE_UPLOAD | Empty file uploaded | Upload a non-empty file |
| EQ-PIM-4000130 | 400 | ASSET_MIME_TYPE_REQUIRED | Missing MIME type | Provide the asset MIME type |
| EQ-PIM-4040018 | 404 | SKU_NOT_FOUND | SKU not found | Use a valid SKU |
| EQ-PIM-4040031 | 404 | PRICE_LIST_NOT_FOUND | Price list not found | Use a valid price list |
| EQ-PIM-5000053 | 500 | PRICE_LIST_CREATE_FAILED | Price list write failed | Retry / check logs |
| EQ-PIM-4090044 | 409 | PRICE_RULE_ALREADY_EXISTS | Duplicate price rule | Use a unique rule |
| EQ-PIM-4220024 | 422 | INVALID_RULE_ACTION | Bad rule action | Use a supported action |
| EQ-PIM-5000008 | 500 | CACHE_SET_ERROR | Redis write failed | Check Redis connectivity |
S3 storage & contract/B2B (representative)
| Code | HTTP | Constant | When | How to resolve |
|---|---|---|---|---|
| — | 500 | S3_CREDENTIALS_NOT_CONFIGURED | S3 creds missing | Configure AWS credentials |
| — | 500 | S3_ACCESS_DENIED | S3 permission denied | Fix IAM/bucket policy |
| — | 500 | S3_OPERATION_FAILED | S3 op failed | Retry / check bucket config |
| EQ-PIM-4040102 | 404 | CONTRACT_NAVIGATION_NOT_FOUND | Contract navigation missing | Verify contract config |
The tables above are representative; the full 345-code catalogue documents the trigger and HTTP status for each code. Legacy price/workflow codes are retained for backward compatibility and marked as deprecated.
Revision History
2026-08-05 | JP – Created the page and added the content.