Constructor Catalog Management API
Authenticated catalog surface for creating, replacing, updating and deleting items, variations, item groups and full catalog files, plus item field statistics and asynchronous task tracking.
Authenticated catalog surface for creating, replacing, updating and deleting items, variations, item groups and full catalog files, plus item field statistics and asynchronous task tracking.
openapi: 3.1.0
info:
contact:
email: support@constructor.io
title: Catalog management
version: '0.1'
servers:
- url: https://ac.cnstrc.com
security: []
tags:
- name: Catalog
- name: Item groups
- name: Items
- name: Item statistics
- name: Variations
- name: Tasks
paths:
/v1/catalog:
put:
tags:
- Catalog
operationId: v1-catalog-create-or-replace-catalog
summary: Create or replace catalog
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`, `search_suggestions(w)`.
Replace the current catalog using one of two modes: **Full mode** (`mode=full`, default): Send full catalog files to replace the current catalog. You may upload up to three [files](https://docs.constructor.com/docs/integrating-with-constructor-product-catalog-catalog-files-via-http-or-ftps-catalog-file-upload-step-by-step-guide) in the form data under the following keys: `items`, `variations`, `item_groups`. If you do not wish to replace one of these types of resources then omit it from the request. Any records that already exist will be deleted and replaced with the records you provide in the files. **IDs mode** (`mode=ids`): Send files containing only the IDs of records to keep. Files should contain only an `id` column (CSV) or `id` field (JSONL). All records whose IDs are not present in the uploaded files will be deleted from the catalog. Returns an identifier for a background [task](https://docs.constructor.com/reference/v1-tasks-retrieve-task).'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema:
title: Section
description: The section of the index to use. Defaults to `Products`.
maxLength: 100
minLength: 1
examples:
- Products
- Search Suggestions
type: string
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
- name: force
in: query
schema:
title: Force
description: A flag to process the catalog even if it will invalidate a large part of existing data. By default, operations that would invalidate more than 50% of existing data are blocked unless `force=true` is used. Defaults to `False`.
default: false
examples:
- false
- true
type: boolean
required: false
- name: notification_email
in: query
schema:
title: Notification Email
description: The email address(es) to send a notification to if the task fails. Multiple addresses may be specified for multiple recipients.
type: array
items:
type: string
format: email
examples:
- user@example.com
required: false
- name: format
in: query
schema:
description: File format of the uploaded items and variations files. Can be either `csv` or `jsonl`.
default: csv
examples:
- csv
- jsonl
allOf:
- $ref: '#/components/schemas/FileFormat'
required: false
- name: mode
in: query
schema:
description: 'Mode for catalog upload: `full` (default, send complete catalog files) or `ids` (send ID-only files to keep specific records, others will be removed).'
default: full
examples:
- full
- ids
allOf:
- $ref: '#/components/schemas/CatalogMode'
required: false
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/CatalogPutRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogPutResponse'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogPutAcceptedResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
- search_suggestions(w)
patch:
tags:
- Catalog
operationId: v1-catalog-update-catalog
summary: Update catalog
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`, `search_suggestions(w)`.
Send delta catalog files to replace the current catalog. You may upload up to three [files](https://docs.constructor.com/docs/integrating-with-constructor-product-catalog-catalog-files-via-http-or-ftps-catalog-file-upload-step-by-step-guide) in the form data under the following keys: `items`, `variations`, `item_groups`. If you do not wish to replace one of these types of resources then omit it from the request. Any records that already exist will be deleted and replaced with the records you provide in the files. Returns an identifier for a background [task](https://docs.constructor.com/reference/v1-tasks-retrieve-task).'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema:
title: Section
description: The section of the index to use. Defaults to `Products`.
maxLength: 100
minLength: 1
examples:
- Products
- Search Suggestions
type: string
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
- name: force
in: query
schema:
title: Force
description: A flag to process the catalog even if it will invalidate a large part of existing data. By default, operations that would invalidate more than 50% of existing data are blocked unless `force=true` is used. Defaults to `False`.
default: false
examples:
- false
- true
type: boolean
required: false
- name: notification_email
in: query
schema:
title: Notification Email
description: The email address(es) to send a notification to if the task fails. Multiple addresses may be specified for multiple recipients.
type: array
items:
type: string
format: email
examples:
- user@example.com
required: false
- name: patch_delta
in: query
schema:
title: Patch Delta
description: A flag to process updates as partial updates, meaning only provided fields will be updated in database. Fields not included in the upload or which are blank for a particular item will be ignored.
default: false
examples:
- false
- true
type: boolean
required: false
- name: on_missing
in: query
schema:
description: The strategy used to handle items that exist in the file and do not exist in the index. `IGNORE` silently ignores them and does not add them to the index, `CREATE` creates them, `FAIL` fails the ingestion. Can be set only when `patch_delta` is `true`. Default is `FAIL`.
examples:
- IGNORE
- CREATE
- FAIL
allOf:
- $ref: '#/components/schemas/MissingRecordsStrategy'
required: false
- name: format
in: query
schema:
description: File format of the uploaded items and variations files. Can be either `csv` or `jsonl`.
default: csv
examples:
- csv
- jsonl
allOf:
- $ref: '#/components/schemas/FileFormat'
required: false
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/CatalogPatchRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogPatchResponse'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogPatchAcceptedResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
- search_suggestions(w)
/v2/item_groups:
get:
tags:
- Item groups
operationId: v2-item-groups-retrieve-item-groups
summary: Retrieve item groups
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(r)`.
Retrieve all items groups, optionally filtered by ids.'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: id
in: query
schema:
title: Id
description: Array of item group ID(s) to filter by.
type: array
items:
type: string
minLength: 1
maxLength: 250
maxItems: 1000
required: false
- name: num_results_per_page
in: query
schema:
title: Num Results Per Page
description: The number of results per page to return.
default: 20
minimum: 1
maximum: 100
examples:
- 20
- 50
type: integer
required: false
- name: page
in: query
schema:
title: Page
description: The page of results to return.
minimum: 1
examples:
- 1
- 2
type: integer
required: false
- name: offset
in: query
schema:
title: Offset
description: The number of results to skip from the beginning. Cannot be used together with `page`.
minimum: 0
examples:
- 0
- 100
type: integer
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListGetResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(r)
put:
tags:
- Item groups
operationId: v2-item-groups-create-or-replace-item-groups
summary: Create or replace item groups
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Create item groups or replace the data of existing item groups. Returns an identifier for a background [task](/reference/v1-tasks-retrieve-task).'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
- name: force
in: query
schema:
title: Force
description: A flag to process the catalog even if it will invalidate a large part of existing data. Defaults to `False`.
examples:
- false
- true
type: boolean
required: false
- name: notification_email
in: query
schema:
title: Notification Email
description: The email address(es) to send a notification to if the task fails. Multiple addresses may be specified for multiple recipients.
type: array
items:
type: string
format: email
examples:
- user@example.com
required: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListPutRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListPutResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'409':
description: Conflict
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
patch:
tags:
- Item groups
operationId: v2-item-groups-update-item-groups
summary: Update item groups
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Update existing item groups data. Data included in the request will be merged with data of the existing items groups. Returns an identifier for a background [task](/reference/v1-tasks-retrieve-task).'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
- name: force
in: query
schema:
title: Force
description: A flag to process the catalog even if it will invalidate a large part of existing data. Defaults to `False`.
examples:
- false
- true
type: boolean
required: false
- name: notification_email
in: query
schema:
title: Notification Email
description: The email address(es) to send a notification to if the task fails. Multiple addresses may be specified for multiple recipients.
type: array
items:
type: string
format: email
examples:
- user@example.com
required: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListPatchRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListPatchResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'409':
description: Conflict
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
delete:
tags:
- Item groups
operationId: v2-item-groups-delete-item-groups
summary: Delete item groups
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Delete item groups. Returns an identifier for a background [task](/reference/v1-tasks-retrieve-task).'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
- name: force
in: query
schema:
title: Force
description: A flag to process the catalog even if it will invalidate a large part of existing data. Defaults to `False`.
examples:
- false
- true
type: boolean
required: false
- name: notification_email
in: query
schema:
title: Notification Email
description: The email address(es) to send a notification to if the task fails. Multiple addresses may be specified for multiple recipients.
type: array
items:
type: string
format: email
examples:
- user@example.com
required: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListDeleteRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsListDeleteResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'409':
description: Conflict
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
/v2/item_groups/{item_group_id}:
get:
tags:
- Item groups
operationId: v2-item-groups-retrieve-item-group
summary: Retrieve item group
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(r)`.
Retrieve an item group.'
parameters:
- name: item_group_id
in: path
required: true
schema:
type: string
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupsGetResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'404':
description: Not Found
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(r)
/v1/item_groups:
get:
deprecated: true
tags:
- Item groups
operationId: v1-item-groups-retrieve-item-groups
summary: Retrieve item groups (Deprecated)
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(r)`.
Retrieve all item groups.'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema:
title: Section
description: The section of the index to use. Defaults to `Products`.
maxLength: 100
minLength: 1
examples:
- Products
- Search Suggestions
type: string
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListGetResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(r)
post:
deprecated: true
tags:
- Item groups
operationId: v1-item-groups-create-item-groups
summary: Create new item groups (Deprecated)
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Create new item groups. If the item groups already exist, they will be skipped..'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema:
title: Section
description: The section of the index to use. Defaults to `Products`.
maxLength: 100
minLength: 1
examples:
- Products
- Search Suggestions
type: string
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPostRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPostResponse'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPostResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
put:
deprecated: true
tags:
- Item groups
operationId: v1-item-groups-create-or-replace-item-groups
summary: Create or replace item groups (Deprecated)
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Update item groups. If the item groups already exist, they will be updated. If not, they will be created. Existing item groups not sent in the request will be deleted.'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema:
title: Section
description: The section of the index to use. Defaults to `Products`.
maxLength: 100
minLength: 1
examples:
- Products
- Search Suggestions
type: string
required: false
- name: c
in: query
schema:
title: C
description: The ID of the client and version that the request is coming from, such as `cio-js-2.90`.
maxLength: 100
minLength: 1
examples:
- cio-js-2.90
- cio-ios-1.0
type: string
required: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPutRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPutResponse'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ItemGroupListPutResponse'
'400':
description: Validation Error
'401':
description: Credentials are not passed or action is forbidden.
'403':
description: The supplied token does not have the required permissions.
'429':
description: Rate limit breached
security:
- http_basic_auth: []
- http_bearer_auth:
- catalog(w)
patch:
deprecated: true
tags:
- Item groups
operationId: v1-item-groups-create-or-update-item-groups
summary: Create or update item groups (Deprecated)
description: '**๐ This endpoint requires [HTTP authentication](https://docs.constructor.com/reference/main-authentication) (either [Basic](https://docs.constructor.com/reference/main-authentication#basic-authentication) or [Bearer](https://docs.constructor.com/reference/main-authentication#bearer-authentication)).**
For authenticating with Bearer token, required scopes are: `catalog(w)`.
Update item groups. If the item groups already exist, they will be updated. If not, they will be created.'
parameters:
- name: key
in: query
schema:
title: Key
description: The key of the index to use.
maxLength: 100
minLength: 1
examples:
- key_K2pX7vBnU0bgA5xp
type: string
required: true
- name: section
in: query
schema
# --- truncated at 32 KB (162 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/constructorio/refs/heads/main/openapi/constructorio-catalog-management-openapi.yml