openapi: 3.2.0
info:
title: Talon One Catalogs API
version: ''
description: 'Operations tagged Catalogs across 2 of this provider''s published API definitions: talon-one-integration-api-openapi.yml, talon-one-management-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://yourbaseurl.talon.one
tags:
- name: Catalogs
description: 'Represents a catalog of cart items with unique SKUs. Cart item catalogs allow you to synchronize your entire inventory with Talon.One.
See the [docs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs).
'
paths:
/v1/best_prior_price:
post:
operationId: bestPriorPrice
summary: Fetch best prior price
x-scalar-stability: experimental
description: 'Returns the best prior price based on historical pricing data for the specified SKUs within a defined timeframe.
'
tags:
- Catalogs
requestBody:
$ref: '#/components/requestBodies/BestPriorPrice'
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/BestPriorPriceResponse'
security:
- api_key_v1: []
servers:
- url: https://yourbaseurl.talon.one
/v1/catalogs/{catalogId}/sync:
put:
operationId: syncCatalog
summary: Sync cart item catalog
description: "Perform the following actions for a given cart item catalog:\n\n- Add an item to the catalog.\n- Add multiple items to the catalog.\n- Update the attributes of an item in the catalog.\n- Update the attributes of multiple items in the catalog.\n- Remove an item from the catalog.\n- Remove multiple items from the catalog.\n\nYou can either add, update, or delete up to 1000 cart items in a single\nrequest. Each item synced to a catalog must have a unique `SKU`.\n\n> [!important] You can perform only one type of action in a single sync\nrequest. Syncing items with duplicate `SKU` values in a single request\nreturns an error message with a `400` status code.\n\nFor more information, read [managing cart item\ncatalogs](https://docs.talon.one/docs/product/account/dev-tools/managing-cart-item-catalogs).\n\n### Filtering cart items\n\nUse [cart item attributes](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes)\nto filter items and select the ones you want to edit or delete when editing\nor deleting more than one item at a time.\n\nThe `filters` array contains an object with the following properties:\n\n- `attr`: A [cart item attribute](https://docs.talon.one/docs/product/account/dev-tools/managing-attributes)\n connected to the catalog. It is applied to all items in the catalog.\n- `op`: The filtering operator indicating the relationship between the value\n of each cart item in the catalog and the value of the `value` property for the attribute selected\n in `attr`.\n\n The value of `op` can be one of the following:\n\n - `EQ`: Equal to `value`\n - `LT`: Less than `value`\n - `LE`: Less than or equal to `value`\n - `GT`: Greater than `value`\n - `GE`: Greater than or equal to `value`\n - `IN`: One of the comma-separated values that `value` is set to.\n\n **Note:** `GE`, `LE`, `GT`, `LT` are for numeric values only.\n- `value`: The value of the attribute selected in `attr`.\n\n### Payload examples\n\nSynchronization actions are sent as `PUT` requests. See the structure for\neach action:\n\n\n Adding an item to the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"attributes\": {\n \"color\": \"Navy blue\",\n \"type\": \"shoes\"\n },\n \"replaceIfExists\": true,\n \"sku\": \"SKU1241028\",\n \"price\": 100,\n \"product\": {\n \"name\": \"sneakers\"\n }\n },\n \"type\": \"ADD\"\n }\n ]\n }\n ```\n
\n \n\n\n Adding multiple items to the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"attributes\": {\n \"color\": \"Navy blue\",\n \"type\": \"shoes\"\n },\n \"replaceIfExists\": true,\n \"sku\": \"SKU1241027\",\n \"price\": 100,\n \"product\": {\n \"name\": \"sneakers\"\n }\n },\n \"type\": \"ADD\"\n },\n {\n \"payload\": {\n \"attributes\": {\n \"color\": \"Navy blue\",\n \"type\": \"shoes\"\n },\n \"replaceIfExists\": true,\n \"sku\": \"SKU1241028\",\n \"price\": 100,\n \"product\": {\n \"name\": \"sneakers\"\n }\n },\n \"type\": \"ADD\"\n }\n ]\n }\n ```\n
\n \n\n\n Updating the attributes of an item in the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"attributes\": {\n \"age\": 11,\n \"origin\": \"germany\"\n },\n \"createIfNotExists\": false,\n \"sku\": \"SKU1241028\",\n \"product\": {\n \"name\": \"sneakers\"\n }\n },\n \"type\": \"PATCH\"\n }\n ]\n }\n ```\n
\n \n\n\n Updating the attributes of multiple items in the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"attributes\": {\n \"color\": \"red\"\n },\n \"filters\": [\n {\n \"attr\": \"color\",\n \"op\": \"EQ\",\n \"value\": \"blue\"\n }\n ]\n },\n \"type\": \"PATCH_MANY\"\n }\n ]\n }\n ```\n\n
\n \n\n\n Removing an item from the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"sku\": \"SKU1241028\"\n },\n \"type\": \"REMOVE\"\n }\n ]\n }\n ```\n\n
\n \n\n\n Removing multiple items from the catalog
\n \n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"filters\": [\n {\n \"attr\": \"color\",\n \"op\": \"EQ\",\n \"value\": \"blue\"\n }\n ]\n },\n \"type\": \"REMOVE_MANY\"\n }\n ]\n }\n ```\n
\n \n\n\n Removing shoes of sizes above 45 from the catalog
\n \n
\n Let's imagine that we have a shoe store and we have decided to stop selling\n shoes larger than size 45. We can remove from the catalog all the shoes of sizes above 45\n with a single action:
\n\n ```json\n {\n \"actions\": [\n {\n \"payload\": {\n \"filters\": [\n {\n \"attr\": \"size\",\n \"op\": \"GT\",\n \"value\": \"45\"\n }\n ]\n },\n \"type\": \"REMOVE_MANY\"\n }\n ]\n }\n ```\n
\n \n"
tags:
- Catalogs
security:
- api_key_v1: []
parameters:
- name: catalogId
description: The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**.
example: 30
in: path
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogSyncRequest'
description: body
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Catalog'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized - Invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithStatus'
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/price_history:
post:
operationId: priceHistory
summary: Get summary of price history
x-scalar-stability: experimental
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Fetch the historical price data for a given SKU within a defined timeframe.
'
tags:
- Catalogs
parameters:
- $ref: '#/components/parameters/applicationId'
requestBody:
$ref: '#/components/requestBodies/PriceHistory'
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/PriceHistoryResponse'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/applications/{applicationId}/price_history/exclusions:
post:
operationId: excludePriceHistory
summary: Exclude price records from price history
x-scalar-stability: experimental
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Select a batch of historical price IDs to exclude from [best prior price calculation](https://docs.talon.one/integration-api#tag/Catalogs/operation/bestPriorPrice). All IDs in the batch must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, must not already be excluded from best prior price calculation, and must not be associated with a scheduled strikethrough pricing notification.
'
tags:
- Catalogs
parameters:
- $ref: '#/components/parameters/applicationId'
requestBody:
$ref: '#/components/requestBodies/ExcludePriceObservations'
responses:
'200':
description: Ok
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
/v1/catalogs/{catalogId}/items:
get:
operationId: listCatalogItems
summary: List items in a catalog
description: '> [!note] Management API endpoints are **not** meant to be used in real-time integrations that directly serve your end users. Rate limit: 3 requests per second.
Return a paginated list of cart items in the given catalog.
'
tags:
- Catalogs
parameters:
- name: catalogId
description: The ID of the catalog. You can find the ID in the Campaign Manager in **Account** > **Tools** > **Cart item catalogs**.
example: 30
in: path
required: true
schema:
type: integer
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/skip'
- name: withTotalResultSize
in: query
description: 'When this flag is set, the result includes the total number of results for this query. This might decrease performance on large data sets.
- When `true`: `totalResultSize` contains the total number of results for this query.
- When `false`: Only `hasMore` is returned, and it is set to `true` when there are more results than shown on the page.
'
example: false
schema:
type: boolean
- name: sku
in: query
description: Filter results by one or more SKUs. Must be exact match.
example:
- SKU-1
- SKU-2
style: form
schema:
type: array
items:
type: string
- name: productNames
in: query
description: Filter results by one or more product names. Must be exact match.
example:
- product1
- product2
style: form
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
hasMore:
type: boolean
totalResultSize:
type: integer
example: 1
data:
type: array
items:
$ref: '#/components/schemas/CatalogItem'
security:
- manager_auth: []
- management_key: []
servers:
- url: https://yourbaseurl.talon.one
components:
schemas:
RemoveItemCatalogAction:
type: object
description: The specific properties of the "REMOVE" catalog sync action.
required:
- sku
properties:
sku:
type: string
description: The unique SKU of the item to remove.
ErrorResponse:
type: object
required:
- message
properties:
message:
type: string
description: A message describing the error.
errors:
type: array
description: An array of individual problems encountered during the request.
items:
$ref: '#/components/schemas/APIError'
AccountEntity:
type: object
required:
- accountId
properties:
accountId:
type: integer
description: The ID of the account that owns this entity.
example: 3886
PatchItemCatalogAction:
type: object
description: "The specific properties of the \"PATCH\" catalog sync action.\n\n**Note:**\n - If you do not provide a new `price` value, the existing `price` value is retained.\n - If you do not provide a new `product` value, the `product` value is set to `null`.\n"
required:
- sku
properties:
sku:
type: string
description: The unique SKU of the item to patch.
price:
type: number
description: Price of the item.
example: 99.99
attributes:
type: object
description: The attributes of the item to patch.
product:
$ref: '#/components/schemas/Product'
createIfNotExists:
type: boolean
default: false
description: Indicates whether to create an item if the SKU does not exist.
Entity:
type: object
required:
- id
- created
properties:
id:
type: integer
description: The internal ID of this entity.
example: 6
created:
type: string
format: date-time
description: The time this entity was created.
example: '2020-06-10T09:05:27.993483Z'
NewPriceAdjustment:
type: object
required:
- priceType
- referenceId
properties:
priceType:
type: string
description: The price type (e.g. the price for members only) to apply to a given SKU.
example: member
price:
type:
- number
- 'null'
description: The value of the price type applied to the SKU. When set to `null`, the defined price type no longer applies to the SKU.
example: 100
referenceId:
type: string
description: A unique reference identifier, e.g. a UUID.
example: 68851723-e6fa-488f-ace9-112581e6c19b
minLength: 1
calculatedAt:
type: string
format: date-time
description: The time at which this price was calculated. If provided, this is used to determine the most recent price adjustment to choose if price adjustments overlap. Defaults to internal creation time if not provided.
example: '2021-09-12T10:12:42Z'
effectiveFrom:
type: string
format: date-time
description: The date and time from which the price adjustment is effective.
example: '2021-09-12T10:12:42Z'
effectiveUntil:
type: string
format: date-time
description: The date and time until which the price adjustment is effective.
example: '2021-09-12T10:12:42Z'
contextId:
type: string
description: Identifier of the context of this price adjustment (e.g. summer sale).
example: Summer2025
CatalogSyncRequest:
type: object
required:
- actions
properties:
actions:
type: array
maxItems: 1000
minItems: 1
items:
$ref: '#/components/schemas/CatalogAction'
version:
type: integer
minimum: 1
description: The version number of the catalog to apply the actions on.
example: 244
AudienceReference:
allOf:
- type: object
required:
- id
properties:
id:
type: integer
description: The ID of the audience.
integration:
type: string
description: The third-party integration of the audience.
- $ref: '#/components/schemas/AudienceIntegrationID'
MutableEntity:
type: object
required:
- modified
properties:
modified:
type: string
format: date-time
description: The time this entity was last modified.
example: '2021-09-12T10:12:42Z'
CatalogAction:
type: object
description: Definition of all the properties that are needed for a single catalog sync action.
required:
- type
- payload
oneOf:
- properties:
type:
const: ADD
description: The type of sync action.
payload:
$ref: '#/components/schemas/AddItemCatalogAction'
description: The payload of sync action.
required:
- type
- payload
example:
type: ADD
payload:
sku: T123
attributes:
type: shoes
color: blue
replaceIfExists: true
- properties:
type:
const: PATCH
payload:
$ref: '#/components/schemas/PatchItemCatalogAction'
required:
- type
- payload
- properties:
type:
const: PATCH_MANY
payload:
$ref: '#/components/schemas/PatchManyItemsCatalogAction'
required:
- type
- payload
- properties:
type:
const: REMOVE
payload:
$ref: '#/components/schemas/RemoveItemCatalogAction'
required:
- type
- payload
- properties:
type:
const: REMOVE_MANY
payload:
$ref: '#/components/schemas/RemoveManyItemsCatalogAction'
required:
- type
- payload
- properties:
type:
const: ADD_PRICE_ADJUSTMENT
payload:
$ref: '#/components/schemas/AddPriceAdjustmentCatalogAction'
required:
- type
- payload
PatchManyItemsCatalogAction:
type: object
description: The specific properties of the "PATCH_MANY" catalog sync action.
properties:
price:
type: number
description: Price of the item.
example: 99.99
filters:
type: array
items:
$ref: '#/components/schemas/CatalogActionFilter'
description: 'The list of filters used to select the items to patch, joined by `AND`.
**Note:** Every item in the catalog will be modified if there are no filters.
'
attributes:
type: object
description: The attributes of the items to patch.
BestPriorPrice:
type: object
required:
- id
- sku
- observedAt
- price
- contextIds
- metadata
- target
properties:
id:
type: integer
description: The ID of the historical price.
example: 1
sku:
type: string
description: sku
example: SKU7345278
observedAt:
type: string
format: date-time
description: The date and time when the price was observed.
example: '2025-11-10T23:00:00Z'
contextIds:
type: array
items:
type: string
description: 'The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price.
'
example:
- SpringSale
- SummerSale2025
contextId:
type: string
deprecated: true
default: ''
description: 'This property is **deprecated**. Use `contextIds` instead. Defaults to an empty string.
'
example: ''
price:
type: number
description: Price of the item.
example: 99.99
metadata:
$ref: '#/components/schemas/BestPriorPriceMetadata'
target:
$ref: '#/components/schemas/LabelTarget'
BestPriorPriceMetadata:
type: object
description: Auxiliary data for found price observation.
properties:
influencingCampaignDetails:
type: array
description: Details about campaigns that influenced the final price.
items:
$ref: '#/components/schemas/InfluencingCampaignDetails'
adjustmentDetails:
$ref: '#/components/schemas/AdjustmentDetails'
type: object
description: Details about the applied price adjustment.
required:
- influencingCampaignDetails
RemoveManyItemsCatalogAction:
type: object
description: The specific properties of the "REMOVE_MANY" catalog sync action.
properties:
filters:
type: array
items:
$ref: '#/components/schemas/CatalogActionFilter'
description: 'The list of filters used to select the items to patch, joined by `AND`.
**Note:** Every item in the catalog will be removed if there are no filters.
'
Catalog:
allOf:
- $ref: '#/components/schemas/Entity'
- $ref: '#/components/schemas/AccountEntity'
- $ref: '#/components/schemas/MutableEntity'
- $ref: '#/components/schemas/NewCatalog'
- type: object
required:
- version
- createdBy
properties:
version:
type: integer
description: The current version of this catalog.
example: 6
createdBy:
type: integer
description: The ID of user who created this catalog.
example: 6
ErrorResponseWithStatus:
type: object
properties:
message:
type: string
errors:
type: array
description: An array of individual problems encountered during the request.
items:
$ref: '#/components/schemas/APIError'
StatusCode:
type: integer
description: The error code
AudienceIntegrationID:
type: object
properties:
integrationId:
type: string
minLength: 1
maxLength: 1000
description: The ID of this audience in the third-party integration.
example: 382370BKDB946
LabelTargetNone:
type: object
description: Represents the target type when no entity is selected.
properties:
type:
type: string
enum:
- NONE
required:
- type
CatalogActionFilter:
type: object
description: The properties for a single filtering condition in a catalog sync action.
required:
- attr
- op
- value
properties:
attr:
description: The name of the attribute to filter on.
type: string
op:
description: The filtering operator.
type: string
enum:
- EQ
- LT
- LE
- GT
- GE
- IN
value:
description: The value to filter for.
BestPriorPriceRequest:
type: object
required:
- skus
- timeframeEndDate
- timeframe
- timeframeEndDateType
properties:
skus:
type: array
minItems: 1
description: List of product SKUs to check when determining the best prior price.
items:
type: string
example:
- SKU1241028
- SKU7345278
timeframeEndDate:
type: string
format: date-time
description: The end date and time that defines the latest time for retrieving historical SKU prices.
example: '2020-11-10T23:00:00Z'
timeframe:
type: string
description: The number of days prior to the timeframeEndDate. Only prices within this look back period are considered for the best prior price evaluation.
example: '30'
timeframeEndDateType:
type: string
enum:
- strict
- price
- sale
description: 'Sets the timeframe for retrieving historical pricing data. Can be one of the following values:
- `strict`: The timeframe ends at the `timeframeEndDate` value.
- `price`: The timeframe ends at the start of current price value and takes the prices prior to the start of the current price value into account.
- `sale`: The timeframe ends at the start of current `contextId` and takes the prices prior to the start of the `contextId` into account.
'
example: sale
target:
$ref: '#/components/schemas/BestPriorTarget'
LabelTarget:
type: object
oneOf:
- $ref: '#/components/schemas/LabelTargetNone'
- $ref: '#/components/schemas/LabelTargetAudience'
NewCatalog:
allOf:
- type: object
required:
- name
- description
properties:
name:
type: string
description: The cart item catalog name.
example: seafood
description:
type: string
description: A description of this cart item catalog.
example: seafood catalog
subscribedApplicationsIds:
type: array
description: A list of the IDs of the applications that are subscribed to this catalog.
example:
- 1
- 2
- 3
items:
type: integer
AddItemCatalogAction:
type: object
description: 'The specific properties of the "ADD" catalog sync action.
'
required:
- sku
properties:
sku:
type: string
description: The unique SKU of the item to add.
example: SKU1241028
price:
type: number
description: Price of the item.
example: 99.99
attributes:
type: object
description: The attributes of the item to add.
example:
origin: germany
color: blue
product:
$ref: '#/components/schemas/Product'
replaceIfExists:
type: boolean
default: false
description: "Indicates whether to replace the attributes of the item if the same SKU exists.\n\n**Note**: When set to `true`:\n - If you do not provide a new `price` value, the existing `price` value is retained.\n - If you do not provide a new `product` value, the `product` value is set to `null`.\n"
example: false
ErrorSource:
type: object
description: 'The source of the current error, exactly one of `pointer`, `parameter` or `line` will be defined.
'
properties:
pointer:
type: string
description: Pointer to the path in the payload that caused this error.
parameter:
type: string
description: Query parameter that caused this error.
line:
type: string
description: Line number in uploaded multipart file that caused this error. 'N/A' if unknown.
resource:
type: string
description: Pointer to the resource that caused this error.
InfluencingCampaignDetails:
type: object
description: Details about a campaign that influenced the final price.
properties:
campaignId:
type: integer
description: Identifier of the campaign that influenced the final price.
discountValue:
type: number
description: Discount value applied by the campaign.
required:
- campaignId
- discountValue
AddPriceAdjustmentCatalogAction:
type: object
description: "The specific properties of the \"ADD_PRICE_ADJUSTMENT\" catalog sync action.\n \n**Note:** You can only use this object if the `Beta` **price types** feature is enabled for your Application.\nTo enable it, contact your Technical Account Manager.\n"
required:
- sku
- adjustments
properties:
sku:
type: string
description: The SKU of the item for which the price is being adjusted.
example: SKU1241028
adjustments:
type: array
description: A list of adjustments to apply to a given item.
items:
$ref: '#/components/schemas/NewPriceAdjustment'
minItems: 1
maxItems: 100
BestPriorPriceResponse:
type: array
items:
$ref: '#/components/schemas/BestPriorPrice'
APIError:
type: object
required:
- source
- title
properties:
title:
type: string
description: Short description of the problem.
details:
type: string
description: Longer description of this specific instance of the problem.
source:
$ref: '#/components/schemas/ErrorSource'
Product:
type: object
description: The specific properties of the product this item belongs to, if available.
required:
- name
properties:
name:
type: string
description: The product the item belongs to.
example: sample_product
AdjustmentDetails:
type: object
description: Details about an applied price adjustment.
properties:
referenceId:
type: string
description: The reference identifier used during an `ADD_PRICE_ADJUSTMENT` action.
example: 68851723-e6fa-488f-ace9-112581e6c19b
selectedPriceType:
type: string
description: The selected price type for the SKU targeted by this effect.
example: member
value:
type: number
description: The value of the applied price adjustment.
required:
- referenceId
- selectedPriceType
- value
LabelTargetAudience:
type: object
description: 'Represents the targeted audience.
'
properties:
type:
type: string
enum:
- AUDIENCE
audience:
$ref: '#/components/schemas/AudienceReference'
required:
- type
- audience
BestPriorTarget:
type: object
required:
- targetType
description: Specifies the target for which the best prior price calculation is taken into consideration.
properties:
targetType:
type: string
enum:
- NONE
- AUDIENCE
description: The type of price target.
example: AUDIENCE
audienceID:
type: integer
description: The AudienceID of an audience. Must be used with "AUDIENCE" target type.
example: 4
CatalogItem:
allOf:
- $ref: '#/components/schemas/Entity'
- type: object
required:
- sku
- catalogid
- version
properties:
sku:
type: string
description: The stock keeping unit of the item.
example: SKU1241028
price:
type: number
description: Price of the item.
example: 99.99
x-fieldType: NullDecimal
catalogid:
type: integer
description: The ID of the catalog the item belongs to.
example: 6
version:
type: integer
minimum: 1
description: The version of the catalog item.
example: 5
attributes:
type: array
items:
$ref: '#/components/schemas/ItemAttribute'
product:
$ref: '#/components/schemas/Product'
ItemAttribute:
allOf:
- type: object
required:
- attributeid
- name
- value
properties:
attributeid:
type: integer
description: The ID of the attribute of the item.
example: 6
name:
type: string
description: The name of the attribute.
value:
description: The value of the attribute.
PriceHistoryResponse:
type: object
required:
- sku
- history
properties:
sku:
type: string
description: The SKU of the item for which historical prices should be retrieved.
example: SKU1241028
history:
type: array
items:
$ref: '#/components/schemas/History'
History:
type: object
required:
- id
- observedAt
- price
- contextIds
- metadata
- target
properties:
id:
type: integer
description: The ID of the historical price.
example: 1
observedAt:
type: string
format: date-time
description: The date and time when the price was observed.
example: '2025-11-10T23:00:00Z'
contextIds:
type: array
items:
type: string
description: 'The identifiers of the relevant context at the time the price was observed. Includes the context IDs of any price adjustments and of the campaigns that influenced the final price.
'
example:
- SpringSale
- SummerSale2025
contextId:
type: string
deprecated: true
default: ''
description: 'This property is **deprecated**. Use `contextIds` instead. Defaults to an empty string.
'
example: ''
price:
type: number
description: Price of the item.
example: 99.99
metadata:
$ref: '#/components/schemas/BestPriorPriceMetadata'
target:
$ref: '#/components/schemas/LabelTarget'
excludedAt:
type: string
format: date-time
description: The date and time when the historical price ID was excluded.
example: '2025-11-10T23:00:00Z'
exclusionReason:
type: string
description: The reason for excluding this historical price ID.
example: Incorrect contextID value
ExcludePriceObservationsRequest:
type: object
required:
- ids
- reason
properties:
ids:
description: 'A list of historical price IDs to exclude from best prior price calculation. Must contain between 1 and 1000 IDs. All IDs must be valid `id` values obtained from the [Get summary of price history](https://docs.talon.one/management-api#tag/Catalogs/operation/priceHistory.responses.200.history) endpoint, must belong to the specified Application, and must not already be excluded from best prior price calculation.
'
type: array
items:
type: integer
format: int64
minimum: 1
minItems: 1
uniqueItems: true
maxItems: 1000
reason:
description: 'The reason for excluding these historical price IDs. Applies to all IDs in the batch.
'
type: string
example: Incorrect contextID value.
minLength: 1
PriceHistoryRequest:
type: object
required:
- sku
- endDate
- startDate
properties:
sku:
type: string
description: The SKU of the item for which the historical prices are being retrieved.
example: SKU1241028
startDate:
type: string
format: date-time
description: The start date of the period for which historical prices should be retrieved.
example: '2020-11-10T23:00:00Z'
endDate:
type: string
format: date-time
description: The end date of the period for which historical prices should be retrieved.
example: '2020-12-10T23:00:00Z'
requestBodies:
BestPriorPrice:
content:
application/json:
schema:
$ref: '#/components/schemas/BestPriorPriceRequest'
description: body
required: true
PriceHistory:
content:
application/json:
schema:
$ref: '#/components/schemas/PriceHistoryRequest'
description: body
required: true
ExcludePriceObservations:
content:
application/json:
schema:
$ref: '#/components/schemas/ExcludePriceObservationsRequest'
description: body
required: true
parameters:
applicationId:
name: applicationId
in: path
required: true
description: The ID of the Application. It is displayed in your Talon.One deployment URL.
example: 42
schema:
type: integer
pageSize:
name: pageSize
in: query
required: false
description: The number of items in the response.
example: 1000
schema:
type: integer
minimum: 1
maximum: 1000
default: 1000
skip:
name: skip
in: query
required: false
description: The number of items to skip when paging through large result sets.
example: 100
schema:
type: integer
securitySchemes:
api_key_v1:
type: apiKey
name: Authorization
in: header
description: "To authenticate with the Integration API, generate an API key in the Campaign Manager\nand prefix it with `ApiKey-v1`.\n\nTo generate an API key:\n\n1. Sign in to the Campaign Manager and open the Application of your choice, or create one.\n1. Click **Settings** > **Integration API Keys**.\n1. Click **Create API Key** and give it a name and an expiration date, then click **Create API Key**.\n\n **Tip**: Avoid choosing expiration dates that fall at the end of\n the year or during other high-traffic periods.\n\n\nYou can now use the API key in the HTTP header, prefixing it with `ApiKey-v1`:\n\n```\nAuthorization: ApiKey-v1 dbc644d33aa74d582bd9479c59e16f970fe13bf3\n```\n\nOr use it inside [an SDK](https://docs.talon.one/docs/dev/sdks/overview), for example, with the JAVA SDK:\n\n```\niApi.getApiClient().setApiKeyPrefix(\"ApiKey-v1\");\niApi.getApiClient().setApiKey(\"dbc644d33aa74d582bd9479c59e16f970fe13bf3\");\n```\n"
manager_auth:
type: apiKey
name: Authorization
in: header
description: 'This authentication scheme relies on a bearer token that you can use to
access all the endpoints of the Management API.
To create the token:
1. Get a bearer token by calling the
[createSession](#tag/Sessions/operation/createSession) endpoint.
1. Use the `token` property of the response in the HTTP header of your
next queries: `Authorization: Bearer $TOKEN`.
A token is valid for 3 months. In accordance with best pratices, use
your generated token for all your API requests. Do **not** regenerate a token for each
request.
> [!note]
> We recommend that you use a [Management API key](https://docs.talon.one/management-api#section/Authentication/management_key)
> instead of a bearer token.
'
management_key:
type: apiKey
name: Authorization
in: header
description: "The API key authentication gives you access to the endpoints selected by\nthe admin who created the key.\n\nUsing an API key is the recommended authentication method.\n\nThe key must be generated by an admin and given to the developer that\nrequires it:\n\n1. Sign in to the Campaign Manager and click **Account** > **Tools** >\n**Management API Keys**.\n1. Click **Create Key** and give it a name.\n1. Set an expiration date.\n **Tip**: Avoid choosing expiration dates that fall at the end of the year or during other high-traffic periods.\n1. Choose the endpoints the key should give access to.\n1. Click **Create Key**.\n1. Share it with your developer.\n\nThe developer can now use the API key in the HTTP header, prefixing it\nwith `ManagementKey-v1`:\n\n```\nAuthorization: ManagementKey-v1 bd9479c59e16f9dbc644d33aa74d58270fe13bf3\n```\n"
x-refined-from:
- talon-one-integration-api-openapi.yml
- talon-one-management-api-openapi.yml