Canto product_catalog_products API

The product_catalog_products API from Canto — 2 operation(s) for product_catalog_products.

OpenAPI Specification

canto-product-catalog-products-api-openapi.yml Raw ↑
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'