Canto product_catalog_products API
The product_catalog_products API from Canto — 2 operation(s) for product_catalog_products.
The product_catalog_products API from Canto — 2 operation(s) for product_catalog_products.
openapi: 3.0.1
info:
title: Canto PIM bulk_products_catalogs product_catalog_products API
description: "\n[Canto APIs](https://api.canto.com) enable seamless synchronization between the PIM + DAM and external systems that rely on accurate, up-to-date product content. \nThe API outlined here provides programmatic access to Canto’s Product Hub (PIM). The Product Hub API allows authorized systems to create, retrieve, update, and manage rich product data for use across digital channels, e-commerce platforms, and other target or source systems. \n \n<b>Key Capabilities</b><br />\nThe Canto Product Hub API enables full product data management:\n1. Product Record Management: Create, read, update, and delete product entries including structured metadata, taxonomy, categories, and references.\n2. Attribute & Schema Configuration: Access and manage custom product attributes and classification structures\n3. Webhooks: Trigger updates or publish product datasets to downstream systems and integration pipelines.\n \n<b>API Design</b>\n- The PIM API adheres to <b>RESTful principles</b>, supporting standard HTTP methods (GET, POST, PUT, PATCH, DELETE).\n- JSON is the default payload format for both requests and responses.\n\n<b>HTTP Status Code Conventions</b><br />\nBelow are general HTTP codes applicable across most endpoints:<br />\n- <b>200, 201, 204</b> – Successful operations (retrieval, creation, update, deletion).\n- <b>400</b> – Bad request. Input payloads did not conform to the expected schema or required parameters were missing.\n- <b>401 / 403</b> – Authentication or authorization failed.\n- <b>404</b> – The route or resource was not found.\n- <b>409</b> – Conflict in resource state (e.g., duplicate product identifier).\n- <b>429</b> - Too many requests. See Rate Limits below.\n- <b>500</b> – An unexpected server error occurred.\n- <b>502 / 503 / 504</b> – Infrastructure issues such as load balancer, service unavailability, or timeouts.\n\n<b>API Rate Limits</b><br />\nRate limits are how many API calls you can make in a given time frame. If your call exceeds the pre-defined rate limit, you will run into a “429” http error-code. After which, you will need to wait until you can make another API call.\n\n<b>PIM API Rate Limit:</b> 5 requests/second\n"
version: v1.0.1
servers:
- url: https://{tenantSubdomain}.{region}/api/v1/pim/
variables:
tenantSubdomain:
default: demo
region:
enum:
- canto.com
- canto.global
- canto.de
- au.canto.com
- ca.canto.com
default: canto.com
security:
- bearerAuth: []
tags:
- name: product_catalog_products
paths:
/product_catalogs/{product_catalog_id}/products:
get:
tags:
- product_catalog_products
summary: Get Product Catalog Products
description: ' Retrieve all products within a specific catalog
'
operationId: get_api_v1_product_catalogs_product_catalog_id_products
parameters:
- name: product_catalog_id
in: path
required: true
schema:
type: number
responses:
'200':
description: Successfully fetched Products
headers:
page-items:
description: Number of items per page
schema:
type: integer
link:
description: Standard link header defined in RFC 8228. Contains links for first, last, next, and prev pages with respective `rel` attributes
schema:
type: string
current-page:
description: Current page number
schema:
type: integer
total-count:
description: Total number of items
schema:
type: integer
total-pages:
description: Total number of pages
schema:
type: integer
content:
'*/*':
schema:
type: object
properties:
products:
type: array
description: Array of Products in this Catalog, paginated
items:
type: string
additionalProperties: false
'400':
description: The request parameters were invalid
content: {}
'401':
description: User is not permitted to use the API or Authentication is invalid
content: {}
'404':
description: Product Catalog ID not found
content: {}
'500':
description: Something went wrong
content: {}
post:
tags:
- product_catalog_products
summary: Add Product to Product Catalog
description: ' Add a single product to a specific catalog
'
operationId: post_api_v1_product_catalogs_product_catalog_id_products
parameters:
- name: product_catalog_id
in: path
required: true
schema:
type: number
requestBody:
content:
application/json:
schema:
required:
- product_id
type: object
properties:
product_id:
type: integer
description: Product ID to add to the catalog
example: 1
example:
product_id: 1
required: true
responses:
'200':
description: Successfully added the product to the catalog
headers:
page-items:
description: Number of items per page
schema:
type: integer
link:
description: Standard link header defined in RFC 8228. Contains links for first, last, next, and prev pages with respective `rel` attributes
schema:
type: string
current-page:
description: Current page number
schema:
type: integer
total-count:
description: Total number of items
schema:
type: integer
total-pages:
description: Total number of pages
schema:
type: integer
content:
'*/*':
schema:
type: object
properties:
products:
type: array
description: Array of Products in this Catalog, paginated
items:
type: string
additionalProperties: false
'400':
description: The request parameters were invalid
content: {}
'401':
description: User is not permitted to use the API or Authentication is invalid
content: {}
'404':
description: Product or Product Catalog ID not found
content: {}
'422':
description: There was an error adding the product to the catalog
content: {}
'500':
description: Something went wrong
content: {}
/product_catalogs/{product_catalog_id}/products/{id}:
get:
tags:
- product_catalog_products
summary: Get Product Catalog Product
description: ' Get a specific product from a catalog by ID
'
operationId: get_api_v1_product_catalogs_product_catalog_id_products_id
parameters:
- name: product_catalog_id
in: path
required: true
schema:
type: number
- name: id
in: path
required: true
schema:
type: number
- name: include_share_link
in: query
description: 'Include Share Link URL in response TODO: still defining'
schema:
type: boolean
responses:
'200':
description: Successfully fetched Product
content:
'*/*':
schema:
required:
- created_at
- id
- product_assets
- product_custom_attributes
- updated_at
- user_id
- variants
type: object
properties:
id:
type: number
description: Product ID
product_category_id:
type: number
description: Product Category ID
product_type_id:
type: number
description: Product Type ID
has_variants:
type: boolean
description: Whether there are variants associated with this product
dimension1_id:
type: number
description: Primary Dimension ID
dimension2_id:
type: number
description: Secondary Dimension ID
dimension3_id:
type: number
description: Tertiary Dimension ID
created_at:
type: string
description: Created At
updated_at:
type: string
description: Updated At
user_id:
type: string
description: User ID of the Product creator
product_custom_attributes:
type: array
description: Array of product attributes' data. On Products Index, this is only General Attributes data
items:
type: string
variants:
type: array
description: Array of Product's Variants
items:
type: string
product_assets:
type: array
description: Array of product assets
items:
type: string
additionalProperties: false
'400':
description: The request parameters were invalid
content: {}
'401':
description: User is not permitted to use the API or Authentication is invalid
content: {}
'404':
description: Product Catalog or Product ID not found
content: {}
'500':
description: Something went wrong
content: {}
delete:
tags:
- product_catalog_products
summary: Remove Product from Product Catalog
description: ' Remove a specific product from a catalog by ID
'
operationId: delete_api_v1_product_catalogs_product_catalog_id_products_id
parameters:
- name: product_catalog_id
in: path
required: true
schema:
type: number
- name: id
in: path
required: true
description: Product ID
schema:
type: number
responses:
'204':
description: Successfully removed the product from the catalog
content: {}
'400':
description: The request parameters were invalid
content: {}
'401':
description: User is not permitted to use the API or Authentication is invalid
content: {}
'404':
description: Product or Product Catalog ID not found
content: {}
'422':
description: There was an error removing the product from the catalog
content: {}
'500':
description: Something went wrong
content: {}
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: AccessToken
x-original-swagger-version: '2.0'