Canto product_channel_templates API

Product Channel Templates define the structure and configuration for importing and exporting product data into and out of Canto PIM.

OpenAPI Specification

canto-product-channel-templates-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Canto PIM bulk_products_catalogs product_channel_templates 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_channel_templates
  description: 'Product Channel Templates define the structure and configuration for importing and exporting product data into and out of Canto PIM.

    '
paths:
  /product_channel_templates:
    get:
      tags:
      - product_channel_templates
      summary: Get Product Channel Templates
      description: '    Retrieve a list of product channel templates with optional filtering

        '
      operationId: get_api_v1_product_channel_templates
      parameters:
      - name: product_channel_id
        in: query
        description: Product Channel ID
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: Type of Product Channel. E.g. "import" or "export"
        required: false
        schema:
          type: string
          enum:
          - import
          - export
      - name: preset_name
        in: query
        description: If you only want to fetch preset templates, include this parameter. This parameter will override the type parameter and return only preset templates associated to the preset with the passed name
        required: false
        schema:
          type: string
          enum:
          - Shopify
      responses:
        '200':
          description: Successfully fetched Product Channel Templates
          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:
                $ref: '#/components/schemas/product_channel_templates_response'
              example:
                product_channel_templates:
                - id: 1
                  name: First Export Template
                  product_channel_id: 1
                  file_name_export_format: Product_Image_[name]_[sku]_[attribute_1].jpg
                  image_export_size: 500px
                  created_at: '2021-01-01T00:00:00.000Z'
                  updated_at: '2021-01-01T00:00:00.000Z'
                - id: 2
                  name: Import Template
                  product_channel_id: 2
                  file_name_export_format: null
                  image_export_size: null
                  created_at: '2021-01-01T00:00:00.000Z'
                  updated_at: '2021-01-01T00:00:00.000Z'
                - id: 3
                  name: Shopify Template
                  product_channel_id: 1
                  file_name_export_format: null
                  image_export_size: null
                  created_at: '2021-01-01T00:00:00.000Z'
                  updated_at: '2021-01-01T00:00:00.000Z'
        '400':
          description: The request was invalid
          content: {}
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '500':
          description: Something went wrong
          content: {}
    post:
      tags:
      - product_channel_templates
      summary: Create Product Channel Template
      description: '    Create a new product channel template

        '
      operationId: post_api_v1_product_channel_templates
      requestBody:
        content:
          application/json:
            schema:
              required:
              - name
              - product_channel_id
              type: object
              properties:
                name:
                  type: string
                  description: Product Channel Template Name
                product_channel_id:
                  type: number
                  description: Product Channel ID
                custom_attribute_mappings:
                  type: array
                  description: Mapping of Channel Template Headers to Product Custom Attributes
                  items:
                    $ref: '#/components/schemas/custom_attribute_mapping'
            example:
              name: New Template
              product_channel_id: 10
              custom_attribute_mappings:
              - name: Name
                product_custom_attribute_id: 17
                required: false
              - name: SKU
                product_custom_attribute_id: 18
                required: true
              - name: Image
                product_custom_attribute_id: 49
                required: false
              - name: Description
                product_custom_attribute_id: 25
                required: false
        required: true
      responses:
        '201':
          description: Successfully created Product Channel Template
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/product_channel_template'
              example:
                id: 8
                name: New Template
                product_channel_id: 10
                file_name_export_format: null
                image_export_size: null
                created_at: '2024-12-11T17:45:22.123Z'
                updated_at: '2024-12-11T17:45:22.123Z'
                custom_attribute_mappings:
                - name: Name
                  product_custom_attribute_id: 17
                  required: false
                - name: SKU
                  product_custom_attribute_id: 18
                  required: true
                - name: Image
                  product_custom_attribute_id: 49
                  required: false
                - name: Description
                  product_custom_attribute_id: 25
                  required: false
        '400':
          description: Invalid request parameters
          content: {}
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '422':
          description: There was an error creating your Product Channel Template. E.g. invalid custom attribute mapping configuration
          content: {}
        '500':
          description: Something went wrong
          content: {}
  /product_channel_templates/{product_channel_template_id}:
    get:
      tags:
      - product_channel_templates
      summary: Get Product Channel Template
      description: '    Retrieve a specific product channel template by ID

        '
      operationId: get_api_v1_product_channel_templates_id
      parameters:
      - name: product_channel_template_id
        in: path
        description: Product Channel Template ID
        required: true
        schema:
          type: number
      responses:
        '200':
          description: Successfully fetched Product Channel Template
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/product_channel_template'
              example:
                id: 7
                name: Export
                product_channel_id: 10
                file_name_export_format: null
                image_export_size: null
                created_at: '2024-12-11T14:14:34.189Z'
                updated_at: '2024-12-11T14:14:34.189Z'
                custom_attribute_mappings:
                - name: Name
                  product_custom_attribute_id: 17
                  required: true
                - name: SKU
                  product_custom_attribute_id: 18
                  required: true
                - name: Image
                  product_custom_attribute_id: 49
                  required: false
                - name: Unmapped Attribute
                  product_custom_attribute_id: null
                  required: false
        '400':
          description: The request was invalid
          content: {}
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '404':
          description: Product Channel Template not found
          content: {}
        '500':
          description: Something went wrong
          content: {}
    put:
      tags:
      - product_channel_templates
      summary: Update Product Channel Template
      description: '    Update an existing product channel template

        '
      operationId: put_api_v1_product_channel_templates_id
      parameters:
      - name: product_channel_template_id
        in: path
        description: Product Channel Template ID
        required: true
        schema:
          type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Product Channel Template Name
                custom_attribute_mappings:
                  type: array
                  description: Mapping of Channel Template Headers to Product Custom Attributes
                  items:
                    $ref: '#/components/schemas/custom_attribute_mapping'
            example:
              name: Updated Template
              custom_attribute_mappings:
              - name: Updated Name
                product_custom_attribute_id: 17
                required: true
              - name: Updated SKU
                product_custom_attribute_id: 18
                required: true
              - name: Updated Image
                product_custom_attribute_id: 49
                required: false
              - name: Updated Description
                product_custom_attribute_id: 25
                required: false
      responses:
        '200':
          description: Successfully updated Product Channel Template
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/product_channel_template'
              example:
                id: 7
                name: Updated Template
                product_channel_id: 10
                file_name_export_format: Product_[name]_[sku].jpg
                image_export_size: null
                created_at: '2024-12-11T14:14:34.189Z'
                updated_at: '2024-12-11T16:30:15.456Z'
                custom_attribute_mappings:
                - name: Updated Name
                  product_custom_attribute_id: 17
                  required: true
                - name: Updated SKU
                  product_custom_attribute_id: 18
                  required: true
                - name: Updated Image
                  product_custom_attribute_id: 49
                  required: false
                - name: Updated Description
                  product_custom_attribute_id: 25
                  required: false
        '400':
          description: The request was invalid
          content: {}
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '404':
          description: Product Channel Template not found
          content: {}
        '422':
          description: There was an error updating your Product Channel Template. E.g. invalid custom attribute mapping configuration
          content: {}
        '500':
          description: Something went wrong
          content: {}
    delete:
      tags:
      - product_channel_templates
      summary: Destroy Product Channel Template
      description: '    Delete an existing product channel template

        '
      operationId: delete_api_v1_product_channel_templates_id
      parameters:
      - name: product_channel_template_id
        in: path
        description: Product Channel Template ID
        required: true
        schema:
          type: number
      responses:
        '204':
          description: Successfully deleted Product Channel Template
          content: {}
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '404':
          description: Product Channel Template ID not found
          content: {}
        '422':
          description: There was an error deleting the Product Channel Template
          content: {}
        '500':
          description: Something went wrong
          content: {}
  /product_channel_templates/{product_channel_template_id}/export:
    post:
      tags:
      - product_channel_templates
      summary: Export Product Channel Template
      description: '    Export products from a specific product channel template.

        '
      operationId: post_api_v1_product_channel_templates_product_channel_template_id_export
      parameters:
      - name: product_channel_template_id
        in: path
        description: Product Channel Template ID
        required: true
        schema:
          type: number
      responses:
        '201':
          description: Your channel tempalte export is being processed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Your channel template export is being processed. You will receive an email when it is complete
                additionalProperties: false
        '401':
          description: User is not permitted to use the API or Authentication is invalid
          content: {}
        '404':
          description: Product Channel Template ID not found
          content: {}
        '422':
          description: A channel template export is already in the works. Please try again later.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: A channel template export is already in the works. Please try again later.
                additionalProperties: false
        '500':
          description: Something went wrong
          content: {}
components:
  schemas:
    product_channel_template:
      required:
      - id
      - name
      - product_channel_id
      - created_at
      - updated_at
      type: object
      properties:
        id:
          type: number
          description: Product Channel Template ID
        name:
          type: string
          description: Product Channel Template Name
        product_channel_id:
          type: number
          description: Associated Product Channel ID
        file_name_export_format:
          type: string
          nullable: true
          description: Export file name format template
        image_export_size:
          type: string
          nullable: true
          description: Export image size
        created_at:
          type: string
          format: date-time
          description: Product Channel Template creation timestamp
        updated_at:
          type: string
          format: date-time
          description: Product Channel Template last update timestamp
        custom_attribute_mappings:
          type: array
          description: Array of custom attribute mappings for this template
          items:
            $ref: '#/components/schemas/custom_attribute_mapping'
          example:
          - name: Name
            product_custom_attribute_id: 17
            required: false
          - name: SKU
            product_custom_attribute_id: 18
            required: true
          - name: Image
            product_custom_attribute_id: 49
            required: false
          - name: Unmapped Attribute
            product_custom_attribute_id: null
            required: false
      additionalProperties: false
    product_channel_template_summary:
      required:
      - id
      - name
      - product_channel_id
      - created_at
      - updated_at
      type: object
      properties:
        id:
          type: number
          description: Product Channel Template ID
        name:
          type: string
          description: Product Channel Template Name
        product_channel_id:
          type: number
          description: Associated Product Channel ID
        file_name_export_format:
          type: string
          nullable: true
          description: Export file name format template
        image_export_size:
          type: string
          nullable: true
          description: Export image size
        created_at:
          type: string
          format: date-time
          description: Product Channel Template creation timestamp
        updated_at:
          type: string
          format: date-time
          description: Product Channel Template last update timestamp
      additionalProperties: false
    custom_attribute_mapping:
      required:
      - name
      - product_custom_attribute_id
      type: object
      properties:
        name:
          type: string
          description: Name of the custom attribute mapping
        product_custom_attribute_id:
          type: number
          nullable: true
          description: ID of the associated product custom attribute
        required:
          type: boolean
          description: Whether this attribute mapping is required
      additionalProperties: false
    product_channel_templates_response:
      required:
      - product_channel_templates
      type: object
      properties:
        product_channel_templates:
          type: array
          description: Array of Product Channel Templates
          items:
            $ref: '#/components/schemas/product_channel_template_summary'
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: AccessToken
x-original-swagger-version: '2.0'