curl --request GET \
--url http://127.0.0.1:5185/v1/changesconst options = {method: 'GET'};
fetch('http://127.0.0.1:5185/v1/changes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://127.0.0.1:5185/v1/changes"
response = requests.get(url)
print(response.text){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "product_first_observed",
"product": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_ids": {
"utah_dabs_sku": "347210"
},
"name": "<string>",
"brand": "<string>"
},
"store": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_ids": {
"inventory_store_code": "0002"
},
"name": "<string>"
},
"change": {},
"semantics": "first_observed_by_nektir",
"times": {
"source_updated_at": "2023-11-07T05:31:56Z",
"retrieved_at": "2023-11-07T05:31:56Z",
"published_at": "2023-11-07T05:31:56Z"
},
"upstream_age_known": true
}
],
"meta": {
"page": {
"has_more": true,
"next_cursor": "<string>",
"cursor_expires_at": "2023-11-07T05:31:56Z"
},
"history": {
"tracking_started_at": "2023-11-07T05:31:56Z",
"earliest_available_at": "2023-11-07T05:31:56Z",
"latest_available_at": "2023-11-07T05:31:56Z",
"retention_days": 400,
"retained_event_count": 1,
"source_update_time_known": true
},
"warnings": [
{
"code": "INVENTORY_COVERAGE_PARTIAL"
}
]
},
"links": {
"self": "<string>",
"next": "<string>"
}
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}List observed product changes or one product's history
Returns immutable events created atomically with a Nektir publication. Filter by product_id
or sku for one product’s history. Inventory quantities are reported observations; a decrease
is never labeled as a purchase or inferred sale. store_inventory_first_observed is a baseline
observation, not a restock. Source update time remains null unless the upstream source supplies it.
Every query is capped at the revision in X-Publication-Revision. The first page freezes an
upper event bound within that revision, so concurrent or newer publications cannot move rows
between pages or disagree with the response header.
curl --request GET \
--url http://127.0.0.1:5185/v1/changesconst options = {method: 'GET'};
fetch('http://127.0.0.1:5185/v1/changes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://127.0.0.1:5185/v1/changes"
response = requests.get(url)
print(response.text){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "product_first_observed",
"product": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_ids": {
"utah_dabs_sku": "347210"
},
"name": "<string>",
"brand": "<string>"
},
"store": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_ids": {
"inventory_store_code": "0002"
},
"name": "<string>"
},
"change": {},
"semantics": "first_observed_by_nektir",
"times": {
"source_updated_at": "2023-11-07T05:31:56Z",
"retrieved_at": "2023-11-07T05:31:56Z",
"published_at": "2023-11-07T05:31:56Z"
},
"upstream_age_known": true
}
],
"meta": {
"page": {
"has_more": true,
"next_cursor": "<string>",
"cursor_expires_at": "2023-11-07T05:31:56Z"
},
"history": {
"tracking_started_at": "2023-11-07T05:31:56Z",
"earliest_available_at": "2023-11-07T05:31:56Z",
"latest_available_at": "2023-11-07T05:31:56Z",
"retention_days": 400,
"retained_event_count": 1,
"source_update_time_known": true
},
"warnings": [
{
"code": "INVENTORY_COVERAGE_PARTIAL"
}
]
},
"links": {
"self": "<string>",
"next": "<string>"
}
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invalid_params": [
{
"name": "<string>",
"reason": "<string>"
}
]
}Headers
Strong entity tag from an earlier response.
HTTP-date fallback validator. ETag takes precedence.
Query Parameters
Stable API-owned product UUID. Mutually exclusive with sku.
Exact six-character Utah DABS SKU. Mutually exclusive with product_id.
^[0-9]{6}$"347210"
"004190"
Restrict store-level inventory events to one stable API-owned store UUID.
Comma-separated observed event types with OR semantics.
8product_first_observed, price_changed, status_changed, product_presentation_changed, aggregate_inventory_changed, store_inventory_first_observed, store_inventory_changed, catalog_presence_changed Inclusive lower bound on Nektir retrieval/observation time. A timezone is required.
Inclusive upper bound on Nektir retrieval/observation time. A timezone is required.
1 <= x <= 100Signed opaque keyset cursor, valid for 15 minutes and only with the original query.
2048