Merchandising to Omnichannel Services

The following services are included in this functional area:

REST Endpoint for Omni channel/Diff Group

Endpoint

MerchIntegrations/services/foundation/omnichannel/diff/group

Functional Area

Items - Item Foundation

Business Overview

This service publishes differentiator groups to the Omnichannel application and can also be consumed by downstream consuming systems. Functionally, the source view uses the differentiator-group header-plus-detail relationship, so only differentiator groups that currently have detail rows are published.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: DIFF_GROUP_HEAD, DIFF_GROUP_DETAIL

Additional business tables: DIFF_TYPE

JSON cache table: MERCHAPI_DIFF_GROUP

JSON generation view: V_MERCHAPI_DIFF_GROUP_JSON

The cache is refreshed from V_MERCHAPI_DIFF_GROUP_JSON, which builds the payload from DIFF_GROUP_HEAD, DIFF_TYPE, and DIFF_GROUP_DETAIL.

The view uses the header-plus-detail relationship, so only differentiator groups that currently have detail rows are published.

When the omnichannel dimension-type API is enabled, the same diff-group processing flow also repopulates the child dimension-type cache for impacted items.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild pull published rows from V_MERCHAPI_DIFF_GROUP_JSON. No additional filter criteria were identified beyond the cache-build logic.

Rebuild marks cache rows deleted when the group no longer exists in V_MERCHAPI_DIFF_GROUP_JSON.

ICL (Integration Change Log) table: ICL_RMS_DIFF_GROUP (ICL consumer name = MERCHAPI)

Delta processing is driven by ICL_RMS_DIFF_GROUP.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_DIFF_GROUP

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_DIFF_GROUP_ADHOC_PROCESS -> MERCHAPI_OMNI_DIFF_GROUP_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/diff/group

Special handling

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/diff/group

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-2 PageResultsItemsVMerchapiDiffGrp - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-3 VMerchapiDiffGrp - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for Diff group.

diffgroupid

No

String (10)

This column contains the Diff group ID.

diffgroupdesc

No

String (120)

This column contains the Diff group's description.

difftypeid

No

String (6)

This column contains the Diff type ID.

diffid

No

String (10)

This column contains the Diff ID.

Table 5-4 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"diffgroupid": "BASIC CLRS",
"diffgroupdesc": "Basic Color Pallet",
"difftypeid": "C",
"diffid": "GREEN"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "diffgroupid": "1177",
      "diffgroupdesc": "EIT_Diff_Group_1",
      "difftypeid": "CF",
      "diffid": "4280"
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/diff/group?before=2021-05-06T16%3A12%3A02.551757%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http:// <hostname>/MerchIntegrations/services/foundation/omnichannel/diff/group?before=2021-05-06T16%3A12%3A02.551757%2B08%3A00&limit=1&offsetkey=1177%2C4280&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
} "

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCH_BATCH_PARAM

Yes

No No No
ICL_RMS_DIFF_GROUP Yes Yes Yes Yes
MERCHAPI_DIFF_GROUP Yes Yes Yes Yes
V_MERCHAPI_DIFF_GROUP Yes No No No
V_MERCHAPI_DIFF_GROUP_JSON Yes No No No
V_MERCHAPI_ITEM_JSON Yes No No No
MERCHAPI_ITEM_DIFF_TYPE Yes Yes Yes Yes

REST Endpoint for Omni channel/diff Ids

Endpoint

MerchIntegrations/services/foundation/omnichannel/diff

Functional Area

Items - Item Foundation

Business Overview

This service publishes differentiator IDs to the Omnichannel application and can also be consumed by downstream consuming systems. Functionally, it publishes the current differentiator master data only while the differentiator still resolves to a valid differentiator type.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: DIFF_IDS, DIFF_TYPE

Additional business tables: none

JSON cache table: MERCHAPI_DIFF_IDS

JSON generation view: V_MERCHAPI_DIFF_IDS_JSON

The cache is refreshed from V_MERCHAPI_DIFF_IDS_JSON, which joins DIFF_IDS to DIFF_TYPE so the payload includes both the differentiator and its type information.

Functionally, the published set is the current differentiator master data that still resolves to a valid differentiator type.

When the omnichannel dimension-type or dimension-value APIs are enabled, the same diff-ID processing flow also repopulates those child caches for impacted items.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild pull published rows from V_MERCHAPI_DIFF_IDS_JSON. No additional filter criteria were identified beyond the cache-build logic.

Rebuild marks cache rows deleted when the differentiator no longer exists in V_MERCHAPI_DIFF_IDS_JSON.

ICL (Integration Change Log) table: ICL_RMS_DIFF_IDS, ICL_RMS_DIFF_TYPE (ICL consumer name = MERCHAPI)

ICL entries are created using triggers on DIFF_IDS, DIFF_TYPE.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_DIFF_IDS

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_DIFF_IDS_ADHOC_PROCESS -> MERCHAPI_OMNI_DIFF_IDS_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/diff

Special handling

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/diff

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-5 PageResultsItemsVMerchapiDiffIds - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-6 VMerchapiDiffIds - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for Diff.

diffid

No

String (10)

This column contains the Diff ID.

diffdesc

No

String (120)

This column contains the Diff description.

difftype

No

String (6)

This column contains the Diff type.

difftypedesc

No

String (120)

This column contains the Diff type description.

Table 5-7 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"diffid": "1930",
"diffdesc": "Green",
"difftype": "C",
"difftypedesc": "Color"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "diffid": "1005",
      "diffdesc": "EIT_Diff_ID : Black",
      "difftype": "CF",
      "difftypedesc": "Cereal Flavour"
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/diff?before=2021-05-05T16%3A18%3A57.100893%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http:// <hostname> /MerchIntegrations/services/foundation/omnichannel/diff?before=2021-05-05T16%3A18%3A57.100893%2B08%3A00&limit=1&offsetkey=1005&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}
"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST

Yes

No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_DIFF_IDS Yes Yes Yes Yes
ICL_RMS_DIFF_TYPE Yes Yes Yes Yes
DIFF_IDS Yes No No No
MERCHAPI_DIFF_IDS Yes Yes Yes Yes
V_MERCHAPI_DIFF_IDS_JSON Yes No No No

V_MERCHAPI_DIFF_IDS

V_MERCHAPI_ITEM_JSON

MERCHAPI_ITEM_DIFF_TYPE

MERCHAPI_ITEM_DIFF_VALUE

Yes

Yes

Yes

Yes

No

No

Yes

Yes

No

No

Yes

Yes

No

No

Yes

Yes

REST Endpoint for Omni channel/Inventory/Store details

Endpoint

MerchIntegrations/services/inventory/omnichannel/inventory/store

Functional Area

Inventory

Business Overview

This service publishes store available inventory to the Omnichannel application and can also be consumed by downstream consuming systems. It includes the store availability position for active, transaction-level inventory items at stockholding stores that are enabled for customer orders, limited to sellable non-pack store rows. The response exposes stock on hand together with the derived available quantity after subtracting reserved and other non-available inventory buckets so consuming systems receive the store availability position used for fulfillment.

The underlying technical component for this service is same as '/inventory/available'. Refer to the API documentation for '/inventory/available' for more details.

Service Type

GET

ReST URL

MerchIntegrations/services/inventory/omnichannel/inventory/store

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level. Allowed value is 'STORE'. If not defined, fetches details for all stores.

nodeid

No

String (10)

Node Id. Should be a valid store number.

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-8 PageResultsItemsStoreAvailable - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-9 StoreAvailable - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

This field contains the action for Store Inventory.

item

No

String (25)

This field contains the unique alphanumeric value that identifies the item. This will be an approved sellable transaction-level item.

location

No

Number(10,0)

This field contains the numeric identifier of the location in which the item is to be found.

loctype

No

String (1)

This field contains the type of location in the location field. Valid values are S (store).

availablequantity

No

Number(12,4)

This field represents the available inventory of an item in a particular location.

stockonhand

No

Number(12,4)

This field contains current stock on hand for the item.

standarduom

No

String (4)

This field contains the unit of measure in which stock of the item is tracked at a corporate level.

Table 5-10 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": null,
"item": "100100092",
"location": 1521,
"loctype": "S",
"availablequantity": 10,
"stockonhand": 12,
"standarduom": "EA"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined, then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
    "items": [
        {
            "action": "INSERT",
            "item": "100000286",
            "location": "1341",
            "loctype": "S",
            "availablequantity": 100,
            "stockonhand": 100,
            "standarduom": "EA"
        }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/inventory/omnichannel/inventory/store?before=2021-05-13T18%3A28%3A10.129377%2B05%3A30&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/inventory/omnichannel/inventory/store?before=2021-05-13T18%3A28%3A10.129377%2B05%3A30&limit=1&offsetkey=1341%2C100000286&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
ITEM_MASTER Yes No No No
ITEM_LOC_SOH Yes No No No
STORE Yes No No No
MERCHAPI_ITEM_LOC Yes No No No

REST Endpoint for Omni channel/Inventory/Warehouse details

Endpoint

MerchIntegrations/services/inventory/omnichannel/inventory/warehouse

Functional Area

Inventory

Business Overview

This service publishes warehouse available inventory to the Omnichannel application and can also be consumed by downstream consuming systems. It includes the warehouse availability position for active, transaction-level inventory items at stockholding warehouses that are enabled for customer orders, limited to sellable rows while still allowing warehouse pack items to publish. The response exposes stock on hand, the derived available quantity, and the physical warehouse linkage used for virtual-warehouse sourcing scenarios.

The underlying technical component for this service is same as '/inventory/available'. Refer to the API documentation for '/inventory/available' for more details.

Service Type

GET

ReST URL

MerchIntegrations/services/inventory/omnichannel/inventory/warehouse

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level. Allowed value is 'WAREHOUSE'. If not defined, fetches details for all warehouses.

nodeid

No

String (10)

Node Id. Should be a valid warehouse number if nodelevel is 'WAREHOUSE'.

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-11 PageResultsItemsOmnichannel_MerchapiItemLocSoh - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-12 Omnichannel_MerchapiItemLocSoh - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

This field contains the action for Warehouse Inventory.

item

No

String (25)

This field contains the unique alphanumeric value that identifies the item. This will be an approved sellable transaction-level item. For warehouse locations, pack items are also included.

location

No

Number(10,0)

This field contains the numeric identifier of the location in which the item is to be found.

loctype

No

String (1)

This field contains the type of location in the location field. Valid values are W (warehouse).

availablequantity

No

Number(12,4)

This field represents the available inventory of an item in a particular location.

stockonhand

No

Number(12,4)

This field contains current stock on hand for the item.

standarduom

No

String (4)

This field contains the unit of measure in which stock of the item is tracked at a corporate level.

physicalwarehouse

No

Number(10,0)

This field contains the physical warehouse for location type of warehouse.

Table 5-13 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": null,
"item": "100100092",
"location": 11001,
"loctype": "W",
"availablequantity": 10,
"stockonhand": 12,
"standarduom": "EA",
"physicalwarehouse": 11
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
    "items": [
        {
            "action": "INSERT",
            "item": "100000075",
            "location": "10001",
            "loctype": "W",
            "availablequantity": 0,
            "stockonhand": 0,
            "standarduom": "EA",
            "physicalwarehouse": 2
        }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/inventory/omnichannel/inventory/warehouse?before=2021-05-13T19%3A14%3A44.470363%2B05%3A30&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/inventory/omnichannel/inventory/warehouse?before=2021-05-13T19%3A14%3A44.470363%2B05%3A30&limit=1&offsetkey=10001%2C100000075&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
ITEM_MASTER Yes No No No
ITEM_LOC_SOH Yes No No No
WH Yes No No No
MERCHAPI_ITEM_LOC Yes No No No

REST Endpoint for Omni channel/ Item details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item

Functional Area

Items - Item Definition

Business Overview

This service publishes the item payload to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes item definitions from approved item records and enriches them with merchandise hierarchy, differentiator, brand, and selected code-detail attributes. When callers supply nodelevel and nodeid, the service returns the item in the context of the requested store or warehouse by joining to MERCHAPI_ITEM_LOC, which adds local item description, local short description, and UIN type for that node. The source view itself publishes only current ITEM_MASTER rows in status A, while refresh processing also selects status D rows so delete actions can still be represented in the cache.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: ITEM_MASTER

Additional business tables: DEPS, GROUPS, DIVISION, CLASS, SUBCLASS, DIFF_GROUP_HEAD, DIFF_IDS, BRAND, SYSTEM_OPTIONS, CODE_DETAIL

JSON cache table: MERCHAPI_ITEM_MASTER

JSON generation view: V_MERCHAPI_ITEM_JSON

The JSON view is driven from ITEM_MASTER and enriched from hierarchy tables, differentiator setup, brand, system options, and code-detail lookups.

The source view publishes only items whose current ITEM_MASTER.STATUS = 'A', while refresh processing selects ITEM_MASTER rows in status A or D so deletes can still be represented in the cache.

The REST layer also supports location-scoped item output by joining the item cache to MERCHAPI_ITEM_LOC when nodelevel and nodeid are supplied, which adds local item description and UIN context for the requested store or warehouse.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_ITEM_JSON and apply ITEM_MASTER.STATUS IN ('A','D').

ICL (Integration Change Log) table: ICL_RMS_ITEM_MASTER (ICL consumer name = MERCHAPI)

ICL entries are created using triggers on ITEM_MASTER, and the shared item delta flow also refreshes the related UPC and dimension projections maintained under the same process configuration.

Item Approval Handling

Approval of an item also results in publish of foundation/omnichannel/item/upc, foundation/omnichannel/item/dimensiontype, and foundation/omnichannel/item/dimensionvalue through the shared item flow. Approval also queues foundation/omnichannel/item/image, foundation/omnichannel/item/relateditem, foundation/item/location, foundation/item/vat, and foundation/taxLocationItem by writing the existing dependent source rows to those APIs' ICL tables when the item reaches approved status.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ITEM_DIM_UPC

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ITEM_DIM_UPC_ADHOC_PROCESS -> MERCHAPI_OMNI_ITEM_DIM_UPC_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/item

Special handling

Additional GET query parameters: nodelevel, nodeid.

Performance Considerations

For customers expecting high to very high publish volume from this API, sizing and operational tuning should be addressed early in the implementation lifecycle. Initial cache seeding, ongoing delta processing, full extracts, and incremental downloads or webhook-driven delivery have different runtime characteristics and should be evaluated separately. The available configuration for this service should therefore be reviewed and validated against the customer production data profile, including expected volume, message size, and access pattern, with the key performance-related configuration for this service covering the following:

Multi-threading and commit control

This service shares the API_OMNI_ITEM_DIM_UPC runtime with the omnichannel item, UPC, and dimension caches. Delta processing on that shared flow remains single-threaded, while initial seeding supports multi-threaded execution. Delta commit sizing is controlled through API_COMMIT_MAX_COUNTER, and initial-seeding thread and commit sizing are controlled through API_REFRESH_OVERRIDE_NO_OF_THREADS and API_REFRESH_OVERRIDE_COMMIT_MAX_COUNTER.

For initial seeding, thread and commit settings should be chosen together based on expected row volume, average message size, and the complex SQL query required to build the item message from ITEM_MASTER together with hierarchy, differentiator, brand, and lookup data. Common starting points for large-volume seeding are 8, 16, or 32 threads. Values of 48 or 64 threads should be considered only after testing and with awareness of competing workload in the environment. The delivered refresh override is currently 4 threads.

Commit sizing should be reviewed together with the thread setting. Typical values can range from about 1,000 rows, or even higher values such as 10,000. The delivered delta commit setting is currently 1000, and the delivered refresh override commit setting is currently 10000.

Dropping indexes and constraints during seeding

This option applies only to initial seeding, including truncate-and-load execution of the shared item cache. Even with refresh-override threading, larger parallel insert volumes can increase index maintenance overhead and slow the load.

To reduce that overhead, DROP_INDEX_ON_REFRESH can be enabled so indexes and constraints are dropped before seeding and rebuilt after the load completes.

This can improve data-load throughput, but the overall refresh plan should also account for the additional time needed for index rebuild after the seeding step finishes. GATHER_STATS_ON_REFRESH should normally remain enabled unless testing shows a need to change it.

REST fetch considerations

Item payloads can be comparatively large, so REST page size should be selected based on average message size so that the average response remains below about 10 MB per call. Common page-limit values are 1,000, 5,000, or 10,000 rows.

For full downloads, do not provide the since query parameter so the database can favor the primary-key access path. For delta downloads, use a small time window, typically a few minutes and at most a few hours, so the eligible row set on the LAST_UPDATE_DATETIME index remains small.

Wider delta windows, especially multi-day windows that can arise during outages or data recovery, generally do not perform well. For such scenarios, keeping BUILD_HISTOGRAM enabled allows the service to support recovery through smaller, more selective polling windows using the optimalBefore query parameter.

In this catch-up pattern, for requests up to 30 days in the past, the client provides optimalBefore and leaves before empty. The client then uses the returned before timestamp to continue polling incrementally until the backlog is cleared, and then resumes the normal short-window delta pattern. Hourly histogram processing groups LAST_UPDATE_DATETIME values into buckets of 10,000 rows in MERCHAPI_TIMESTAMP_HISTOGRAM using the shared HISTOGRAM_ROW_COUNT configuration.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level (STORE or WAREHOUSE)

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-14 PageResultsItemsVMerchApiItem - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-15 VMerchApiItem - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for item details.

item

No

String (25)

This field specifies the unique alphanumeric value that identifies the item.

itemparent

No

String (25)

This field specifies the alphanumeric value that uniquely identifies the item or group at the level above the item.

itemgrandparent

No

String (25)

This field specifies the alphanumeric value that uniquely identifies the item or group two levels above the item.

itemlevel

No

Number(1,0)

This field specifies the number indicating which of the three levels the item resides. The item level determines if the item stands alone or if it is part of a family of related items.

tranlevel

No

Number(1,0)

This field specifies the number indicating which of the three levels transactions occur for the item's group. The transaction level is the level at which the item's inventory is tracked in the system.

inventoryind

No

String (1)

This field determines if an item holds inventory or not for item transformations.

diff1level

No

String (5)

This field specifies diff1 level.

diff1type

No

String (6)

This field specifies diff1 type.

diff1

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

diff2level

No

String (5)

This field specifies diff2 level.

diff2type

No

String (6)

This field specifies diff2 type.

diff2

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

diff3level

No

String (5)

This field specifies diff3 level.

diff3type

No

String (6)

This field specifies diff3 type.

diff3

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

division

No

Number(4,0)

This field specifies the number which uniquely identifies the division of the company.

groupid

No

Number(4,0)

This field specifies the group in which the department exists.

dept

No

Number(4,0)

This field uniquely identifies the department.

class

No

Number(4,0)

This field uniquely identifies the class within the system.

uniqueclass

No

Number(10,0)

This field uniquely identifies the department/class combination.

subclass

No

Number(4,0)

This field uniquely identifies the subclass.

uniquesubclass

No

Number(10,0)

This field uniquely identifies the department/class/subclass combination.

description

No

String (250)

This field specifies the description of the item. For items that have parents, this description will default to the parent's description plus any differentiators.

shortdescription

No

String (120)

This field specifies the short description of the item.

brandname

No

String (30)

This field specifies the brand associated with an item.

merchandiseind

No

String (1)

This field indicates if the item is a merchandise item. Merchandise items are generally physical items that must be shipped or received and for which there is inventory. Non-merchandise items are often items which do not have inventory. Common examples include extra fees for service, extended warranties, alterations, or endlessly available items such as downloads, in-app purchases of bonus content, and subscriptions.

mfgrecretail

No

Number(20,4)

This field specifies the manufacturer's recommended retail price for the item. This field is stored in the primary currency.

orginalunitretail

No

Number(20,4)

This field specifies the retail price for the item.

catchweightind

No

String (1)

This field specifies whether the item should be weighed when it arrives at a location.

itemservicelevel

No

String (6)

This field specifies the value that restricts the type of shipment methods that RCOM can select for an item.

giftwrapind

No

String (1)

This field determines whether the location will support gift wrapping or not.

shipaloneind

No

String (1)

This field indicates if the item should be shipped to the customer in a separate package versus being grouped together in a box.

standarduom

No

String (4)

This field specifies the unit of measure in which stock of the item is tracked at a corporate level.

productclassification

No

String (6)

This field determines how to pack customer orders, such as to determine products that may not be able to be packaged together. Examples of classifications may include fragile, toxic, and heavy.

xdiff1desc

No

String (120)

This field specifies diff1 description.

xdiff2desc

No

String (120)

This field specifies diff2 description.

xdiff3desc

No

String (120)

This field specifies diff3 description.

itemnumbertype

No

String (6)

This field specifies what type the item is. Valid values for this field are in the code type UPCT on the code_head and code_detail tables.

itemlocation

No

String (10)

This field specifies if the service call was to fetch the enterprise view or a specific location. The value is either 'ent' or the node ID parameter.

localdescription

No

String (250)

This field specifies the local description of the item. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

localshortdescription

No

String (120)

This field specifies the local short description of the item. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

uintype

No

String (6)

This field specifies the unique identification number (UIN) type used to identify the instances of the item at the location. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

Table 5-16 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"item": "100100076",
"itemparent": null,
"itemgrandparent": null,
"itemlevel": 1,
"tranlevel": 1,
"inventoryind": "Y",
"diff1level": null,
"diff1type": null,
"diff1": null,
"diff2level": null,
"diff2type": null,
"diff2": null,
"diff3level": null,
"diff3type": null,
"diff3": null,
"division": 1,
"groupid": 1,
"dept": 3041,
"class": 1,
"uniqueclass": 1,
"subclass": 1,
"uniquesubclass": 1,
"description": "Regular Item 100100076",
"shortdescription": "100100076 Item",
"brandname": null,
"merchandiseind": "Y",
"mfgrecretail": 12.99,
"orginalunitretail": 12.99,
"catchweightind": "Y",
"itemservicelevel": null,
"giftwrapind": "Y",
"shipaloneind": "Y",
"standarduom": "EA",
"productclassification": null,
"xdiff1desc": null,
"xdiff2desc": null,
"xdiff3desc": null,
"itemnumbertype": "MANL",
"itemlocation": "ent",
"localdescription": "localItemDesc",
"localshortdescription": "localShortDesc",
"uintype": null
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON Input

 {
    "items": [
        {
            "item": "100000024",
            "action": "INSERT",
            "itemlocation": "ent",
            "itemparent": null,
            "itemgrandparent": null,
            "itemlevel": 1,
            "tranlevel": 3,
            "inventoryind": "Y",
            "diff1level": null,
            "diff1type": null,
            "diff1": null,
            "diff2level": null,
            "diff2type": null,
            "diff2": null,
            "diff3level": null,
            "diff3type": null,
            "diff3": null,
            "division": 1000,
            "groupid": 108,
            "dept": 1117,
            "class": 1,
            "uniqueclass": 51,
            "subclass": 1,
            "uniquesubclass": 432,
            "description": "Test Item 100000024 ",
            "shortdescription": "Test Item",
            "localdescription": null,
            "localshortdescription": null,
            "brandname": null,
            "merchandiseind": "Y",
            "uintype": null,
            "mfgrecretail": null,
            "orginalunitretail": 13.2,
            "catchweightind": "N",
            "itemservicelevel": null,
            "giftwrapind": "N",
            "shipaloneind": "N",
            "standarduom": "EA",
            "productclassification": "APP",
            "xdiff1desc": null,
            "xdiff2desc": null,
            "xdiff3desc": null,
            "itemnumbertype": "MANL" }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/item?before=2021-05-12T23%3A35%3A49.770127%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/item?before=2021-05-12T23%3A35%3A49.770127%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&offsetkey=100000024&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "next"
        }
    ]
}

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ITEM_MASTER Yes No No No
ICL_RMS_ITEM_MASTER Yes No Yes Yes
MERCHAPI_ITEM_MASTER Yes Yes Yes Yes
V_MERCHAPI_ITEM_MASTER Yes No No No
ICL_RMS_ITEM_IMAGE No Yes No No
ICL_RMS_RELATED_ITEM No Yes No No
ICL_RMS_ITEM_LOC No Yes No No
SYSTEM_OPTIONS Yes No No No

REST Endpoint for Omni channel/ Item UPC details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/upc

Functional Area

Items - Item Definition

Business Overview

This service publishes reference-item and UPC-style rows to the Omnichannel application and can also be consumed by downstream consuming systems. It uses the same underlying component as 'foundation/omnichannel/item'. Functionally, the enterprise query returns only below-transaction-level items whose parent item is present in the published item cache. When callers supply nodelevel and nodeid, the service further requires a matching MERCHAPI_ITEM_LOC row for that parent item at the requested store or warehouse, so the reference item is returned only when the parent is published for that node.

Refer to the documentation for 'foundation/omnichannel/item' for technical details and functional considerations.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/upc

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level (STORE or WAREHOUSE)

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-17 PageResultsItemsVMerchApiItemUPC - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-18 VMerchApiItemUPC - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for item details.

item

No

String (25)

This field specifies the unique alphanumeric value that identifies the item.

itemparent

No

String (25)

This field specifies the alphanumeric value that uniquely identifies the item or group at the level above the item.

itemgrandparent

No

String (25)

This field specifies the alphanumeric value that uniquely identifies the item or group two levels above the item.

itemlevel

No

Number(1,0)

This field specifies the number indicating which of the three levels the item resides. The item level determines if the item stands alone or if it is part of a family of related items.

tranlevel

No

Number(1,0)

This field specifies the number indicating which of the three levels transactions occur for the item's group. The transaction level is the level at which the item's inventory is tracked in the system.

inventoryind

No

String (1)

This field determines if an item holds inventory or not for item transformations.

diff1level

No

String (5)

This field specifies diff1 level.

diff1type

No

String (6)

This field specifies diff1 type.

diff1

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

diff2level

No

String (5)

This field specifies diff2 level.

diff2type

No

String (6)

This field specifies diff2 type.

diff2

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

diff3level

No

String (5)

This field specifies diff3 level.

diff3type

No

String (6)

This field specifies diff3 type.

diff3

No

String (10)

This field specifies the diff_group or diff_id that differentiates the current item from its item_parent. For an item that is a parent, this field may be either a group or value. For an item that is not a parent, this field may contain a value.

division

No

Number(4,0)

This field specifies the number which uniquely identifies the division of the company.

groupid

No

Number(4,0)

This field specifies the group in which the department exists.

dept

No

Number(4,0)

This field uniquely identifies the department.

class

No

Number(4,0)

This field uniquely identifies the class within the system.

uniqueclass

No

Number(10,0)

This field uniquely identifies the department/class combination.

subclass

No

Number(4,0)

This field uniquely identifies the subclass.

uniquesubclass

No

Number(10,0)

This field uniquely identifies the department/class/subclass combination.

description

No

String (250)

This field specifies the description of the item. For items that have parents, this description will default to the parent's description plus any differentiators.

shortdescription

No

String (120)

This field specifies the short description of the item.

brandname

No

String (30)

This field specifies the brand associated with an item.

merchandiseind

No

String (1)

This field indicates if the item is a merchandise item. Merchandise items are generally physical items that must be shipped or received and for which there is inventory. Non-merchandise items are often items which do not have inventory. Common examples include extra fees for service, extended warranties, alterations, or endlessly available items such as downloads, in-app purchases of bonus content, and subscriptions.

mfgrecretail

No

Number(20,4)

This field specifies the manufacturer's recommended retail price for the item. This field is stored in the primary currency.

orginalunitretail

No

Number(20,4)

This field specifies the retail price for the item.

catchweightind

No

String (1)

This field specifies whether the item should be weighed when it arrives at a location.

itemservicelevel

No

String (6)

This field specifies the value that restricts the type of shipment methods that RCOM can select for an item.

giftwrapind

No

String (1)

This field determines whether the location will support gift wrapping or not.

shipaloneind

No

String (1)

This field indicates if the item should be shipped to the customer in a separate package versus being grouped together in a box.

standarduom

No

String (4)

This field specifies the unit of measure in which stock of the item is tracked at a corporate level.

productclassification

No

String (6)

This field determines how to pack customer orders, such as to determine products that may not be able to be packaged together. Examples of classifications may include fragile, toxic, and heavy.

xdiff1desc

No

String (120)

This field specifies diff1 description.

xdiff2desc

No

String (120)

This field specifies diff2 description.

xdiff3desc

No

String (120)

This field specifies diff3 description.

itemnumbertype

No

String (6)

This field specifies what type the item is. Valid values for this field are in the code type UPCT on the code_head and code_detail tables.

itemlocation

No

String (10)

This field specifies if the service call was to fetch the enterprise view or a specific location. The value is either 'ent' or the node ID parameter.

localdescription

No

String (250)

This field specifies the local description of the item. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

localshortdescription

No

String (120)

This field specifies the local short description of the item. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

uintype

No

String (6)

This field specifies the unique identification number (UIN) type used to identify the instances of the item at the location. This is applicable when the service query parameter of node level and node ID is used to fetch data for a specific location.

Table 5-19 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"item": "100100076",
"itemparent": null,
"itemgrandparent": null,
"itemlevel": 1,
"tranlevel": 1,
"inventoryind": "Y",
"diff1level": null,
"diff1type": null,
"diff1": null,
"diff2level": null,
"diff2type": null,
"diff2": null,
"diff3level": null,
"diff3type": null,
"diff3": null,
"division": 1,
"groupid": 1,
"dept": 3041,
"class": 1,
"uniqueclass": 1,
"subclass": 1,
"uniquesubclass": 1,
"description": "Regular Item 100100076",
"shortdescription": "100100076 Item",
"brandname": null,
"merchandiseind": "Y",
"mfgrecretail": 12.99,
"orginalunitretail": 12.99,
"catchweightind": "Y",
"itemservicelevel": null,
"giftwrapind": "Y",
"shipaloneind": "Y",
"standarduom": "EA",
"productclassification": null,
"xdiff1desc": null,
"xdiff2desc": null,
"xdiff3desc": null,
"itemnumbertype": "MANL",
"itemlocation": "ent",
"localdescription": "localItemDesc",
"localshortdescription": "localShortDesc",
"uintype": null
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
    "items": [
        {
            "item": "101100001",
            "action": "INSERT",
            "itemlocation": "ent",
            "itemparent": "100250007",
            "itemgrandparent": null,
            "itemlevel": 2,
            "tranlevel": 1,
            "inventoryind": "Y",
            "diff1level": null,
            "diff1type": null,
            "diff1": null,
            "diff2level": null,
            "diff2type": null,
            "diff2": null,
            "diff3level": null,
            "diff3type": null,
            "diff3": null,
            "division": 3000,
            "groupid": 304,
            "dept": 3041,
            "class": 1,
            "uniqueclass": 139,
            "subclass": 1,
            "uniquesubclass": 17,
            "description": "Something - MK",
            "shortdescription": "Something",
            "localdescription": null,
            "merchandiseind": "Y",
            "uintype": null,
            "mfgrecretail": null,
            "orginalunitretail": null,
            "catchweightind": "N",
            "itemservicelevel": null,
            "giftwrapind": "N",
            "shipaloneind": "N",
            "standarduom": "EA",
            "productclassification": null,
            "xdiff1desc": null,
            "xdiff2desc": null,
            "xdiff3desc": null,
            "itemnumbertype": "UPC-A"  
       }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/item/upc?before=2021-05-13T16%3A38%3A07.284763%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/item/upc?before=2021-05-13T16%3A38%3A07.284763%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&offsetkey=101100001&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ITEM_MASTER Yes No No No
ICL_RMS_ITEM_MASTER Yes No Yes Yes
MERCHAPI_ITEM_MASTER Yes Yes Yes Yes
V_MERCHAPI_ITEM_MASTER Yes No No No
ICL_RMS_ITEM_IMAGE No Yes No No
ICL_RMS_RELATED_ITEM No Yes No No
ICL_RMS_ITEM_LOC No Yes No No
SYSTEM_OPTIONS Yes No No No

REST Endpoint for Omni channel/ Merchandise Hierarchy details

Endpoint

MerchIntegrations/services/foundation/omnichannel/merchhier

Functional Area

Merchandise Hierarchy

Business Overview

This service retrieves the merchandise hierarchy relationships. No details about each hierarchy value are provided, only the hierarchy tree relationships are returned. In order to fetch new updates pass the parameter of since/before timestamp.

This service publishes the merchandise hierarchy to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes the current company-through-subclass hierarchy tree with parent-child links, hierarchy display identifiers, and buyer assignments where they are maintained in Merchandising. This service does not provide details about individual hierarchy value, only the hierarchy tree relationships are returned.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: DIVISION, GROUPS, DEPS, CLASS, SUBCLASS

Additional business tables: COMPHEAD, CODE_DETAIL

JSON cache table: MERCHAPI_MERCH_HIER

JSON generation view: V_MERCHAPI_MERCH_HIER_JSON

The source view builds the company-through-subclass hierarchy from COMPHEAD, DIVISION, GROUPS, DEPS, CLASS, SUBCLASS, and CODE_DETAIL, and it uses CODE_DETAIL (CODE_TYPE = 'MHSO') to label and sort the hierarchy levels.

Functionally, the service publishes the current hierarchy tree with parent-child links, display identifiers, and buyer assignments where they are maintained, and it seeds the company row when it is missing so the tree always has a company root.

The cache is refreshed from that current-state hierarchy source so the published tree stays aligned with the latest company-through-subclass structure in Merchandising.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild pull published rows from V_MERCHAPI_MERCH_HIER_JSON. No additional filter criteria were identified beyond the cache-build logic.

Rebuild marks cache rows deleted when the hierarchy row no longer exists in V_MERCHAPI_MERCH_HIER_JSON.

ICL (Integration Change Log) table: ICL_RMS_DIVISION, ICL_RMS_GROUPS, ICL_RMS_DEPS, ICL_RMS_CLASS, ICL_RMS_SUBCLASS (ICL consumer name = MERCHAPI)

Delta processing is driven by ICL_RMS_DIVISION, ICL_RMS_GROUPS, ICL_RMS_DEPS, ICL_RMS_CLASS, and ICL_RMS_SUBCLASS.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_MERCH_HIER

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_MERCH_HIER_ADHOC_PROCESS -> MERCHAPI_OMNI_MERCH_HIER_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/merchhier

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/merchhier

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-20 PageResultsItemsVMerchapiMerchHier - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-21 VMerchapiMerchHier - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for merchandising hierarchy.

nodeid

No

Number(10,0)

This column contains the Merchandising Hierarchy ID.

hierarchylevel

No

String (10)

This column contains the Merchandising Hierarchy Level.

nodename

No

String (120)

This column contains the name of the Merchandising Hierarchy.

parentlevel

No

String (10)

This column contains the Parent Merchandising Hierarchy Level.

parentnodeid

No

Number(10,0)

This column contains the Parent Merchandising Hierarchy ID.

merchdisplayid

No

Number(10,0)

This column contains the merchandising hierarchy display ID.

buyer

No

Number(4,0)

This column contains the number of the buyer associated with the merchandising hierarchy.

Table 5-22 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"nodeid": 1,
"hierarchylevel": "COMPANY",
"nodename": "Retailers Ltd",
"parentlevel": "COMPANY",
"parentnodeid": 1,
"merchdisplayid": 1,
"buyer": 1002
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
    "items": [
        {
            "action": "UPDATE",
            "nodeid": 1,
            "hierarchylevel": "COMPANY",
            "nodename": "Retailers Ltd",
            "parentlevel": null,
            "parentnodeid": null,
            "merchdisplayid": 1,
            "buyer": null
}
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/merchhier?before=2021-05-12T20%3A43%3A04.296066%2B05%3A30&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/location/warehouse?before=2021-05-12T20%3A15%3A13.253929%2B05%3A30&limit=1&offsetkey=2%2Cvirtual&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_DIVISION Yes No Yes Yes
ICL_RMS_GROUPS Yes No Yes Yes
ICL_RMS_DEPS Yes No Yes Yes
ICL_RMS_CLASS Yes No Yes Yes
ICL_RMS_SUBCLASS Yes No Yes Yes
COMPHEAD Yes No No No
CODE_DETAIL Yes No No No
MERCHAPI_MERCH_HIER Yes Yes Yes Yes
V_ MERCHAPI_MERCH_HIER Yes No No No
V_ MERCHAPI_MERCH_HIER _JSON Yes No No No
SYSTEM_OPTIONS Yes No No No

REST Endpoint for Omni channel/Org hier descendant’s details

Endpoint

MerchIntegrations/services/foundation/omnichannel/orghier/descendant

Functional Area

Organizational Hierarchy

Business Overview

This service retrieves organization hierarchy relationships for the levels below the provided hierarchy value (including warehouses). For example, if a region is sent in as the input information, the service will return all of the districts and stores in the provided region. No details about each hierarchy value are provided, only the hierarchy tree relationships are returned. In order to fetch new updates pass the parameter of since/before timestamp.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: CHAIN, AREA, REGION, DISTRICT, STORE, WH, ADDR

Additional business tables: COMPHEAD, CODE_DETAIL

JSON cache table: MERCHAPI_ORG_HIER (shared with foundation/omnichannel/orghier)

JSON generation view: V_ORG_HIER_FULL_VW (shared cache source used by foundation/omnichannel/orghier)

This service is the descendant projection over the same organizational hierarchy cache table, MERCHAPI_ORG_HIER.

It uses the same underlying hierarchy data built from V_ORG_HIER_FULL_VW, but functionally it returns the current non-deleted descendants beneath a supplied organization node rather than the broader change-tracked relationship feed.

Because it is a child merchapi of foundation/omnichannel/orghier, it does not have its own separate cache-population process.

Initial Seeding and post enablement rebuild/repair

This service relies on the shared initial-seeding and rebuild flow used by foundation/omnichannel/orghier.

That shared rebuild uses the all-level org-hierarchy refresh path.

ICL (Integration Change Log) table: ICL_RMS_CHAIN, ICL_RMS_AREA, ICL_RMS_REGION, ICL_RMS_DISTRICT, ICL_RMS_STORE, ICL_RMS_WH, ICL_RMS_ADDR (ICL consumer name = MERCHAPI)

This child service relies on the shared org-hierarchy delta flow, with address deltas scoped to modules WH, ST, and WFST.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ORG_HIER_STR_WH

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ORG_HIER_STR_WH_ADHOC_PROCESS -> MERCHAPI_OMNI_ORG_HIER_STR_WH_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/orghier/descendant

Special handling

Additional GET query parameters: nodelevel, nodeid.

Supported nodelevel values for this service are COMPANY, CHAIN, AREA, REGION, DISTRICT.

Foundation/omnichannel/orghier/descendant is a child merchapi of foundation/omnichannel/orghier.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/orghier/descendant

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-23 PageResultsItemsVMerchApiOrgHier - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-24 VMerchApiOrgHier - Object. See list of elements for detail

Element Name Required Data Type Description

hierarchylevel

No

String (10)

This field specifies Organization Hierarchy Level.

hierarchynodeid

No

Number(10,0)

This field specifies Organization Hierarchy ID.

hierarchynodename

No

String (120)

This field specifies the name of the Organization Hierarchy ID.

parentlevel

No

String (10)

This field specifies the Parent Organization Hierarchy Level.

parentid

No

Number(10,0)

This field specifies Parent Organization Hierarchy ID.

levelorder

No

Number(4,0)

This field specifies the hierarchy level order.

Table 5-25 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"hierarchylevel": "CHAIN",
"hierarchynodeid": 100,
"hierarchynodename": null,
"parentlevel": null,
"parentid": 1,
"levelorder": 10
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "hierarchylevel": "COMPANY",
      "hierarchynodeid": 9118,
      "hierarchynodename": "Retailers Ltd",
      "parentlevel": null,
      "parentid": null,
      "levelorder": 1
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/orghier/descendant?nodelevel=COMPANY&limit=1&nodeid=9118",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/orghier/descendant?nodelevel=COMPANY&limit=1&nodeid=9118&offsetkey=1%2C9118",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
V_ICL_RMS_ORGHIER Yes No No No
ICL_RMS_CHAIN Yes Yes Yes Yes
ICL_RMS_AREA Yes Yes Yes Yes
ICL_RMS_REGION Yes Yes Yes Yes
ICL_RMS_DISTRICT Yes Yes Yes Yes
ITEM_LOC Yes No No No
MERCHAPI_ORG_HIER Yes Yes Yes Yes
V_ORG_HIER_FULL_VW Yes No No No
V_MERCHAPI_ORG_HIER Yes No No No

REST Endpoint for Omni channel/Org hierarchy details

Endpoint

MerchIntegrations/services/foundation/omnichannel/orghier

Functional Area

Organizational Hierarchy

Business Overview

This service publishes organizational hierarchy relationships to downstream consuming systems. It expands the company, chain, area, region, district, store, and warehouse node set into hierarchy relationship rows so consuming systems can retrieve descendants beneath a selected parent node while each row still carries its immediate parent information.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: CHAIN, AREA, REGION, DISTRICT, STORE, WH, ADDR

Additional business tables: COMPHEAD, CODE_DETAIL

JSON cache table: MERCHAPI_ORG_HIER

JSON generation view: not applicable; source hierarchy view is V_ORG_HIER_FULL_VW

That source view builds company, chain, area, region, district, store, and warehouse nodes from COMPHEAD, CHAIN, AREA, REGION, DISTRICT, STORE, WH, and CODE_DETAIL.

Functionally, V_MERCHAPI_ORG_HIER expands those nodes into ancestor-to-descendant relationship rows, so consumers can retrieve the hierarchy beneath a selected parent node while each row still carries its immediate parent information.

The shared package processes higher organization levels directly and then invokes the retail-store and warehouse loaders so the broader org-hierarchy, store, and warehouse caches stay aligned.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild pull published rows from V_ORG_HIER_FULL_VW. No additional filter criteria were identified beyond the cache-build logic.

Foundation/omnichannel/orghier rebuilds all hierarchy levels.

ICL (Integration Change Log) table: ICL_RMS_CHAIN, ICL_RMS_AREA, ICL_RMS_REGION, ICL_RMS_DISTRICT, ICL_RMS_STORE, ICL_RMS_WH, ICL_RMS_ADDR (ICL consumer name = MERCHAPI)

Delta processing uses ICL_RMS_CHAIN, ICL_RMS_AREA, ICL_RMS_REGION, ICL_RMS_DISTRICT, ICL_RMS_STORE, ICL_RMS_WH, and ICL_RMS_ADDR, with address deltas scoped to modules WH, ST, and WFST.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ORG_HIER_STR_WH

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ORG_HIER_STR_WH_ADHOC_PROCESS -> MERCHAPI_OMNI_ORG_HIER_STR_WH_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/orghier

Special handling

Additional GET query parameters: nodelevel, nodeid.

Supported nodelevel values for this service are COMPANY, CHAIN, AREA, REGION, DISTRICT, STORE.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/orghier

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-26 PageResultsItemsVMerchApiOrgHierDetail - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-27 VMerchApiOrgHierDetail - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for organization hierarchy detail.

hierarchylevel

No

String (10)

This field specifies Organization Hierarchy Level.

hierarchynodeid

No

Number(10,0)

This field specifies Organization Hierarchy ID.

hierarchynodename

No

String (120)

This field specifies the name of the Organization Hierarchy ID.

parentlevel

No

String (10)

This field specifies the Parent Organization Hierarchy Level.

parentid

No

Number(10,0)

This field specifies Parent Organization Hierarchy ID.

mgrname

No

String (120)

This field specifies the name of the store manager.

stockholding

No

String (1)

This field specifies whether the store can hold stock. This field holds value only for stores.

integratedpos

No

String (1)

This field indicates whether or not the POS system at the store is integrated. This field holds value only for stores.

Table 5-28 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": null,
"hierarchylevel": "CHAIN",
"hierarchynodeid": 100,
"hierarchynodename": null,
"parentlevel": null,
"parentid": 1,
"mgrname": null,
"stockholding": null,
"integratedpos": null
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than limit defined then hasMore will be set to true else false.
Limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

Links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
      "action": "UPDATE",
      "hierarchylevel": "AREA",
      "hierarchynodeid": 1212,
      "hierarchynodename": "Area 12121",
      "parentlevel": "CHAIN",
      "parentid": 1212,
      "mgrname": "V",
      "stockholding": null,
      "integratedpos": null
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/orghier?before=2021-05-11T15%3A20%3A25.711306%2B00%3A00&nodelevel=COMPANY&limit=1&nodeid=9118&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/orghier?before=2021-05-11T15%3A20%3A25.711306%2B00%3A00&nodelevel=COMPANY&limit=1&nodeid=9118&offsetkey=AREA%2C1212&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
V_ICL_RMS_ORGHIER Yes No No No
ICL_RMS_CHAIN Yes Yes Yes Yes
ICL_RMS_AREA Yes Yes Yes Yes
ICL_RMS_REGION Yes Yes Yes Yes
ICL_RMS_DISTRICT Yes Yes Yes Yes
ITEM_LOC Yes No No No
MERCHAPI_ORG_HIER Yes Yes Yes Yes
V_ORG_HIER_FULL_VW Yes No No No
V_MERCHAPI_ORG_HIER Yes No No No

REST Endpoint for Omni channel/refresh Date

Endpoint

MerchIntegrations/services /omnichannel/refreshdate

Functional Area

Administration - Operations

Business Overview

This is a metadata publish service that exposes the list of enabled integration services together with cache-refresh and latest-change information for each service. It is intended as a lightweight pre-check for clients that call multiple integration APIs as part of the same batch or polling process. By calling this service first, a client can identify which APIs have had a real data change and avoid redundant requests to services whose published data has not changed.

Cache refresh timestamp: The timestamp when the JSON cache for a service was initially loaded or most recently fully refreshed. This helps determine when a cache was last rebuilt and whether a downstream consumer should perform a bulk reload or continue with delta retrieval. This information is sourced from MERCHAPI_CONFIG.

Latest data update timestamp: The most recent data-update timestamp for the service. This helps reduce unnecessary calls across multiple integration services by allowing a client to identify, in a single request, which services have had recent data changes. This information is derived by querying the applicable underlying table for each individual service.

Implementation usage: Where a client batch process calls multiple publish APIs in sequence, this service can be used as a gating step to determine which APIs need to be called in that cycle and which can be skipped because no new published data is available.

XStore usage: XStore relies extensively on this service to keep integration calls from XOCS to MFCS relevant by helping avoid unnecessary requests to APIs whose published data has not changed.

Performance note: This service relies on the LAST_UPDATE_DATETIME index being available on each JSON cache table. If any API is running initial seeding with the drop-index option enabled and the index rebuild has not yet completed, performance of this service for that table can degrade.

Service Type

GET

ReST URL

MerchIntegrations/services/omnichannel/refreshdate

Input Parameters

Parameter Name Required Data Type Description

entitytype

No

String

entity type

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-29 PageResultsItemsVMerchApiRefreshDate - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-30 VMerchApiRefreshDate - Object. See list of elements for detail

Element Name Required Data Type Description

entity

No

String (100)

This field gives the service name which is defined in merchapi_config table.

refreshdate

No

dateTime

This field gives the refresh date which is the time when the initial loading of the service completes and the API is enabled in merchapi_config table. This field can be used to identify if a bulk process (api enablement or refresh with the option truncate and load) was done for the api. A change of refresh date indicates that the entire dataset is available for subscribe for the publish API. Note: XOCS heavily relies on this this field during every 30 min polling request to identify if the fetch for an API will be delta increment or a full download for an API and accordingly handle the call differently.

latestupdatetime

No

dateTime

This field provides the most recent update timestamp for the dataset applicable for the API. The purpose of this field is to provide additional visibility of the data changes across all the API in a single place to have the client calling the differnet publish API at regular frequency to optimize the number of service calls.

Table 5-31 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"entity": "ItemImage",
"refreshdate": "2001-12-31T23:59:59.000Z",
"latestupdatetime": "2001-12-31T23:59:59.000Z"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
  "items": [
    {
      "entity": "COFutureAvail",
      "refreshdate": "2020-12-17T10:03:12.324664000-06:00",
     "latestupdatetime": "2022-04-25T11:26:01.714875000+00:00"
    }
  ],
  "hasMore": false,
  "limit": 10000,
  "count": 15,
  "links": [
    {
      "href": "http://<hostname> /MerchIntegrations/services/omnichannel/refreshdate?before=2021-05-06T21%3A00%3A34.238393%2B08%3A00&limit=10000&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    }
  ]
}

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
V_CACHE_REFRESH_DATE Yes No No No

REST Endpoint for Omni channel/Warehouse details

Endpoint

MerchIntegrations/services/foundation/omnichannel/location/warehouse

Functional Area

Organizational Hierarchy - Warehouses

Business Overview

This service publishes warehouse details to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes warehouse records with the primary warehouse address maintained in Merchandising and derives the published warehouse type as physical or virtual from the warehouse relationship data.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: WH, ADDR

Additional business tables: CHANNELS, ADD_TYPE_MODULE, V_ADD_TYPE_TL, STATE, COUNTRY

JSON cache table: MERCHAPI_WH

JSON generation view: V_MERCHAPI_WH_JSON

The JSON view is built from WH, CHANNELS, ADDR, ADD_TYPE_MODULE, STATE, COUNTRY, and V_ADD_TYPE_TL.

Functionally, it publishes warehouse records with their primary warehouse address (ADDR_TYPE = 1 and PRIMARY_ADDR_IND = 'Y') and derives the published warehouse type as physical or virtual from the PHYSICAL_WH relationship.

The warehouse cache shares its loader with the omnichannel organization hierarchy and retail-store caches through the shared API_OMNI_ORG_HIER_STR_WH process.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_WH_JSON and publish warehouse records with the primary warehouse address where ADDR_TYPE = 1 and PRIMARY_ADDR_IND = 'Y'.

ICL (Integration Change Log) table: ICL_RMS_WH, ICL_RMS_ADDR (ICL consumer name = MERCHAPI)

Warehouse changes come from ICL_RMS_WH, and address-only changes come from ICL_RMS_ADDR for module WH.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ORG_HIER_STR_WH

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ORG_HIER_STR_WH_ADHOC_PROCESS -> MERCHAPI_OMNI_ORG_HIER_STR_WH_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/location/warehouse

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/location/warehouse

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-32 PageResultsItemsVMerchApiWarehouse - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-33 VMerchApiWarehouse - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for warehouse details.

warehouseid

No

Number(10,0)

This field uniquely identifies the warehouse.

type

No

String (8)

This field determines which warehouses are physical and which are virtual.

warehousename

No

String (150)

This field specifies the name of the warehouse which, along with the warehouse number, identifies the warehouse.

whnamesecondary

No

String (150)

This field specifies the secondary name of the warehouse.

contactname

No

String (120)

This field specifies the name of the contact at this location.

phonenumber

No

String (20)

This field specifies the phone number of the contact person at this location.

faxnumber

No

String (20)

This field specifies the fax number of the contact person at this location.

email

No

String (100)

This field specifies the email of the contact person at this location.

currencycode

No

String (3)

This field specifies the currency code under which the warehouse operates.

physicalwh

No

Number(10,0)

This field specifies the number of the physical warehouse that is assigned to the virtual warehouse.

vatregion

No

Number(4,0)

This field specifies the unique identifying number for the VAT region where this warehouse is located.

orghiertype

No

Number(4,0)

This field specifies the organization type that will be used for reporting purposes for the warehouse. The type comes from the organizational hierarchy.

orghiervalue

No

Number(10,0)

This field specifies the code associated with the specific organizational hierarchy type.

orgentitytype

No

String (1)

This field specifies if the warehouse is a legal entity (importer, exporter) or a regular warehouse.

channelid

No

Number(4,0)

This field specifies the channel for which the virtual warehouse will be assigned.

channelname

No

String (120)

This field specifies the name of the channel for which the virtual warehouse will be assigned.

address1

No

String (240)

This field specifies the first line of the address.

address2

No

String (240)

This field specifies the second line of the address.

address3

No

String (240)

This field specifies the third line of the address.

city

No

String (120)

This field specifies the name of the city that is associated with the address.

state

No

String (3)

This field specifies the state abbreviation for the address.

country

No

String (3)

This field specifies the country where the address exists.

postalcode

No

String (30)

This field specifies the zip code for the address.

Table 5-34 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": null,
"warehouseid": 6000,
"type": "physical",
"warehousename": null,
"whnamesecondary": null,
"contactname": "Laura Johnson",
"phonenumber": "1800800800",
"faxnumber": "617-897-0902",
"email": "someone@email.com",
"currencycode": "USD",
"physicalwh": 6000,
"vatregion": 1000,
"orghiertype": 50,
"orghiervalue": 1,
"orgentitytype": "R",
"channelid": 1,
"channelname": null,
"address1": "101 First Street",
"address2": "201 Second Street",
"address3": null,
"city": "Minneapolis",
"state": "MN",
"country": "US",
"postalcode": "55555-1234"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
    "items": [
        {
            "action": "INSERT",
            "warehouseid": 2,
            "type": "virtual",
            "warehousename": "N. America Central",
            "whnamesecondary": null,
            "contactname": "Sue Glass",
            "phonenumber": "3122222473",
            "faxnumber": null,
            "email": null,
            "currencycode": "USD",
            "physicalwh": 2,
            "vatregion": 1000,
            "orghiertype": null,
            "orghiervalue": null,
            "orgentitytype": "R",
            "channelid": null,
            "channelname": null,
            "address1": "123 Street",
            "address2": "Anytown",
            "address3": null,
            "city": "Anycity",
            "state": "MN",
            "country": "US",
            "postalcode": "50250"        }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/location/warehouse?before=2021-05-12T20%3A15%3A13.253929%2B05%3A30&limit=1&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/merchhier?before=2021-05-12T21%3A00%3A13.036021%2B05%3A30&limit=1&offsetkey=10%2C1&since=1970-01-01T00%3A00%3A00.001Z ",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_WH Yes No Yes Yes
ICL_RMS_ADDR Yes No Yes Yes
ADDR Yes No No No
MERCHAPI_WH Yes Yes Yes Yes
MERCHAPI_ORG_HIER No No Yes No
V_MERCHAPI_WH Yes No No No
V_MERCHAPI_WH_JSON Yes No No No
SYSTEM_OPTIONS Yes No No No

REST Endpoint for Omnichannel/related Item

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/relateditem

Functional Area

Items - Related Items

Business Overview

This service publishes related-item relationships to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes relationships between a primary item and related items only while both item records remain approved in Merchandising, so relationships tied to non-approved primary or related items are not returned.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: RELATED_ITEM_HEAD, RELATED_ITEM_DETAIL, ITEM_MASTER

Additional business tables: none

JSON cache table: MERCHAPI_RELATED_ITEM

JSON generation view: V_MERCHAPI_RELATED_ITEM_JSON

The JSON view joins RELATED_ITEM_HEAD, RELATED_ITEM_DETAIL, and ITEM_MASTER for both the primary and related items.

Functionally, the main item and the related item must both still be approved (ITEM_MASTER.STATUS = 'A'), so the service publishes only active relationships between approved items.

The cache is refreshed from the approved relationship set in V_MERCHAPI_RELATED_ITEM_JSON and is republished when qualifying relationship or item approval changes occur.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_RELATED_ITEM_JSON and apply the rule that both item rows must have STATUS = 'A'.

ICL (Integration Change Log) table: ICL_RMS_RELATED_ITEM (ICL consumer name = MERCHAPI)

ICL entries are created using triggers on RELATED_ITEM_HEAD, RELATED_ITEM_DETAIL, ITEM_MASTER.

Item Approval Handling

On item approval, the main item publish flow writes related-item head and detail rows where the approved item is the primary item to ICL_RMS_RELATED_ITEM so qualifying relationships can publish when the item becomes approved.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_RELATED_ITEM

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_RELATED_ITEM_ADHOC_PROCESS -> MERCHAPI_OMNI_RELATED_ITEM_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/item/relateditem

Special handling

Additional GET query parameters: nodelevel, nodeid.

Service Types

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/relateditem

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-35 PageResultsItemsVMerchApiRelatedItem - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-36 VMerchApiRelatedItem - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for related item.

relationshipid

No

Number(20,0)

This column contains the Relationship ID.

item

No

String (25)

This column contains the item.

relationshiptype

No

String (6)

This column contains the relationship type.

mandatoryind

No

String (1)

This column contains the mandatory indicator.

relateditem

No

String (25)

This column contains the related item.

relateditemaction

No

String (6)

Action for related item detail.

startdate

No

date

This column contains the start date.

enddate

No

date

This column contains the end date.

priority

No

Number(4,0)

This column contains the priority.

Table 5-37 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"relationshipid": 1,
"item": null,
"relationshiptype": null,
"mandatoryind": null,
"relateditem": null,
"relateditemaction": null,
"startdate": "2001-12-31",
"enddate": "2001-12-31",
"priority": 1
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
  "items": [
    {
      "action": "INSERT",
      "relationshipid": 120001,
      "item": "111150001",
      "relationshiptype": "CRSL",
      "mandatoryind": "N",
      "relateditem": "111051290",
      "relateditemaction": "INSERT",
      "startdate": null,
      "enddate": null,
      "priority": null
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/relateditem?before=2021-05-06T18%3A17%3A30.285106%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://localhost:8080/MerchIntegrations/services/foundation/omnichannel/item/relateditem?before=2021-05-06T18%3A17%3A30.285106%2B08%3A00&limit=1&offsetkey=120001%2C111051290&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST

Yes

No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_RELATED_ITEM Yes Yes Yes Yes
MERCHAPI_RELATED_ITEM Yes Yes Yes Yes
V_MERCHAPI_RELATED_ITEM_JSON Yes No No No
V_MERCHAPI_RELATED_ITEM Yes Yes Yes Yes

REST Endpoint for Omnichannel/Retail Store details

Endpoint

MerchIntegrations/services/foundation/omnichannel/location/retailstore

Functional Area

Organizational Hierarchy - Stores

Business Overview

This service publishes retail store details to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes each store together with its company-through-district hierarchy placement and the primary address maintained for the store or workforce-store address modules in Merchandising.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: STORE, ADDR

Additional business tables: STORE_HIERARCHY, ADD_TYPE_MODULE

JSON cache table: MERCHAPI_RETAIL_STORE

JSON generation view: V_MERCHAPI_RETAIL_STORE_JSON

The JSON view joins STORE, STORE_HIERARCHY, ADDR, and ADD_TYPE_MODULE, so each published row carries the store's company-through-district placement together with the primary address maintained for store modules ST and WFST.

The store cache shares its loader with the omnichannel organization hierarchy and warehouse caches through the shared API_OMNI_ORG_HIER_STR_WH process.

Address publication is limited to the primary address rows for store modules ST and WFST.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_RETAIL_STORE_JSON and publish store hierarchy placement together with the primary address rows for modules ST and WFST.

Rebuild deletes or marks rows when the store no longer exists in the source view.

ICL (Integration Change Log) table: ICL_RMS_STORE, ICL_RMS_ADDR (ICL consumer name = MERCHAPI)

Store changes come from ICL_RMS_STORE, and address-only changes come from ICL_RMS_ADDR for ST and WFST addresses when no store ICL row exists.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ORG_HIER_STR_WH

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ORG_HIER_STR_WH_ADHOC_PROCESS -> MERCHAPI_OMNI_ORG_HIER_STR_WH_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/location/retailstore

Special handling

Additional GET query parameters: nodelevel, nodeid.

Supported nodelevel values for this service are COMPANY, CHAIN, AREA, REGION, DISTRICT, STORE.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/location/retailstore

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-38 PageResultsItemsVMerchapiRetailStore - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-39 VMerchapiRetailStore - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for the store.

storeid

No

Number(10,0)

This column contains the number which uniquely identifies the store.

storename

No

String (150)

This column contains the name of the store which, along with the store number, identifies the store.

storename10

No

String (10)

This column contains a ten-character abbreviation of the store name.

manager

No

String (120)

This column contains the name of the store manager.

phonenumber

No

String (20)

This column contains the phone number for the store.

faxnumber

No

String (20)

This column contains the fax number for the store.

email

No

String (100)

This column contains the email address for the location.

totalsqfeet

No

Number(8,0)

This column contains the total square footage of the store.

sellingsqfeet

No

Number(8,0)

This column contains the total square footage of the store's selling area.

currencycode

No

String (3)

This column contains the currency code under which the store operates.

vatregion

No

Number(4,0)

This column contains the number of the Value Added Tax region in which this store is contained.

stockholding

No

String (1)

This column indicates whether the store can hold stock. In a non-multichannel environment this will always be Y.

integratedpos

No

String (1)

This column indicates whether or not the POS system at the store is integrated.

contactname

No

String (120)

This column contains the name of the contact for the store at this address.

address1

No

String (240)

This column contains the first line of the store address.

address2

No

String (240)

This column contains the second line of the store address.

address3

No

String (240)

This column contains the third line of the store address.

city

No

String (120)

This column contains the name of the city that is associated with the store address.

state

No

String (3)

This column contains the state abbreviation for the store address.

country

No

String (3)

This column contains the country where the store address exists.

postalcode

No

String (30)

This column contains the zip code for the store address.

Table 5-40 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"storeid": 1521,
"storename": "Albuquerque",
"storename10": "Albuquerqu",
"manager": "Paul Petros",
"phonenumber": "505-388-5577",
"faxnumber": "458121212",
"email": "someone@oracle.com",
"totalsqfeet": 4500,
"sellingsqfeet": 4000,
"currencycode": "USD",
"vatregion": 1000,
"stockholding": "Y",
"integratedpos": "Y",
"contactname": "Sue Glass",
"address1": "123 Street",
"address2": "Anaheim",
"address3": "California",
"city": "Anaheim",
"state": "MN",
"country": "US",
"postalcode": "50250"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
    "items": [
        {
            "action": "INSERT",
            "storeid": 1111,
            "storename": "Rebuild with refresh N NO ICL Charlotte *",
            "storename10": "Charlotte",
            "manager": "Don Wright",
            "phonenumber": "704-555-2121",
            "faxnumber": null,
            "email": null,
            "totalsqfeet": 64400,
            "sellingsqfeet": 59500,
            "currencycode": "USD",
            "vatregion": 1000,
            "stockholding": "Y",
            "integratedpos": "Y",
            "contactname": "Sue Glass",
            "address1": "123 Street",
            "address2": "Anytown",
            "address3": null,
            "city": "Anycity",
            "state": "MN",
            "country": "US",
            "postalcode": "50250"
        }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/location/retailstore?before=2021-05-12T17%3A30%3A45.385517%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "self"
        },
        {
            "href": "http://<hostname>:<portnumber>/MerchIntegrations/services/foundation/omnichannel/location/retailstore?before=2021-05-12T17%3A30%3A45.385517%2B05%3A30&nodelevel=COMPANY&limit=1&nodeid=1&offsetkey=1111&since=1970-01-01T00%3A00%3A00.001Z",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_STORE Yes Yes Yes Yes
ICL_RMS_ADDR Yes No Yes Yes
ADDR Yes No No No
STORE Yes No No No
MERCHAPI_RETAIL_STORE Yes Yes Yes Yes
MERCHAPI_ORG_HIER No No Yes No
V_MERCHAPI_RETAIL_STORE_JSON Yes No No No
SYSTEM_OPTIONS Yes No No No

REST Endpoint for Omnichannel/Dimension Type details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/dimensiontype

Functional Area

Items - Item Definition

Business Overview

This service publishes dimension-type rows to the Omnichannel application and can also be consumed by downstream consuming systems. Functionally, the published dimensionSystem is resolved as the item itself, the item parent, or the item grandparent depending on item level, and the service publishes dimension-type rows for differentiator group-level data or for ID-level data when the item resolves to a style dimension system.

This service retrieves the item differentiator types 1, 2 and 3 (referred to as dimension types in XStore). For example, it might return that an item is differentiated by 'color' (diff 1 type), 'waist size' (diff 2 type) and 'inseam' (diff 3 type). While items can be defined with up to four differentiators, this service only returns up to 3 because the Omnichannel cloud services only support up to 3 dimensions. In order to fetch new updates pass the parameter of since/before timestamp.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

The data processing for this service is controlled by the main 'foundation/omnichannel/item' service. Refer to API documentation for additional batch configuration details.

Core business tables: ITEM_MASTER, DIFF_GROUP_HEAD, DIFF_GROUP_DETAIL, DIFF_IDS

Additional business tables: none

JSON cache table: MERCHAPI_ITEM_DIFF_TYPE

JSON generation view: not applicable; cache rows are derived from the shared V_MERCHAPI_ITEM_JSON item source

The shared item source already resolves item level, transaction level, item parent, item grandparent, differentiator level, differentiator type, and differentiator description for DIFF_1 through DIFF_3.

The dimension-type cache unpivots those DIFF_1 through DIFF_3 columns, resolves dimensionSystem as item, item parent, or item grandparent based on item level, and publishes GROUP differentiator rows plus ID differentiator rows only when the derived item type resolves to STYLE.

Qualifying diff-group and diff-ID update flows can also republish affected dimension-type rows after resolving the impacted items from the shared item source.

Webhook configuration api name: foundation/omnichannel/item/dimensiontype

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/dimensiontype

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 10000.

offsetkey

No

String

Offset key

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-41 PageResultsItemsVMerchapiDimType - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-42 VMerchapiDimType - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for the Dimension Type group.

itemaction

No

String (6)

Action for the Item changes related to Dimension Type Group.

dimensionsystem

No

String (25)

This column contains the dimension system. This contains the item, item parent or the item grandparent depending on the item level.

dimension

No

String (6)

This column contains the dimension. This is the differentiator type of the item.

description

No

String (120)

This field contains the description of the dimension.

seq

No

Number(1,0)

This column contains the sequence number of the dimension. Valid values are 1 for Diff 1, 2 for Diff 2 and 3 for Diff 3.

Table 5-43 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"itemaction": null,
"dimensionsystem": "1000000010",
"dimension": "MT",
"description": "Mens TShirt Small",
"seq": 1
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
Items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
Limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

Links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "itemaction": null,
      "dimensionsystem": "1000023212",
      "dimension": "C_3815",
      "description": "Smoke Diff Group Clr",
      "seq": 1
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/dimensiontype?before=2021-05-11T17%3A41%3A38.052402%2B00%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/dimensiontype?before=2021-05-11T17%3A41%3A38.052402%2B00%3A00&limit=1&offsetkey=0430.PD.1%2C1%2CC_3815&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
MERCHAPI_ITEM_DIFF_TYPE Yes Yes Yes Yes
V_MERCHAPI_ITEM_JSON Yes No No No
V_MERCHAPI_DIM_TYPE Yes No No No

REST Endpoint for Omnichannel/Dimension Value details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/dimensionvalue

Functional Area

Items - Item Definition

Business Overview

This service publishes dimension-value rows to the Omnichannel application and can also be consumed by downstream consuming systems. Functionally, the published dimensionSystem is resolved as the item itself, the item parent, or the item grandparent depending on item level, and the cache publishes differentiator values only for rows where DIFF_LEVEL = 'ID'. The display sequence is derived from the matching differentiator-group detail.

This service retrieves item differentiators (referred to as 'dimensions' in XStore). Only differentiators that are associated with approved items are returned.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

The data processing for this service is controlled by the main 'foundation/omnichannel/item' service. Refer to API documentation for additional batch configuration details.

Core business tables: ITEM_MASTER, DIFF_IDS

Additional business tables: DIFF_GROUP_DETAIL

JSON cache table: MERCHAPI_ITEM_DIFF_VALUE

JSON generation view: not applicable; cache rows are derived from the shared V_MERCHAPI_ITEM_JSON item source

The shared item source already resolves item level, transaction level, item parent, item grandparent, differentiator level, differentiator type, and differentiator description for DIFF_1 through DIFF_3.

The dimension-value cache unpivots those DIFF_1 through DIFF_3 columns, resolves dimensionSystem as item, item parent, or item grandparent based on item level, keeps only ID differentiator rows, and derives displayseq from DIFF_GROUP_DETAIL for the matching differentiator group and differentiator value combination.

Qualifying diff-ID update flows can also republish affected dimension-value rows after resolving the impacted items from the shared item source.

Webhook configuration api name: foundation/omnichannel/item/dimensionvalue

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/dimensionvalue

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 10000.

offsetkey

No

String

Offset key

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-44 PageResultsItemsVMerchapiDimValue - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-45 VMerchapiDimValue - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for the Dimension Value group.

itemaction

No

String (9)

Action for the item changes related to the Dimension Value group.

dimensionsystem

No

String (25)

This column contains the dimension system. This contains the item, item parent or the item grandparent depending on the item level.

dimension

No

String (6)

This column contains the dimension. This is the differentiator type of the item.

value

No

String (10)

This column contains the value of the dimension.

description

No

String (120)

This field contains the description of the dimension.

displayseq

No

Number(4,0)

This column contains the display sequence number of the dimension.

Table 5-46 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"itemaction": null,
"dimensionsystem": "1000000010",
"dimension": "MT",
"value": "MT-Small",
"description": "Mens TShirt Small",
"displayseq": 1
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
Items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
Limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

Links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "itemaction": "NO_CHANGE",
      "dimensionsystem": "1000012345",
      "dimension": "C_3815",
      "value": "BLACK_8742",
      "description": "Auto Black BLACK_8742",
      "displayseq": 1
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/dimensionvalue?before=2021-05-11T17%3A51%3A17.671921%2B00%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/dimensionvalue?before=2021-05-11T17%3A51%3A17.671921%2B00%3A00&limit=1&offsetkey=0430.PD.1%2CC_3815%2CBLACK_8742&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
MERCHAPI_ITEM_DIFF_VALUE Yes Yes Yes Yes
V_MERCHAPI_ITEM_JSON Yes No No No
V_MERCHAPI_DIM_VALUE Yes No No No

REST Endpoint for Omnichannel/future Inventory

Endpoint

MerchIntegrations/services/inventory/omnichannel/inventory/futureinventory

Functional Area

Inventory

Business Overview

This service publishes future inventory to the Omnichannel application and can also be consumed by downstream consuming systems. It includes only the future inventory that is relevant to customer-order fulfillment for active, transaction-level, orderable items that are backorder-enabled at stockholding customer-order locations, together with the backorder, open-order, and received quantities that still contribute to fulfillment. The calculation excludes non-customer-order allocation branches from open order quantity and applies the source pack rules so warehouse sellable packs publish at pack level while store sellable packs and non-sellable packs publish through component items.

This service retrieves future inventory information aggregated at an item level. The service returns on-order, received, and back-ordered quantity against an item.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: STORE, WH, ITEM_LOC_SOH, ITEM_MASTER, ITEM_LOC_TRAITS, ALLOC_HEADER

Additional business tables: ALLOC_DETAIL, ORDHEAD, ORDLOC, PERIOD, V_PACKSKU_QTY

JSON cache table: MERCHAPI_FUTURE_AVAIL_CO_INV

JSON generation view: V_BDI_CO_FUTURE_AVAIL

The source view pulls future availability from STORE, WH, ITEM_LOC_SOH, ITEM_MASTER, ITEM_LOC_TRAITS, ALLOC_HEADER, ALLOC_DETAIL, ORDHEAD, ORDLOC, PERIOD, and V_PACKSKU_QTY.

Functionally, it publishes only the future inventory that is relevant to customer-order fulfillment: active transaction-level orderable items that are backorder-enabled at stockholding customer-order locations, together with the backorder, open-order, and received quantities that still contribute to fulfillment.

The calculation excludes non-customer-order allocation branches from open order quantity and applies pack rules so sellable warehouse packs publish at pack level while store sellable packs and non-sellable packs publish through their component items.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild pull published rows from V_BDI_CO_FUTURE_AVAIL. No additional filter criteria were identified beyond the cache-build logic.

Mark rows deleted when the item is no longer backorderable in ITEM_LOC_TRAITS.

ICL (Integration Change Log) table: none; delta processing compares V_BDI_CO_FUTURE_AVAIL directly to MERCHAPI_FUTURE_AVAIL_CO_INV

No ICL table is used; both delta and refresh compare V_BDI_CO_FUTURE_AVAIL directly to MERCHAPI_FUTURE_AVAIL_CO_INV.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

This service does bulk heavy data processing for the entire dataset and hence this job should be run once or twice per day. This should not be configured to run hourly or multiple times in an hour.

Process configuration name: API_OMNI_FUTURE_AVL_CO_INV

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_FUT_AVL_CO_INV_ADHOC_PROCESS -> MERCHAPI_OMNI_FUTURE_AVL_CO_INV_ADHOC_JOB

Webhook configuration api name: inventory/omnichannel/inventory/futureinventory

Service Type

GET

ReST URL

MerchIntegrations/services/inventory/omnichannel/inventory/futureinventory

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-47 PageResultsItemsVMerchapiFutureAvailCoInv - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-48 VMerchapiFutureAvailCoInv - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for Item Future Available Inventory.

item

No

String (25)

This column contains the item.

onorderquantity

No

Number(12,4)

This column contains the on order quantity of the item.

receivedquantity

No

Number(12,4)

This column contains the received quantity of the item.

backorderquantity

No

Number(12,4)

This column contains the backorder quantity of the item.

Table 5-49 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"item": "100001000",
"onorderquantity": 10,
"receivedquantity": 10,
"backorderquantity": 10
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "UPDATE",
      "item": "105700020",
      "onorderquantity": "0",
      "receivedquantity": "0",
      "backorderquantity": "30"
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/inventory/omnichannel/inventory/futureinventory?before=2021-05-06T20%3A56%3A51.316158%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http:// <hostname>/MerchIntegrations/services/inventory/omnichannel/inventory/futureinventory?before=2021-05-06T20%3A56%3A51.316158%2B08%3A00&limit=1&offsetkey=105700020&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST

Yes

No No No
MERCH_BATCH_PARAM Yes No No No
MERCHAPI_BOOKMARK Yes Yes Yes Yes
V_BDI_CO_FUTURE_AVAIL Yes No No No
MERCHAPI_FUTURE_AVAIL_CO_INV Yes Yes Yes Yes
V_MERCHAPI_FUTURE_AVAIL_CO_INV Yes No No No

REST Endpoint for Omnichannel/item Image

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/image

Functional Area

Items - Item Definition

Business Overview

This service publishes item images to the Omnichannel application and can also be consumed by downstream consuming systems. The source view publishes images only for currently approved items, and when callers supply nodelevel and nodeid the service returns images only for items that also have a matching MERCHAPI_ITEM_LOC row at the requested store or warehouse.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: ITEM_IMAGE

Additional business tables: ITEM_MASTER

JSON cache table: MERCHAPI_ITEM_IMAGE

JSON generation view: V_MERCHAPI_ITEM_IMAGE_JSON

The JSON view is built from ITEM_IMAGE and ITEM_MASTER, and it explicitly filters to ITEM_MASTER.STATUS = 'A', so only images for currently approved items are published from the source view.

When callers supply nodelevel and nodeid, the REST query further requires a matching MERCHAPI_ITEM_LOC row for the item at the requested store or warehouse, which scopes the published images to items active at that node.

When nodelevel and nodeid are supplied, the service requires a matching MERCHAPI_ITEM_LOC row for the item at the requested node.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_ITEM_IMAGE_JSON and apply ITEM_MASTER.STATUS = 'A'.

ICL (Integration Change Log) table: ICL_RMS_ITEM_IMAGE (ICL consumer name = MERCHAPI)

ICL entries are created using item-image changes, while ITEM_MASTER.STATUS = 'A' is enforced through the source view when rows are rebuilt or merged.

Item Approval Handling

On item approval, the main item publish flow writes existing ITEM_IMAGE rows for the item to ICL_RMS_ITEM_IMAGE so image data is also queued when the item becomes approved.

Batch Configuration. Asynchronous delta processing is supported using Background engine and also via POM scheduling. Choose one.

Process configuration name: API_OMNI_ITEM_IMAGE

To enable via Background engine set BACKGROUND_RUN_FLAG to Y and review the BACKGROUND_RUN_INTERVAL_SECOND parameter.

POM Batch schedule process and job: MERCHAPI_DELTA_OMNI_ITEM_IMAGE_ADHOC_PROCESS -> MERCHAPI_OMNI_ITEM_IMAGE_ADHOC_JOB

Webhook configuration api name: foundation/omnichannel/item/image

Special handling

Additional GET query parameters: nodelevel, nodeid.

Performance Considerations

For customers expecting high to very high publish volume from this API, sizing and operational tuning should be addressed early in the implementation lifecycle. Initial cache seeding, ongoing delta processing, full extracts, and incremental downloads or webhook-driven delivery have different runtime characteristics and should be evaluated separately.

Multi-threading and commit control

This service batch processing for delta and initial seeding is single threaded.

The delivered setting for API_COMMIT_MAX_COUNTER is currently 1000 and it can be extend to 10,000.

REST fetch considerations

REST page size should be selected based on average payload size so the average response remains below about 10 MB per call. Common page-limit values are 1,000 or 10,000 rows.

For full downloads, do not provide the since query parameter so the database can favor the primary-key access path. For delta downloads, use a small time window, typically a few minutes and at most a few hours, so the eligible row set on the LAST_UPDATE_DATETIME index remains small.

Wider delta windows, especially multi-day windows that can arise during outages or data recovery, generally do not perform well. For such scenarios, keeping BUILD_HISTOGRAM enabled allows the service to support recovery through smaller, more selective polling windows using the optimalBefore query parameter.

In this catch-up pattern, for requests up to 30 days in the past, the client provides optimalBefore and leaves before empty. The client then uses the returned before timestamp to continue polling incrementally until the backlog is cleared, and then resumes the normal short-window delta pattern. Hourly histogram processing groups LAST_UPDATE_DATETIME values into buckets of 10,000 rows in MERCHAPI_TIMESTAMP_HISTOGRAM using the shared HISTOGRAM_ROW_COUNT configuration.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/image

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

limit

No

String (6)

Pagination limit. Default value is 1000.

offsetkey

No

String

Offset key

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-50 PageResultsItemsVMerchapiItemImage - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-51 VMerchapiItemImage - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for the Item Image.

item

No

String (25)

This column contains the unique alphanumeric identifier for the item.

imagename

No

String (120)

This column contains the name of the image of the item.

imageaddr

No

String (255)

This field contains the actual path where the file of the image of the item is stored.

imageuri

No

String (375)

This column contains the URI of the image of the item.

imagedesc

No

String (40)

This field contains the description associated with the image of the item.

imagetype

No

String (6)

This field contains the type of the image of the item. Valid values are defined as members of IITD code type.

primaryind

No

String (1)

This field indicates whether this record is the primary image of the item or not. Valid values are Y and N. It defaults to N if left blank or set to null.

displaypriority

No

Number(4,0)

This field specifies the display sequence order of images associated with the item by priority.

Table 5-52 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"item": "1000000010",
"imagename": "imageName1",
"imageaddr": "http://www.oracle.com/",
"imageuri": "http://www.oracle.com/imageName1",
"imagedesc": "imageDesc1",
"imagetype": "T",
"primaryind": "Y",
"displaypriority": 1
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "item": "100200042",
      "imagename": "image1",
      "imageaddr": "http://www.oracle.com/",
      "imageuri": "http://www.oracle.com/image1",
      "imagedesc": "image1Desc",
      "imagetype": "T",
      "primaryind": "Y",
      "displaypriority": 1
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/image?before=2021-05-06T17%3A32%3A13.265046%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http:// <hostname>/MerchIntegrations/services/foundation/omnichannel/item/image?before=2021-05-06T17%3A32%3A13.265046%2B08%3A00&limit=1&offsetkey=100200042%2Cimage1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST

Yes

No No No
MERCH_BATCH_PARAM Yes No No No

MERCHAPI_BOOKMARK

ICL_RMS_ITEM_IMAGE

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

ITEM_MASTER Yes No No No
ITEM_IMAGE Yes No No No
MERCHAPI_ITEM_IMAGE Yes Yes Yes Yes
V_MERCHAPI_ITEM_IMAGE_JSON Yes No No No
V_MERCHAPI_ITEM_IMAGE Yes No No No

REST Endpoint for Omnichannel/Item Initial Price details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/initialprice

Functional Area

Items - Item Definition

Business Overview

This service should not be used for external consumption. This service is very specific for XStore consumption and the roadmap plan is to deprecated this service in future once XStore dependency is removed. The information provided by this service is same as 'foundation/omnichannel/item/itemlocation'. The term 'initial price' for this service is misleading for external consumption because this service provides the current price for the item/location combination.

If Xstore is part of the implementation, refer to the technical details for API documentation for 'foundation/omnichannel/item/itemlocation' because the underlying components are the same.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/initialprice

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 10000.

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-53 PageResultsItemsVMerchApiInitialItemPrice - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-54 VMerchApiInitialItemPrice - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for Item details.

loctype

No

String (1)

This field specifies the type of location in the location field. Valid values are S (store) and W (warehouse).

location

No

Number(10,0)

This field contains the numeric identifier of the location in which the item is to be found. This field may contain a store or warehouse.

item

No

String (25)

This field specifies the unique alphanumeric value that identifies the item.

pricetype

No

String (7)

This field specifies the price type. Valid value is INITIAL.

price

No

Number(20,4)

This field specifies the initial unit retail price in the standard unit of measure for the item/location combination. This field is stored in the local currency.

effective

No

date

This field specifies the date on which the unit retail price became or will become active. This field is always null in the current implementation.

source

No

String (6)

This field contains the source of the initial unit retail price of each item. This field is always direct in the current implementation.

eventid

No

String

This field specifies the event ID. This field is always null in the current implementation.

resetind

No

String

This field specifies the reset indicator. This field is always null in the current implementation.

clearanceind

No

Number(1,0)

This field specifies if the item is on clearance at the store. A value of 1 indicates clearance.

Table 5-55 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"loctype": "S",
"location": 1521,
"item": "100012012",
"pricetype": "INITIAL",
"price": 19.5,
"effective": "2001-12-31",
"source": "direct",
"eventid": null,
"resetind": null,
"clearanceind": 1
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
  "items": [
    {
      "action": "INSERT",
      "loctype": "S",
      "location": 121,
      "item": "100000104",
      "pricetype": "INITIAL",
      "price": 12.1,
      "effective": null,
      "source": "direct",
      "eventid": null,
      "resetind": null,
      "clearanceind": 0
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/initialprice?before=2021-05-11T17%3A23%3A22.208547%2B00%3A00&nodelevel=COMPANY&limit=1&nodeid=9118&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/initialprice?before=2021-05-11T17%3A23%3A22.208547%2B00%3A00&nodelevel=COMPANY&limit=1&nodeid=9118&offsetkey=S%2C121%2C100000104&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }
  ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.
TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_ITEM_LOC Yes Yes Yes Yes
ITEM_MASTER Yes No No No
ITEM_LOC Yes No No No
MERCHAPI_ITEM_LOC Yes Yes Yes Yes
V_MERCHAPI_ITEM_LOC_JSON Yes No No No
V_MERCHAPI_INITIAL_ITEM_PRICE Yes No No No

REST Endpoint for Omnichannel/Item Location details

Endpoint

MerchIntegrations/services/foundation/omnichannel/item/itemlocation

Functional Area

Items - Item Definition

Business Overview

This service publishes the item/location payload to the Omnichannel application and can also be consumed by downstream consuming systems. It serves the store and warehouse projection of the shared item/location cache with 'foundation/item/location' service and returns the location-specific selling, sourcing, VAT-code, and tax-group details used by omnichannel selling flows. Although the shared cache also supports broader location coverage for other services, this omnichannel projection does not return external-finisher rows.

The shared source view behind the cache is limited to items whose current ITEM_MASTER.STATUS is A or D. This service then applies its own store or warehouse query scope and enriches matching rows with tax-group data when corresponding GTS cache data exists in the requested window.

Refer to the api documentation for 'foundation/item/location' for technical and performance consideration for this service as these two share the same underlying component.

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/item/itemlocation

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

nodelevel

No

String

Node Level

nodeid

No

String (10)

Node Id

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 10000.

changeType

No

String

Filter records that were created or deleted within since/before time range. Valid values create or delete

optimalBefore

No

String

Enables histogram-based calculation of the before timestamp when before is not provided. Valid values are Y or N. Default value is N.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-56 PageResultsItemsVMerchApiItemLoc - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-57 VMerchApiItemLoc - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for item details.

loctype

No

String (1)

This field specifies the type of location in the location field. Valid values are S (store) and W (warehouse).

location

No

Number(10,0)

This field contains the numeric identifier of the location in which the item is to be found. This field may contain a store or warehouse.

item

No

String (25)

This field specifies the unique alphanumeric value that identifies the item.

sellingunitretail

No

Number(20,4)

This field specifies the unit retail price in the selling unit of measure for the item/location combination. This field is stored in the local currency.

sellinguom

No

String (4)

This field specifies the selling unit of measure for an item's single-unit retail.

sellingUomDecimalPrecision

No

Number(1,0)

This field defines the number of decimal places to be considered for the specific selling UOM in XOCS.

taxableind

No

String (1)

This field indicates if the item is taxable at the store.

localitemdesc

No

String (250)

This field specifies the local description of the item. This field will default to the item's description but will be overridable. This value will be downloaded to the POS.

status

No

String (1)

This field specifies the current status of the item at the store.

qtykeyoptions

No

String (6)

This field specifies whether the qty key on a POS should be used for this item at the location. Valid values are in the code_type RPO. Current values include R - required, P - prohibited, and O - optional. Additional values can be added to the code type as needed. This value will be downloaded to the POS as needed.

manualpriceentry

No

String (6)

This field specifies whether the price can or should be entered manually on a POS for this item at the location.

foodstampind

No

String (1)

This field specifies whether the item is approved for food stamps at the location. This value will be downloaded to the POS.

fixedtarevalue

No

Number(12,4)

This field holds the value associated with the packaging in items sold by weight at the location. Fixed tare is the tare of the packaging used. The only processing RMS does involving the fixed tare value is downloading it to the POS. Fixed tare is not subtracted from items sold by weight when sales are uploaded to RMS. This kind of processing is the responsibility of the client and should occur before sales are sent to any Oracle Retail application.

fixedtareuom

No

String (4)

This field holds the unit of measure value associated with the tare value. The only processing RMS does involving the fixed tare value and UOM is downloading it to the POS. Fixed tare is not subtracted from items sold by weight when sales are uploaded to RMS. This kind of processing is the responsibility of the client and should occur before sales are sent to any Oracle Retail application.

stopsaleind

No

String (1)

This field specifies whether sale of the item should be stopped immediately at the location (for example, in case of recall). This value will be downloaded to the POS.

returnableind

No

String (1)

This field contains a value of Yes when the item can be returned to the location.

backorderind

No

String (1)

This field contains a value of Yes when the item can be back ordered to the location.

merchandiseind

No

String (1)

This field indicates if the item is a merchandise item.

clearanceind

No

String (1)

This field indicates if the item is on clearance at the store.

crosssell

No

String (1)

This field indicates if a substitute item exists for the main item.

attacheditem

No

String (1)

This field indicates if cross-sell or up-sell items are attached to the main item.

vatcodes

No

String (4000)

This field specifies VAT code information for the item.

localshortdescription

No

String (120)

This field contains the local short description of the item. This field will default to the item's short description but will be overridable. This value will be downloaded to the POS.

sourcemethod

No

String (1)

This value will be used to specify how the ad-hoc PO or TSF creation process should source the item/location request. If the value is Warehouse, the process will attempt to fill the request by creating a transfer from the warehouse mentioned in the source_wh field. If this warehouse does not have enough inventory to fill the request, a purchase order will be created for the item/location's primary supplier. For warehouses, it is used by Oracle Retail Allocation to determine the valid sources and destinations for warehouse-to-warehouse allocations.

sourcewarehouse

No

Number(10,0)

This value will be used by the ad-hoc PO or transfer creation process to determine which warehouse to fill the store's request from. It will also be used by the Allocation process to support warehouse-to-warehouse allocations. A value will be required in this field if the sourcing method is Warehouse.

taxGroupId

No

String (60)

Tax group ID.

Table 5-58 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": "INSERT",
"loctype": "S",
"location": 1521,
"item": "100100076",
"sellingunitretail": 19.5,
"sellinguom": "EA",
"sellingUomDecimalPrecision": 1,
"taxableind": "Y",
"localitemdesc": "localItemDesc",
"status": null,
"qtykeyoptions": null,
"manualpriceentry": null,
"foodstampind": null,
"fixedtarevalue": 1.0,
"fixedtareuom": null,
"stopsaleind": null,
"returnableind": null,
"backorderind": null,
"merchandiseind": "Y",
"clearanceind": null,
"crosssell": null,
"attacheditem": null,
"vatcodes": null,
"localshortdescription": "localShortDesc",
"sourcemethod": null,
"sourcewarehouse": 1,
"taxGroupId": null
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

vatcodes JSON Output

Name Data Type Description
code String This field contains vat code which is used to uniquely identify a VAT rate.
date Date This filed contains date on which VAT rate become active. Format: YYYY-MM-DD

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:

" {
    "items": [
        {
            "action": "INSERT",
            "loctype": "S",
            "location": 1111,
            "item": "100750001",
            "sellingunitretail": "132.13",
            "sellinguom": "EA",
            "taxableind": "Y",
            "localitemdesc": "100750001",
            "status": "A",
            "qtykeyoptions": null,
            "manualpriceentry": null,
            "foodstampind": null,
            "fixedtarevalue": null,
            "fixedtareuom": null,
            "stopsaleind": null,
            "returnableind": null,
            "backorderind": null,
            "merchandiseind": "Y",
            "clearanceind": "N",
            "crosssell": "N",
            "attacheditem": "N",
            "vatcodes": "[{\"code\":\"S\",\"date\":\"2020-07-25\"}]", 
            "localshortdescription": "New Component Item",
            "sourcemethod": "W",
            "sourcewarehouse": 10001,
            "taxGroupId":null
        }
    ],
    "hasMore": true,
    "limit": 1,
    "count": 1,
    "links": [
        {
            "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/itemlocation?before=2021-05-03T15%3A50%3A19.189562000%2B00%3A00&nodelevel=COMPANY&limit=2&nodeid=1&offsetkey=S%2C1111%2C100550000%26since%3D1970-01-01T00%3A00%3A00.001Z&since=1970-01-01T00%3A00%3A00.001000000%2B00%3A00",
            "rel": "self"
        },
        {
            "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/item/itemlocation?before=2021-05-03T15%3A50%3A19.189562000%2B00%3A00&nodelevel=COMPANY&limit=2&nodeid=1&offsetkey=S%2C1151%2C100000067%26since%3D1970-01-01T00%3A00%3A00.001Z&since=1970-01-01T00%3A00%3A00.001000000%2B00%3A00",
            "rel": "next"
        }
    ]
}"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST Yes No No No
MERCH_BATCH_PARAM Yes No No No
ICL_RMS_ITEM_LOC Yes Yes Yes Yes
ITEM_MASTER Yes No No No
ITEM_LOC Yes No No No
MERCHAPI_ITEM_LOC Yes Yes Yes Yes
V_MERCHAPI_ITEM_LOC_JSON Yes No No No
V_MERCHAPI_ITEM_LOC Yes No No No
MERCHAPI_GTS_TAX_LOC_ITEM Yes No No No
MERCHAPI_GTS_TAX_LOC Yes No No No

REST Endpoint for Omnichannel/vat

Endpoint

MerchIntegrations/services/foundation/omnichannel/vat

Functional Area

Financials - Taxes

Business Overview

This service publishes VAT definitions to the Omnichannel application and can also be consumed by downstream consuming systems. It publishes VAT region and VAT code rate definitions for non-exempt tax regions only, and it derives the published end date from the next more recent effective row for the same VAT region and VAT code combination.

This includes data such as VAT code, active date, and VAT rate, and is applicable for VAT implmentations only (Default Tax Type system option is 'Simple VAT'). This service does not support incremental date updates, it always returns all VAT related information, even if only one VAT definition was modified.

Technical Details

This service follows the Publish API cache architecture in which the REST service serves pre-generated JSON from an integration cache table that is initially seeded and then maintained through asynchronous delta processing. For overall enablement, scheduling, and guidance on how publish api works and how webhook for this api can be implemented to stream the data out, refer to the white paper Publish APIs - Customer Enablement Overview.

Core business tables: VAT_CODES

Additional business tables: VAT_CODE_RATES, VAT_REGION

JSON cache table: MERCHAPI_VAT

JSON generation view: V_MERCHAPI_VAT_JSON

The JSON view is built from VAT_CODES, VAT_CODE_RATES, and VAT_REGION.

Functionally, it publishes VAT-region and VAT-code combinations for non-exempt tax regions only (VAT_REGION.VAT_CALC_TYPE <> 'E'), ranks ACTIVE_DATE descending within each (vat_region, vat_code) pair, and derives endDate from the next newer effective row for that same region/code combination.

This API is unusual compared with the rest of the omnichannel caches because delta maintenance compares the current VAT source directly to the cache table rather than using row-level ICL driven change capture.

Initial Seeding and post enablement rebuild/repair

Initial seeding and rebuild use V_MERCHAPI_VAT_JSON and apply VAT_REGION.VAT_CALC_TYPE <> 'E'.

ICL (Integration Change Log) table: none; refresh and delta processing compare V_MERCHAPI_VAT_JSON directly to MERCHAPI_VAT

No ICL table is used; fine-grained delete and update publishing is intentionally not implemented because omnichannel VAT uses kill-and-fill behavior.

Related bulk publish handling for item/location cache

Tomorrow-effective VAT rate activation through VAT code-rate maintenance using batch job VATDLXPL and its prepost (post) can insert a record into MERCHAPI_ASYNC_REQUEST for foundation/omnichannel/item/itemlocation with REQUEST_TYPE = DATA_REFRESH and REFRESH_TYPE = REBUILD when the VAT change can affect a broad item/location population. This bulk publish handling is driven through the Vat Rate Change Explode (VATDLXPL) flow as part of prepost.pc.

If the future-effective change is narrower and item-specific, targeted item/location delta rows are staged instead of the broader rebuild request.

Refer to foundation/item/location for the detailed item/location operational and performance implications of this bulk publish handling.

Batch Configuration. This API does not have a dedicated delivered asynchronous schedule configuration.

Process configuration name: API_OMNI_VAT

No POM batch schedule entry was identified for this API.

No API-specific BACKGROUND_RUN_FLAG or BACKGROUND_RUN_INTERVAL_SECOND rows were found for this API.

Webhook configuration api name: foundation/omnichannel/vat

Service Type

GET

ReST URL

MerchIntegrations/services/foundation/omnichannel/vat

Input Parameters

Parameter Name Required Data Type Description

since

No

String

Since Date (Example: 2010-12-31T23:59:59.999Z)

before

No

String

Before Date (Example: 2040-12-31T23:59:59.999Z)

offsetkey

No

String

Offset key

limit

No

String (6)

Pagination limit. Default value is 1000.

include

No

String

Fields to include - comma separated (Example items.name,items.address.city)

exclude

No

String

Fields to exclude - comma separated (Example items.address.contactFax,items.customFlexAttribute)

Output

Table 5-59 PageResultsItemsVMerchApiVat - Object. See list of elements for detail

Element Name Required Data Type Description

items

No

Collection of Object

Collection of records

hasMore

No

Boolean

Boolean to signify if there are additional pages of data. This is true if limit = count for pagination supported request

limit

No

Number

Requested page size. If the page size was not defined in the input request, a default page size is used to limit the number of records to fetch

count

No

Number

Number of record in the response object

links

No

Collection of Object

List of Self and/or Next URL

Table 5-60 VMerchApiVat - Object. See list of elements for detail

Element Name Required Data Type Description

action

No

String (6)

Action for VAT details.

vatregion

No

Number(4,0)

This field gives the VAT region.

vatregionname

No

String (120)

This field gives the VAT region name.

vatcode

No

String (6)

This field gives the VAT code.

vatcodedesc

No

String (120)

This field gives the VAT code description.

activedate

No

date

This field gives the active date.

vatrate

No

Number(20,10)

This field gives the VAT rate.

enddate

No

date

This field gives the end date.

Table 5-61 LinkItems - Object. See list of elements for detail

Element Name Required Data Type Description

href

No

String

Service URL

rel

No

String

This can be either 'self' or 'next'. The 'next' link is present if there are more pages to fetch and contains the offsetkey which uniquely identifies the last record of this response.

Sample Response Message

{
"items": [
{
"action": null,
"vatregion": 1000,
"vatregionname": null,
"vatcode": "S",
"vatcodedesc": null,
"activedate": "2001-12-31",
"vatrate": 1.0,
"enddate": "2001-12-31"
}
],
"hasMore": true,
"limit": 1000,
"count": 1000,
"links": [
{
"href": "https://<server>:<port>/Application/services/resources?limit=1000&since=1970-01-01T00:00:00.001Z&before=2024-01-01T00:00:00.001Z&offsetkey=1234,XYZ",
"rel": "next"
}
]
}

Elements in JSON Output

Elements Description
items The first element is named as items and contains a number of child elements. Each child element corresponds to a row in the result set generated by the query.
hasMore This is dependent on limit value. If the total rows are more than then limit defined then hasMore will be set to true else false.
limit

This is used to limit the rows to control the paging of result data. Based on the limit, next and previous links are displayed.

For example: If the limit is set to 25, internal it tries to fetch 26 rows. If 26th row exists then 25 rows are returned along with a "next" link else no links would be added to the JSON response.

links

“self” : This contains URI pointing to current page.

“next”: This contains URI pointing to the next page of results.

Example JSON input:
" {
  "items": [
    {
      "action": "INSERT",
      "vatregion": 1000,
      "vatregionname": "Vat Region 1000",
      "vatcode": "E",
      "vatcodedesc": "Exempt",
      "activedate": "2019-02-10T00:00:00",
      "vatrate": null,
      "enddate": "2019-02-18T00:00:00"
    }
  ],
  "hasMore": true,
  "limit": 1,
  "count": 1,
  "links": [
    {
      "href": "http:// <hostname> /MerchIntegrations/services/foundation/omnichannel/vat?before=2021-05-06T19%3A34%3A38.158110%2B08%3A00&limit=1&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "self"
    },
    {
      "href": "http://<hostname>/MerchIntegrations/services/foundation/omnichannel/vat?before=2021-05-06T19%3A34%3A38.158110%2B08%3A00&limit=1&offsetkey=1000%2CE%2C2019-02-10T00%3A00%3A00&since=1970-01-01T00%3A00%3A00.001Z",
      "rel": "next"
    }"

Table Impact

The list of table includes the data pre-processing for this service along with the table/views queried during the ReST call.

TABLE SELECT INSERT UPDATE DELETE
MERCHAPI_CONFIG Yes No No No
MERCHAPI_CONSUMER_CONFIG Yes No No No
MERCHAPI_ASYNC_REQUEST

Yes

No No No
MERCH_BATCH_PARAM Yes No No No
VAT_CODES Yes No No No
VAT_CODE_RATES Yes No No No
VAT_ITEM Yes No No No
MERCHAPI_VAT Yes Yes Yes Yes
V_MERCHAPI_VAT_JSON Yes No No No
V_MERCHAPI_VAT Yes No No No