curl --request POST \
--url https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"feedId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceId": "<string>",
"revision": {
"schemaVersion": "1.0.0",
"revisionId": "<string>",
"sourceId": "<string>",
"profileId": "<string>",
"profileVersion": "<string>",
"deliverySemantics": "FULL_REPLACEMENT",
"idempotencyKey": "<string>",
"contentDigest": "<string>",
"provenance": {
"actorType": "API",
"submittedAt": "2023-11-07T05:31:56Z",
"contentDigest": "<string>",
"actorId": "<string>",
"adapterId": "<string>",
"fileName": "<string>",
"requestId": "<string>"
},
"facts": [
{
"factId": "<string>",
"sourceId": "<string>",
"scope": {
"scopeType": "component",
"sourceId": "<string>",
"kind": "placement",
"externalId": "<string>"
},
"dimensions": {},
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"observedAt": "2023-11-07T05:31:56Z",
"poolId": "<string>",
"availability": {
"basis": "NET_SELLABLE",
"quantity": {
"unit": "<string>",
"amount": 1
},
"reservable": true,
"upstreamBooked": {
"unit": "<string>",
"amount": 1
},
"temporalJoinFence": {
"grossFactId": "<string>",
"bookingFactId": "<string>",
"sourceId": "<string>",
"poolId": "<string>",
"unit": "<string>",
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"strategy": "SAME_SNAPSHOT",
"grossSnapshot": "<string>",
"bookingSnapshot": "<string>",
"grossObservedThrough": "2023-11-07T05:31:56Z",
"bookingObservedThrough": "2023-11-07T05:31:56Z",
"observedSkewSeconds": 1,
"status": "PROVEN",
"diagnosticCode": "<string>"
}
},
"pricingOptions": [],
"formatOptions": [],
"sourceMetadata": {},
"provenance": {
"actorType": "API",
"submittedAt": "2023-11-07T05:31:56Z",
"contentDigest": "<string>",
"actorId": "<string>",
"adapterId": "<string>",
"fileName": "<string>",
"requestId": "<string>"
}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "ERROR",
"scope": "REVISION",
"message": "<string>",
"rowIndex": 4503599627370495,
"factId": "<string>",
"field": "<string>",
"details": {}
}
],
"validationStatus": "VALID",
"commitStatus": "PREVIEW",
"snapshot": "<string>",
"cursor": "<string>",
"observedThrough": "2023-11-07T05:31:56Z",
"coveredPeriod": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"catalogRevision": "<string>",
"correction": {
"correctionId": "<string>",
"targetType": "REVISION",
"targetRevisionId": "<string>",
"mode": "REPLACEMENT",
"reason": "<string>"
}
},
"previewBaseline": {
"previewToken": "<string>",
"revisionId": "<string>",
"customerId": 4503599627370496,
"sourceId": "<string>",
"profileId": "<string>",
"profileVersion": "<string>",
"payloadDigest": "<string>",
"activeRevisionId": "<string>",
"activeCursor": "<string>",
"activeSnapshot": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"staleErrorCode": "STALE_PREVIEW_BASELINE"
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Preview a feed revision (HITL)
Parse and catalog-resolve an inventory feed payload to produce a PREVIEW revision and a signed baseline token. Both static-avails-feed:v1 (JSON rows) and wholesale-avails-pricing:v1 are supported. Pass the returned revision and previewBaseline to POST /feed/commit to commit it.
curl --request POST \
--url https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/feed/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"feedId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceId": "<string>",
"revision": {
"schemaVersion": "1.0.0",
"revisionId": "<string>",
"sourceId": "<string>",
"profileId": "<string>",
"profileVersion": "<string>",
"deliverySemantics": "FULL_REPLACEMENT",
"idempotencyKey": "<string>",
"contentDigest": "<string>",
"provenance": {
"actorType": "API",
"submittedAt": "2023-11-07T05:31:56Z",
"contentDigest": "<string>",
"actorId": "<string>",
"adapterId": "<string>",
"fileName": "<string>",
"requestId": "<string>"
},
"facts": [
{
"factId": "<string>",
"sourceId": "<string>",
"scope": {
"scopeType": "component",
"sourceId": "<string>",
"kind": "placement",
"externalId": "<string>"
},
"dimensions": {},
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"observedAt": "2023-11-07T05:31:56Z",
"poolId": "<string>",
"availability": {
"basis": "NET_SELLABLE",
"quantity": {
"unit": "<string>",
"amount": 1
},
"reservable": true,
"upstreamBooked": {
"unit": "<string>",
"amount": 1
},
"temporalJoinFence": {
"grossFactId": "<string>",
"bookingFactId": "<string>",
"sourceId": "<string>",
"poolId": "<string>",
"unit": "<string>",
"period": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"strategy": "SAME_SNAPSHOT",
"grossSnapshot": "<string>",
"bookingSnapshot": "<string>",
"grossObservedThrough": "2023-11-07T05:31:56Z",
"bookingObservedThrough": "2023-11-07T05:31:56Z",
"observedSkewSeconds": 1,
"status": "PROVEN",
"diagnosticCode": "<string>"
}
},
"pricingOptions": [],
"formatOptions": [],
"sourceMetadata": {},
"provenance": {
"actorType": "API",
"submittedAt": "2023-11-07T05:31:56Z",
"contentDigest": "<string>",
"actorId": "<string>",
"adapterId": "<string>",
"fileName": "<string>",
"requestId": "<string>"
}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "ERROR",
"scope": "REVISION",
"message": "<string>",
"rowIndex": 4503599627370495,
"factId": "<string>",
"field": "<string>",
"details": {}
}
],
"validationStatus": "VALID",
"commitStatus": "PREVIEW",
"snapshot": "<string>",
"cursor": "<string>",
"observedThrough": "2023-11-07T05:31:56Z",
"coveredPeriod": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
},
"catalogRevision": "<string>",
"correction": {
"correctionId": "<string>",
"targetType": "REVISION",
"targetRevisionId": "<string>",
"mode": "REPLACEMENT",
"reason": "<string>"
}
},
"previewBaseline": {
"previewToken": "<string>",
"revisionId": "<string>",
"customerId": 4503599627370496,
"sourceId": "<string>",
"profileId": "<string>",
"profileVersion": "<string>",
"payloadDigest": "<string>",
"activeRevisionId": "<string>",
"activeCursor": "<string>",
"activeSnapshot": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"staleErrorCode": "STALE_PREVIEW_BASELINE"
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Path Parameters
Inventory source ID
1Body
Request body for POST /inventory-sources/:sourceId/feed/preview.
Feed contract identifier. static-avails-feed:v1 for static avails CSV/JSON; wholesale-avails-pricing:v1 for wholesale pricing grids.
static-avails-feed:v1, wholesale-avails-pricing:v1 JSON rows — provide exactly one of rawRows, csvText, or jsonText.
1Show child attributes
Show child attributes
CSV text — provide exactly one of rawRows, csvText, or jsonText.
1 - 2000000JSON text — provide exactly one of rawRows, csvText, or jsonText.
1 - 2000000Deterministic replay idempotency key (UUID). Provide only together with revisionId and observedAt; omit all three fields for server-generated, non-retryable convenience values.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Deterministic replay revision id (UUID). Provide only together with idempotencyKey and observedAt; omit all three fields for server-generated, non-retryable convenience values.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ISO-8601 observation timestamp for deterministic replay. Provide only together with idempotencyKey and revisionId; omit all three fields to default to the current time.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Response
Preview a feed revision (HITL)
Response from POST /feed/preview and POST /feed/upload. Pass previewBaseline and revision to POST /feed/commit.
Canonical inventory feed id shared by all transports (HITL, API_PUSH) for this source and contract.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$External source_id string for this feed.
Inventory feed revision envelope returned by preview, upload, commit, and push endpoints. Matches the InventoryFeedRevisionSchema contract.
Show child attributes
Show child attributes
Signed preview baseline. Pass it back unchanged to POST /feed/commit.
Show child attributes
Show child attributes