- Overview
- API Resources

Supply Chain & Retail Solutions API guide
API Guide
Definitions
These descriptions are designed to support correct usage of the API. For further assistance or questions, please submit a support ticket.
| Name | Description | Required |
|---|---|---|
solutionName | A unique identifier for the rollout or solution. Example: B2C_OOTB. | Yes |
prefix | A unique prefix applied to all generated object names to support naming convention. | Yes |
suffix | A unique suffix appended to all generated object names for differentiation. | Yes |
appName | The application for which the objects are being deployed. | Yes |
objectName | The base object name. Exact object name matching is currently enforced during schema validation. | Yes |
targetSchemaName | The schema within the data warehouse where the tables and data will be stored. Example: STAGE. | Yes |
operationType | The type of ingest operation the API should perform. Supported values: UPSERT (insert or update based on primary key) or APPEND (insert only, similar to an insert operation). | Yes |
Operation Types
The API supports two operation types for data ingestion:
UPSERT
- Behavior: Insert new records or update existing records based on primary key match
- Use case: Maintaining up-to-date records where data may change over time
- Example: Updating product information, customer details, or pricing data
APPEND
- Behavior: Insert new records only, does not update existing records
- Use case: Appending new data without modifying historical records
- Example: Transaction logs, event data, or time-series data where records should not be modified
API Limits
The API supports ingestion of up to 500 rows per request. When ingesting larger datasets, ensure your data is split into appropriately sized batches. Rate limits are 50 requests per second.
Error Codes
Each validation failure returns a structured error response containing an error code, category, and message. Codes follow the pattern DI_E_XXXXX (errors) or DI_W_XXXXX (warnings, non-fatal).
Resolution Guidance by Category
| Category | What It Means | Consumer Action |
|---|---|---|
BUSINESS | Data value violates a schema-defined business rule | Fix the data value (correct format, valid enum, within range, etc.) |
SYSTEM_DATA | Data integrity issue (missing PK, duplicate, null PK) | Fix the data (provide PK, remove duplicates, fill required keys) |
SYSTEM_SCHEMA | Data type doesn't match the attribute's schema definition | Fix the data type (send integer not string, correct JSON type, etc.) |
Business-Level Validation Errors — Category: BUSINESS
These come from schema-defined validation rules configured per attribute (required, range, enum, length, date/timestamp format).
| # | Error Code | Constant Name | When Triggered | Message Template |
|---|---|---|---|---|
| 1 | DI_E_23N01 | BUSINESS_REQUIRED_FIELD | required validator: field absent from payload | field is required |
| 2 | DI_E_23502 | BUSINESS_NULL_VALUE | nonNull validator: value is null | cannot be null |
| 3 | DI_E_23E01 | BUSINESS_EMPTY_VALUE | nonNull validator: string is blank/empty | cannot be empty |
| 4 | DI_E_22026 | BUSINESS_MIN_LENGTH | minLength validator: string too short | length must be >= {min} (got {actual}) |
| 5 | DI_E_22001 | BUSINESS_MAX_LENGTH | maxLength validator: string too long | length must be <= {max} (got {actual}) |
| 6 | DI_E_22003 | BUSINESS_RANGE_BELOW_MIN | range validator: value below min | must be >= {min} (got {actual}) |
| 7 | DI_E_22003 | BUSINESS_RANGE_ABOVE_MAX | range validator: value above max | must be <= {max} (got {actual}) |
| 8 | DI_E_22P02 | BUSINESS_RANGE_NOT_A_NUMBER | range validator: value not numeric | not a valid number |
| 9 | DI_E_22023 | BUSINESS_INVALID_ENUM | enum validator: value not in allowed set | must be one of {values} (got '{actual}') |
| 10 | DI_E_22007 | BUSINESS_INVALID_DATE_FORMAT | dateTimeFormat validator: unparseable date | invalid date format (expected: {format}) |
| 11 | DI_E_22008 | BUSINESS_INVALID_TIMESTAMP_FORMAT | timestampFormat validator: unparseable timestamp | invalid timestamp format (expected: {format}, got: {value}) |
| 12 | DI_E_22008 | BUSINESS_INVALID_EPOCH | timestampFormat validator: negative epoch | invalid epoch timestamp (must be positive) |
System-Level Data Validation Errors — Category: SYSTEM_DATA
These come from data integrity checks (primary key null, duplicate, missing attribute, foreign key, unique key).
| # | Error Code | Constant Name | When Triggered | Message Template |
|---|---|---|---|---|
| 13 | DI_E_23P01 | SYSTEM_DATA_PK_NULL | PK attribute value is null in a row | primary key cannot be null |
| 14 | DI_E_23505 | SYSTEM_DATA_DUPLICATE_PK | 2+ rows in same batch share a PK value | duplicate primary key ({pk_columns}) |
| 15 | DI_E_22I01 | SYSTEM_DATA_INVALID_INTEGER | Value not parseable as integer | must be an integer (got '{value}') |
| 16 | DI_E_22N01 | SYSTEM_DATA_INVALID_NUMBER | Value not parseable as number/float | must be a number (got '{value}') |
| 17 | DI_E_22B01 | SYSTEM_DATA_INVALID_BOOLEAN | Value not parseable as boolean | must be a boolean (got '{value}') |
| 18 | DI_E_22T01 | SYSTEM_DATA_TIMESTAMP_EMPTY | Timestamp field is empty string | invalid timestamp (empty string) |
| 19 | DI_E_22P03 | SYSTEM_DATA_PRECISION_EMPTY_VALUE | Empty/null value during precision check | value is empty or null for precision/scale validation |
| 20 | DI_E_22P04 | SYSTEM_DATA_PK_MISSING_COLUMN | Precision/scale validation error | Precision/Scale validation error |
System-Level Schema Validation Errors — Category: SYSTEM_SCHEMA
These come from data type mismatches and schema structural checks.
| # | Error Code | Constant Name | When Triggered | Message Template |
|---|---|---|---|---|
| 21 | DI_E_42703 | SYSTEM_SCHEMA_UNDEFINED_COLUMN | Attribute in data row not found in schema | column not found in schema |
| 22 | DI_E_22T02 | SYSTEM_SCHEMA_TIMESTAMP_WRONG_TYPE | Timestamp field is wrong JSON type | must be a string or number (got {type}) |
| 23 | DI_E_22P01 | SYSTEM_SCHEMA_PRECISION_EXCEEDED | Total digits exceed attribute precision | value exceeds precision: got {actual} total digits, maximum allowed is {max} |
| 24 | DI_E_22S01 | SYSTEM_SCHEMA_SCALE_EXCEEDED | Decimal digits exceed attribute scale | value exceeds scale: got {actual} decimal digits, maximum allowed is {max} |
| 25 | DI_E_23P02 | SYSTEM_DATA_PK_MISSING_COLUMN | PK attribute entirely absent from a row | primary key column is missing |
Quick Reference — All Codes Sorted
| Code | Category | Short Description |
|---|---|---|
DI_E_22001 | BUSINESS | String too long (max length) |
DI_E_22003 | BUSINESS | Numeric out of range (min/max) |
DI_E_22007 | BUSINESS | Invalid date format |
DI_E_22008 | BUSINESS | Invalid timestamp format / invalid epoch |
DI_E_22023 | BUSINESS | Invalid enum value |
DI_E_22026 | BUSINESS | String too short (min length) |
DI_E_22B01 | SYSTEM_DATA | Invalid boolean type |
DI_E_22I01 | SYSTEM_DATA | Invalid integer type |
DI_E_22N01 | SYSTEM_DATA | Invalid number type |
DI_E_22P01 | SYSTEM_SCHEMA | Numeric precision exceeded |
DI_E_22P02 | BUSINESS / SYSTEM_SCHEMA | Invalid text representation / not a valid number |
DI_E_22P03 | SYSTEM_DATA | Empty value for precision/scale check |
DI_E_22P04 | SYSTEM_DATA | Precision/scale validation error |
DI_E_22S01 | SYSTEM_SCHEMA | Numeric scale exceeded |
DI_E_22T01 | SYSTEM_DATA | Timestamp empty string |
DI_E_22T02 | SYSTEM_SCHEMA | Timestamp wrong JSON type |
DI_E_23505 | SYSTEM_DATA | Duplicate primary key in batch |
DI_E_23502 | BUSINESS | Not-null violation |
DI_E_23E01 | BUSINESS | Not-empty violation |
DI_E_23N01 | BUSINESS | Required field missing |
DI_E_23P01 | SYSTEM_DATA | Primary key value is null |
DI_E_23P02 | SYSTEM_SCHEMA | Primary key attribute missing from row |
DI_E_42703 | SYSTEM_SCHEMA | Attribute not found in schema |
Categorization Logic
Use the error code prefix to quickly identify the class of error:
DI_E_22XXX → Data Exception (type/format/range/precision)
DI_E_23XXX → Integrity Constraint (null/unique/pk/fk/required)
DI_E_42XXX → Schema Mismatch (undefined columns)
DI_W_XXXXX → Warning (non-fatal, future use)
DI_E_22XXX → Data Exception (type/format/range/precision)
DI_E_23XXX → Integrity Constraint (null/unique/pk/fk/required)
DI_E_42XXX → Schema Mismatch (undefined columns)
DI_W_XXXXX → Warning (non-fatal, future use)
- Definitions
- Operation Types
- UPSERT
- APPEND
- API Limits
- Error Codes
- Resolution Guidance by Category
- Business-Level Validation Errors — Category:
BUSINESS - System-Level Data Validation Errors — Category:
SYSTEM_DATA - System-Level Schema Validation Errors — Category:
SYSTEM_SCHEMA - Quick Reference — All Codes Sorted
- Categorization Logic