openapi: 3.0.0
info:
  title: Internal products service
  description: |-
    This API allows you to find information about your products, variants and categories.

    Refer to the <a href="https://developer.boldcommerce.com/changelog">changelog</a> for the latest updates to this API.
  contact:
    name: Contact Us
    url: https://developer-dashboard.boldcommerce.com/default/contactus
  version: 2.0.0
servers:
  - url: http://product-api.prod.svc.cluster.local:9000
  - url: http://product-api.staging.svc.cluster.local:9000
  - url: http://localhost:9200
tags:
  - name: Customer Event Notifications
    description: Event notifications you send to Bold when a change occurs to customers on the platform.
  - name: Order Event Notifications
    description: Event notifications you send to Bold when a change occurs to orders on the platform.
  - name: Product Event Notifications
    description: Event notifications you send to Bold when a change occurs to products on the platform.
  - name: Products
    description: Contains information about the products associated with a given store. Use these endpoints to retrieve information about one or all products on a store.
  - name: Variants
    description: A child of the Product resource. Contains information about the variants of a product, which are derived from different combinations of options. Use these endpoints to retrieve information about a single variant, the variants of a single product, or all variants on a store.
  - name: Categories
    description: Contains information about the product categories applicable on a given store. Use these endpoints to retrieve information about one or all product categories on a store.
  - name: Images
    description: Contains information about the product images associated with a given store. Use these endpoints to retrieve information about one or all product images on a store.
  - name: Options
    description: A child of the Product resource. Contains information about the options associated with a given product, such as colors, sizes, weights, etc. Use these endpoints to retrieve information about one or all product options for a product.
paths:
  /v1/shops/{shop_identifier}/platforms/custom/webhooks/products/saved:
    parameters:
      - $ref: '#/components/parameters/shopIdentifier'
    post:
      tags:
        - Product Event Notifications
      summary: Product Saved
      operationId: ProductSavedEventNotification
      description: |-
        Trigger this API call when product data changes, including product creation and updates.

        Bold queues the product for saving. The request must contain the complete product object at the time the change occurred. Bold replaces all fields of the existing product object with the values provided in the request body. Bold ignores and does not update fields omitted from the request body. 

        The `platform_updated_at` field must be accurate to mitigate the risk incurred by out-of-sequence requests.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/productSavedRequestBody'
        required: true
      responses:
        '202':
          description: Event notification was queued successfully.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: A validation error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validationError'
              examples:
                validationError:
                  value:
                    status_code: 400
                    errors:
                      - 'Error at ''/data/product/platform_id'': property ''platform_id'' is missing.'
                      - 'Error at ''/data/product/variants/0/platform_id'': property ''platform_id'' is missing.'
        '500':
          description: An unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeErrorProduct'
  /v1/shops/{shop_identifier}/platforms/custom/webhooks/products/deleted:
    parameters:
      - $ref: '#/components/parameters/shopIdentifier'
    post:
      tags:
        - Product Event Notifications
      summary: Product Deleted
      operationId: ProductDeletedEventNotification
      description: |-
        Trigger this API call when a product is deleted on the platform.

        Bold queues the product for deletion. The `platform_deleted_at` field must be accurate to mitigate the risk incurred by out-of-sequence requests.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/productDeletedRequestBody'
        required: true
      responses:
        '202':
          description: Event notification was queued successfully.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: A validation error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validationError'
              examples:
                validationError:
                  value:
                    status_code: 400
                    errors:
                      - 'Error at ''/data/product/platform_id'': property ''platform_id'' is missing.'
        '500':
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeErrorProduct'
  /v1/shops/{shop_identifier}/platforms/custom/webhooks/categories/saved:
    parameters:
      - $ref: '#/components/parameters/shopIdentifier'
    post:
      tags:
        - Product Event Notifications
      summary: Product Category Saved
      operationId: CategorySavedEventNotification
      description: |-
        Trigger this API call when a product category is saved on the platform.

        Bold queues the product category for saving. The request contains the complete product category object at the time the change occurred. Bold replaces all fields of the existing product category object with the values provided in the request
        body. Fields omitted from the request body are ignored in the `category` object.

        The `platform_updated_at` field must be accurate to mitigate the risk incurred by out-of-sequence requests.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/categorySavedRequestBody'
        required: true
      responses:
        '202':
          description: Notification queued successfully
          content:
            application/json:
              schema:
                type: object
        '400':
          description: A validation error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validationError'
              examples:
                validationError:
                  value:
                    status_code: 400
                    errors:
                      - 'Error at ''/data/category/platform_id'': property ''platform_id'' is missing.'
        '500':
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeErrorProduct'
  /v1/shops/{shop_identifier}/platforms/custom/webhooks/categories/deleted:
    parameters:
      - $ref: '#/components/parameters/shopIdentifier'
    post:
      tags:
        - Product Event Notifications
      summary: Product Category Deleted
      operationId: CategoryDeletedEventNotification
      description: |-
        Trigger this API call when a product category is deleted on the platform.

        Bold queues the product category for deletion. The `platform_deleted_at` field must be accurate to mitigate the risk incurred by out-of-sequence requests.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/categoryDeletedRequestBody'
        required: true
      responses:
        '202':
          description: Notification queued successfully
          content:
            application/json:
              schema:
                type: object
        '400':
          description: A validation error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validationError'
              examples:
                validationError:
                  value:
                    status_code: 400
                    errors:
                      - 'Error at ''/data/category/platform_id'': property ''platform_id'' is missing.'
        '500':
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeErrorProduct'
  /v2/shops/{shop_identifier}/categories:
    get:
      tags:
        - Categories
      summary: List Categories
      operationId: ListCategories
      description: |-
        Lists product categories for the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
        - name: ids
          in: query
          schema:
            type: string
            description: A comma-separated list of category identifiers, defining which categories to return.
            example: 123,456,789
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2CategoryListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/categories/pid/{pid}:
    get:
      tags:
        - Categories
      summary: Get Category by Platform ID
      operationId: GetCategoryByPlatformID
      description: Retrieves a product category by its platform-assigned identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - name: pid
          in: path
          required: true
          schema:
            type: string
          description: The unique identifier for the category. Assigned by the shop platform.
          example: '110'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2CategoryByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/categories/{id}:
    get:
      tags:
        - Categories
      summary: Get Category by ID
      operationId: GetCategoryByID
      description: Retrieves a product category by its Bold-assigned identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: The unique identifier for this category. Assigned by Bold.
          example: 100
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2CategoryByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products:
    get:
      tags:
        - Products
      summary: List Products
      operationId: ListProducts
      description: |-
        Lists all products in the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/deep'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/filter'
        - name: categoryid
          in: query
          description: The category identifier to search within. Assigned by Bold.
          schema:
            type: integer
            format: int64
          example: 100
        - name: filtercolumn
          in: query
          description: The column name by which to perform a fuzzy search with the `filtervalue`.
          schema:
            type: string
          example: type
        - name: filtervalue
          in: query
          description: A search term used to perform a fuzzy search on the `filtercolumn`.
          schema:
            type: string
          example: '%27hat%27'
        - name: ordercolumn
          in: query
          description: The method of ordering the returned results. Must be paired with the `orderdirection` query parameter.
          schema:
            type: string
          example: type
        - name: orderdirection
          in: query
          description: The direction of ordering returned results. Must be paired with the `ordercolumn` query parameter. Possible values include `asc` and `desc`.
          schema:
            type: string
          example: asc
        - name: updated_at_min
          in: query
          description: The earliest date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the customer was updated.
          schema:
            type: string
            format: date-time
          example: '2020-01-01T00:00:00Z'
        - name: updated_at_max
          in: query
          description: The latest date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the product was updated.
          schema:
            type: string
            format: date-time
          example: '2020-01-02T00:00:00Z'
        - name: include_deleted
          in: query
          description: Indicates whether to include deleted products in search results.
          schema:
            type: boolean
            format: boolean
          example: true
        - name: es_optimize
          in: query
          description: Indicates whether to optimize the results for Elasticsearch.
          schema:
            type: boolean
            format: boolean
          example: true
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ProductListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/categories:
    get:
      tags:
        - Categories
      summary: List Product Categories
      operationId: ListProductCategories
      description: |-
        Lists product categories for the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ProductCategoryListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/pid/{pid}:
    get:
      tags:
        - Products
      summary: Get Product by Platform ID
      operationId: GetProductByPlatformID
      description: Retrieves a product by its platform-specific identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/deep'
        - name: pid
          in: path
          required: true
          schema:
            type: string
          description: The unique identifier for this category. Assigned by the shop platform.
          example: '110'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ProductByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/images:
    get:
      tags:
        - Images
      summary: List Product Images
      operationId: ListProductImages
      description: |-
        Lists images for a product by its Bold-specific identifier.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ImageListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/images/pid/{pid}:
    get:
      tags:
        - Images
      summary: Get Product Image by Platform ID
      operationId: GetProductImageByPlatformID
      description: Retrieves a product image by its platform-assigned identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: pid
          in: path
          required: true
          schema:
            type: string
          description: A unique identifier for the product. Assigned by the shop platform.
          example: '456'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ImageByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/images/{id}:
    get:
      tags:
        - Images
      summary: Get Product Image by ID
      operationId: GetProductImageByID
      description: Retrieves a product image by its Bold-assigned identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: A unique identifier for the product image. Assigned by Bold.
          example: 456
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ImageByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/options:
    get:
      tags:
        - Options
      summary: List Product Options
      operationId: ListProductOptions
      description: |-
        Lists the options for a product by its Bold-specific identifier.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2OptionListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/options/pid/{pid}:
    get:
      tags:
        - Options
      summary: Get Product Option by Platform ID
      operationId: GetProductOptionByPlatformID
      description: Retrieves a product option by the platform-specific option identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: pid
          in: path
          required: true
          schema:
            type: string
          description: A unique identifier for this product option. Assigned by the shop platform.
          example: '110'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2OptionByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/options/{id}:
    get:
      tags:
        - Options
      summary: Get Product Option by ID
      operationId: GetProductOptionByID
      description: Retrieves a product option by the Bold-specific option identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: The unique identifier for the product option. Assigned by Bold.
          example: 100
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2OptionByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/variants:
    get:
      tags:
        - Variants
      summary: List Product Variants
      operationId: ListProductVariants
      description: |-
        Lists the variants for a product by its Bold-specific product identifier.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2VariantListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/variants/pid/{pid}:
    get:
      tags:
        - Variants
      summary: Get Product Variant by Platform ID
      operationId: GetProductVariantByPlatformID
      description: Retrieves a product variant by its platform-specific identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: pid
          in: path
          required: true
          schema:
            type: string
          description: The unique identifier for this product variant. Assigned by the shop platform.
          example: '110'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2VariantByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{bold_product_id}/variants/{id}:
    get:
      tags:
        - Variants
      summary: Get Product Variant by ID
      operationId: GetProductVariantByID
      description: Retrieves a product variant by its Bold-specific identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/boldProductId'
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: The unique identifier for this product variant. Assigned by Bold.
          example: 100
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2VariantByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/products/{id}:
    get:
      tags:
        - Products
      summary: Get Product by ID
      operationId: GetProductByID
      description: Retrieves a product by its Bold-specific identifier.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/deep'
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: The unique identifier for this product. Assigned by Bold.
          example: 100
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ProductByXIDResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/types:
    get:
      tags:
        - Products
      summary: List Product Types
      operationId: ListProductTypes
      description: |-
        Lists the product types for all products in the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ProductTypeListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/variants:
    get:
      tags:
        - Variants
      summary: List Variants for Shop
      operationId: ListVariantsForShop
      description: |-
        Lists all product variants in the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2AllVariantsListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
  /v2/shops/{shop_identifier}/vendors:
    get:
      tags:
        - Products
      summary: List Product Vendors
      operationId: ListProductVendors
      description: |-
        Lists the vendors for all products in the shop.

        For more information on result pagination, refer to the [Query & Pagination](/guides/checkout/resources/query-pagination) page.
      parameters:
        - $ref: '#/components/parameters/shopIdentifierParam'
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2VendorListResponse'
        default:
          description: An unexpected error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
components:
  parameters:
    shopIdentifier:
      name: shop_identifier
      in: path
      description: |-
        A unique identifier of the store. This can be retrieved by calling the [Get Shop
        Info](shops#tag/Shops/operation/GetShopInfo#) endpoint.
      required: true
      schema:
        type: string
        example: zp3oafdor9
    shopIdentifierParam:
      name: shop_identifier
      in: path
      required: true
      schema:
        type: string
      description: A unique identifier of the store. Retrieve this information by calling the [Get Shop Info](shops#tag/Shop/operation/GetShopInfo) endpoint.
      example: zp3oafdor9
    limit:
      name: limit
      in: query
      schema:
        type: integer
        format: int32
      description: The maximum number of results to return per page.
      example: 50
    page:
      name: page
      in: query
      schema:
        type: integer
        format: int32
      description: The desired page number for the paginated results.
      example: 1
    deep:
      name: deep
      in: query
      description: |-
        Indicates whether to perform a deep search. When set to `true`, this endpoint fetches and populates related child entities for the product in the response payload, including: 
        * `options`
        * `variants` and their `option_values`
        * `images`
        * `categories`
        * `localized_names`
        * `localized_descriptions`
      schema:
        type: boolean
        format: boolean
      example: true
    filter:
      name: filter
      in: query
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
      description: |-
        A filter for returned results.

        Accepts filtering options as described in the [Query & Pagination](/guides/checkout/resources/query-pagination#filter) page.
      example:
        - eq(target:order)
    boldProductId:
      name: bold_product_id
      in: path
      required: true
      schema:
        type: integer
        format: int64
      description: A unique identifier for the product. Assigned by Bold.
      example: 123
  schemas:
    productBase:
      type: object
      properties:
        description:
          type: string
          description: The description for the product.
          example: A hat for the beach
        handle:
          type: string
          description: A unique, human-readable string for the product.
          example: beach-hat
        inventory_quantity:
          type: integer
          description: The current inventory amount of the product.
          format: int64
          example: 2
        inventory_tracking_entity:
          type: string
          description: The entity on which inventory is tracked.
          enum:
            - variant
            - product
            - none
          example: product
        inventory_tracking_service:
          type: string
          description: The service that tracks inventory.
          example: platform
        localized_descriptions:
          type: object
          description: A map of localized descriptions for the product. The key is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product description in the given language.
          additionalProperties:
            type: string
          example:
            en: A hat for the beach
            fr: Un chapeau pour la plage
        localized_names:
          type: object
          description: A map of localized names for the product. The key is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product name in the given language.
          additionalProperties:
            type: string
          example:
            en: Beach Hat
            fr: Chapeau de Plage
        name:
          type: string
          description: The product name.
          example: Beach hat
        published:
          type: boolean
          description: Indicates if the product is published on the storefront.
          example: true
        tags:
          type: string
          description: A string with comma separated values describing the product.
          example: clothing, unisex, headwear
        tax_code:
          type: string
          description: The tax code for the product.
          example: non-taxable
        type:
          type: string
          description: |-
            A representation of platform-specific product data. The role of this field depends on the platform:

            - BigCommerce: The product type, either `physical` or `digital`.
            - commercetools: A merchant or partner-defined data set, valid as per options set in the platform.
            - Shopify: A product categorization, used for filtering and searching products.
            - Custom: Defined by the platform.
          example: physical
        url:
          type: string
          description: A URL to the product on the storefront.
          example: /hats/beach-hat
        vendor:
          type: string
          description: The product vendor.
          example: OFS
    categoryBase:
      type: object
      properties:
        image_url:
          description: The URL location of the category image.
          type: string
          example: your_platform_connector.com/files/categories/hats.jpg
        name:
          description: The name of the category.
          type: string
          example: Hats
    category:
      type: object
      allOf:
        - $ref: '#/components/schemas/categoryBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the category. Defined by the platform.
          example: category-123456
        platform_updated_at:
          type: string
          format: date-time
          description: The date and time the category was last updated on the platform, in [RFC 3339, section 5.6 format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6). If never updated, defaults to the `platform_created_at` value.
          example: '2019-08-24T14:15:22Z'
      required:
        - platform_id
        - platform_updated_at
    variantBase:
      type: object
      description: An array of `variant` objects. At least one variant is required. If the product has no variants, the variant can reuse the product information.
      properties:
        allow_backorder:
          description: If backorders of the variant is allowed.
          type: boolean
          format: boolean
        compare_at_price:
          description: The original price of the item before an adjustment or a sale.
          type: string
          example: '30.00'
        cost:
          description: The cost of the product variant.
          type: string
          example: '30.00'
        grams:
          description: The weight of the product variant in grams.
          type: integer
          format: int64
        image_url:
          description: URL of the image.
          type: string
          example: your_platform_connector.com/files/products/hats/purple-beach-hat.jpg
        inventory_quantity:
          description: Current inventory level of the product.
          type: integer
          format: int64
        inventory_tracking_entity:
          type: string
          description: Entity on which inventory is tracked.
          enum:
            - variant
            - product
            - none
        inventory_tracking_service:
          type: string
          description: Service that tracks inventory.
          example: platform
        localized_names:
          type: object
          additionalProperties:
            type: string
          description: Map of localized names for the variant. The field is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product name in the given language.
          example:
            en: Purple
            fr: Violette
        name:
          description: The name of the variant. If there is only one variant, the `name` must be "Default Title" in order to avoid displaying the same `name` twice.
          type: string
          example: Default Title
        price:
          description: The price of the variant
          type: string
          example: '30.00'
        require_shipping:
          description: True if the item needs to be shipped, false otherwise.
          type: boolean
          format: boolean
        sku:
          description: Variant SKU.
          type: string
          example: BEACH-HAT-PURPLE
        tax_code:
          description: Tax code for the variant.
          type: string
          example: non-taxable
        tax_exempt:
          description: Indicates whether the variant is tax-exempt. If `true`, the variant is tax-exempt.
          type: boolean
          format: boolean
          nullable: true
        weight:
          type: string
          description: The weight of the product variant, calculated with weight unit specified.
          example: '1.0'
        weight_unit:
          type: string
          description: The unit of measurement that applies to the product variant's weight.
          example: kg
    variantOptionValue:
      type: object
      description: A more granular level of customization for variants. These are not required, but can be used to provide more options for your same variant.
      properties:
        platform_id:
          type: string
          description: A unique identifier for the variant option value. Defined by the platform.
          example: abc123456
        platform_product_option_id:
          type: string
          description: The unique identifier for the product option this value belongs to. Defined by the platform.
          example: VAR-10001-SM
        label:
          type: string
          description: The label of the option value.
          example: small
        name:
          type: string
          description: The name of the option.
          example: Small
    deepVariant:
      type: object
      allOf:
        - $ref: '#/components/schemas/variantBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the variant. Defined by the platform.
          example: variant-123456
        option_values:
          type: array
          items:
            $ref: '#/components/schemas/variantOptionValue'
      required:
        - platform_id
        - allow_backorder
        - price
        - weight
    optionBase:
      type: object
      properties:
        name:
          description: The option name.
          type: string
          example: Small
        position:
          description: The position in the `options` array.
          type: integer
          format: int64
          example: 1
    optionValueBase:
      type: object
      properties:
        is_default:
          type: boolean
          description: Indicates whether this is the default option.
          format: boolean
        label:
          description: The label of the option value.
          type: string
          example: Small
        position:
          description: The position in the `option_values` array.
          type: integer
          format: int64
          example: 1
    deepOptionValue:
      type: object
      allOf:
        - $ref: '#/components/schemas/optionValueBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the option value. Defined by the platform.
          example: option-value-123456
    deepOption:
      type: object
      allOf:
        - $ref: '#/components/schemas/optionBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the product option. Defined by the platform.
          example: product-option-123456
        option_values:
          type: array
          items:
            $ref: '#/components/schemas/deepOptionValue'
    imageBase:
      type: object
      properties:
        name:
          description: The image name.
          type: string
          example: Beach hat
        src:
          description: The image URL.
          type: string
          example: https://example.com/images/beach-hat.jpg
        position:
          description: The position in the `images` array.
          type: integer
          format: int64
          example: 1
    deepImage:
      type: object
      allOf:
        - $ref: '#/components/schemas/imageBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the image. Defined by the platform.
          example: image-123456
    product:
      type: object
      allOf:
        - $ref: '#/components/schemas/productBase'
      properties:
        platform_id:
          type: string
          description: A unique identifier for the product. Defined by the platform.
          example: product-123456
        platform_updated_at:
          description: The date the product was last updated on the platform.
          type: string
          format: date-time
          example: '2019-08-24T14:15:22Z'
        categories:
          type: array
          items:
            $ref: '#/components/schemas/category'
        variants:
          type: array
          description: An array of `variant` objects. At least one variant is required. If the product has no variants, the variant can reuse the product information.
          items:
            $ref: '#/components/schemas/deepVariant'
        options:
          type: array
          description: An array of product options.
          items:
            $ref: '#/components/schemas/deepOption'
        images:
          type: array
          description: An array of images depicting the product.
          items:
            $ref: '#/components/schemas/deepImage'
      required:
        - platform_id
        - platform_updated_at
        - variants
    productSavedRequestData:
      type: object
      properties:
        product:
          description: The product object.
          $ref: '#/components/schemas/product'
      required:
        - product
    productSavedRequestBody:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/productSavedRequestData'
      required:
        - data
    validationError:
      type: object
      properties:
        status_code:
          type: number
        errors:
          type: array
          items:
            type: string
    runtimeErrorProduct:
      type: object
      properties:
        errors:
          type: array
          items:
            required:
              - code
            type: object
            properties:
              code:
                type: string
                description: The error code.
                example: 07-1
              message:
                type: string
                description: The error message.
                example: Request failed due to an internal server error.
              type:
                type: string
                description: The type of error.
                example: server.internal_error
    deletedProduct:
      type: object
      properties:
        platform_id:
          description: The platform ID of the product to be deleted.
          type: string
          example: product-123456
        platform_deleted_at:
          description: The date the order was deleted on the platform, (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)). Assigned by the platform.
          type: string
          format: date-time
          example: '2020-08-24T14:15:22Z'
      required:
        - platform_id
        - platform_deleted_at
    productDeletedRequestData:
      type: object
      properties:
        product:
          $ref: '#/components/schemas/deletedProduct'
      required:
        - product
    productDeletedRequestBody:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/productDeletedRequestData'
      required:
        - data
    categorySavedRequestData:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/category'
      required:
        - category
    categorySavedRequestBody:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/categorySavedRequestData'
      required:
        - data
    deletedCategory:
      type: object
      properties:
        platform_id:
          description: The platform ID of the category to be deleted.
          type: string
          example: category-123456
        platform_deleted_at:
          type: string
          format: date-time
          description: The date and time this category was deleted on the platform, in [RFC 3339, section 5.6 format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6).
          example: '2019-09-24T14:15:22Z'
      required:
        - platform_id
        - platform_deleted_at
    categoryDeletedRequestData:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/deletedCategory'
      required:
        - category
    categoryDeletedRequestBody:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/categoryDeletedRequestData'
      required:
        - data
    protobufAny:
      type: object
      properties:
        type_url:
          type: string
          description: |-
            A URL/resource name that uniquely identifies the type of the serialized
            protocol buffer message. This string must contain at least
            one "/" character. The last segment of the URL's path must represent
            the fully qualified name of the type (as in
            `path/google.protobuf.Duration`). The name should be in a canonical form
            (e.g., leading "." is not accepted).

            In practice, teams usually precompile into the binary all types that they
            expect it to use in the context of Any. However, for URLs which use the
            scheme `http`, `https`, or no scheme, one can optionally set up a type
            server that maps type URLs to message definitions as follows:

            * If no scheme is provided, `https` is assumed.
            * An HTTP GET on the URL must yield a [google.protobuf.Type][]
              value in binary format, or produce an error.
            * Applications are allowed to cache lookup results based on the
              URL, or have them precompiled into a binary to avoid any
              lookup. Therefore, binary compatibility needs to be preserved
              on changes to types. (Use versioned type names to manage
              breaking changes.)

            Note: this functionality is not currently available in the official
            protobuf release, and it is not used for type URLs beginning with
            type.googleapis.com.

            Schemes other than `http`, `https` (or the empty scheme) might be
            used with implementation specific semantics.
        value:
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          description: Must be a valid serialized protocol buffer of the above specified type.
          format: byte
      description: |-
        `Any` contains an arbitrary serialized protocol buffer message along with a
        URL that describes the type of the serialized message.

        Protobuf library provides support to pack/unpack Any values in the form
        of utility functions or additional generated methods of the Any type.

        Example 1: Pack and unpack a message in C++.

            Foo foo = ...;
            Any any;
            any.PackFrom(foo);
            ...
            if (any.UnpackTo(&foo)) {
              ...
            }

        Example 2: Pack and unpack a message in Java.

            Foo foo = ...;
            Any any = Any.pack(foo);
            ...
            if (any.is(Foo.class)) {
              foo = any.unpack(Foo.class);
            }

         Example 3: Pack and unpack a message in Python.

            foo = Foo(...)
            any = Any()
            any.Pack(foo)
            ...
            if any.Is(Foo.DESCRIPTOR):
              any.Unpack(foo)
              ...

         Example 4: Pack and unpack a message in Go

             foo := &pb.Foo{...}
             any, err := ptypes.MarshalAny(foo)
             ...
             foo := &pb.Foo{}
             if err := ptypes.UnmarshalAny(any, foo); err != nil {
               ...
             }

        The pack methods provided by protobuf library will by default use
        'type.googleapis.com/full.type.name' as the type URL and the unpack
        methods only use the fully qualified type name after the last '/'
        in the type URL, for example "foo.bar.com/x/y.z" will yield type
        name "y.z".


        JSON
        ====
        The JSON representation of an `Any` value uses the regular
        representation of the deserialized, embedded message, with an
        additional field `@type` which contains the type URL. Example:

            package google.profile;
            message Person {
              string first_name = 1;
              string last_name = 2;
            }

            {
              "@type": "type.googleapis.com/google.profile.Person",
              "firstName": <string>,
              "lastName": <string>
            }

        If the embedded message type is well-known and has a custom JSON
        representation, that representation will be embedded adding a field
        `value` which holds the custom JSON in addition to the `@type`
        field. Example (for message [google.protobuf.Duration][]):

            {
              "@type": "type.googleapis.com/google.protobuf.Duration",
              "value": "1.212s"
            }
    runtimeError:
      type: object
      properties:
        error:
          type: string
          description: The error name.
          example: Runtime error.
        code:
          type: integer
          format: int32
          description: The error code.
          example: 500
        message:
          type: string
          description: The error message.
          example: Request failed due to an internal server error
        details:
          type: array
          description: Any details associated with the error.
          items:
            $ref: '#/components/schemas/protobufAny'
    v2PaginationResponse:
      type: object
      description: The details about the pagination of the response.
      properties:
        total:
          type: integer
          description: The total number of results available.
          format: int32
          example: 143
        count:
          type: integer
          description: The number of results returned.
          format: int32
          example: 143
        per_page:
          type: integer
          description: The maximum number of results per page.
          format: int32
          example: 50
        current_page:
          type: integer
          description: The current page index.
          format: int32
          example: 2
        total_pages:
          type: integer
          description: The total number of pages available.
          format: int32
          example: 3
        next_url:
          type: string
          description: The URL to fetch next page of results.
          example: https://api.boldcommerce.com/customers/v2/shops/zp3oafdor9/products?page=3
        previous_url:
          type: string
          description: The URL to fetch previous page of results.
          example: https://api.boldcommerce.com/customers/v2/shops/zp3oafdor9/products?page=1
    shopIdentifierSchema:
      type: string
      description: A unique identifier of the store. This can be retrieved by calling the [Get Shop Info](shops#tag/Shops/operation/GetShopInfo#) endpoint.
      example: zp3oafdor9
    v2PlatformID:
      type: object
      properties:
        string_value:
          type: string
          description: The unique human-readable identifier assigned by the shop platform.
          example: platform-123
        int64_value:
          type: integer
          format: int64
          description: The unique numeric identifier assigned by the shop platform.
          example: 123456
    v2Category:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this category. Assigned by Bold.
          example: 100
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        name:
          type: string
          description: The category name.
          example: Hats
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the category was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the category was updated. If the category has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
        image_url:
          type: string
          description: The URL location of the category image.
          example: example.store.com/files/categories/hats.jpg
    v2CategoryListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2Category'
    v2CategoryByXIDResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/v2Category'
    v2Product:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this product. Assigned by Bold.
          example: 123
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        name:
          type: string
          description: The name of the product.
          example: Beach hat
        handle:
          type: string
          description: The name of the product reflected in the URL.
          example: beach-hat
        description:
          type: string
          description: The product description.
          example: A hat for the beach
        type:
          type: string
          description: The product type.
          example: Hat
        vendor:
          type: string
          description: The product vendor.
          example: OFS
        inventory_quantity:
          type: integer
          format: int64
          description: The current inventory level of the product.
          example: 5
        inventory_tracking_service:
          type: string
          description: The service that tracks inventory.
          example: platform
        inventory_tracking_entity:
          type: string
          description: The entity on which inventory is tracked.
          enum:
            - variant
            - product
            - none
          example: product
        tags:
          type: string
          description: The product tags.
          example: hat, summer, beach
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the product was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the product was updated. If the product has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
        published:
          type: boolean
          format: boolean
          description: Indicates whether the product is published on the storefront.
          example: true
        url:
          type: string
          description: The product URL.
          example: example.store.com/files/products/hats/beach-hat.jpg
        tax_code:
          type: string
          description: The tax code for the variant.
          example: non-taxable
        localized_names:
          type: object
          description: A map of localized names for the variant. The field is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product name in the given language.
          additionalProperties:
            type: string
          example:
            en: Purple
            fr: Violette
        localized_descriptions:
          type: object
          description: A map of localized descriptions for the variant. The field is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product description in the given language.
          additionalProperties:
            type: string
          example:
            en: A hat for the beach
            fr: Un chapeau pour la plage
    v2Image:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this image. Assigned by Bold.
          example: 456
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_product_id:
          $ref: '#/components/schemas/v2PlatformID'
        src:
          type: string
          description: The image URL.
          example: https://example.com/images/beach-hat.jpg
        position:
          description: The position in the `images` array.
          type: integer
          format: int64
          example: 1
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the image was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the image was updated. If the image has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
    v2VariantOptionValue:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the variant option value. Assigned by Bold.
          example: 5
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_option_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_variant_id:
          $ref: '#/components/schemas/v2PlatformID'
        label:
          type: string
          description: The label of the option value.
          example: Small
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the variant option value was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the variant option value was updated. If the variant option has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
    v2Variant:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this variant. Assigned by Bold.
          example: 789
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_product_id:
          $ref: '#/components/schemas/v2PlatformID'
        name:
          type: string
          description: The name of the variant. If there is only one variant, the `name` must be "Default Title" in order to avoid displaying the same `name` twice.
          example: Default Title
        sku:
          type: string
          description: The variant SKU.
          example: BEACH-HAT-PURPLE
        weight_unit:
          type: string
          description: The unit of measurement that applies to the variant's weight.
          example: kg
        grams:
          type: integer
          format: int64
          description: The weight of the variant in grams.
          example: 1000
        image_id:
          type: integer
          format: int64
          description: The image identifier.
          example: 321
        image_url:
          type: string
          description: The URL of the variant image.
          example: example.store.com/files/products/hats/purple-beach-hat.jpg
        inventory_quantity:
          type: integer
          format: int64
          description: The current inventory level of the product.
          example: 5
        allow_backorder:
          type: boolean
          format: boolean
          description: Indicates whether backorders of the variant is allowed.
          example: true
        inventory_tracking_service:
          type: string
          description: The service that tracks inventory.
          example: platform
        inventory_tracking_entity:
          type: string
          description: The entity on which inventory of the variant is tracked.
          enum:
            - variant
            - product
            - none
          example: product
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the variant was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the variant was updated. If the variant has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
        require_shipping:
          type: boolean
          format: boolean
          description: Indicates if the variant needs to be shipped.
          example: true
        price:
          type: number
          format: byte
          description: The base price of the variant with no adjustments or sales.
          example: 30
        cost:
          type: number
          format: byte
          description: The price of the variant after adjustments or sales.
          example: 25
        compare_at_price:
          type: number
          format: byte
          description: The original price of the variant before an adjustment or a sale.
          example: 30
        tax_code:
          type: string
          description: The tax code for the variant.
          example: non-taxable
        weight:
          type: number
          format: byte
          description: The weight of the variant, calculated with `weight_unit` specified.
          example: 1
        tax_exempt:
          type: boolean
          format: boolean
          description: Indicates whether the variant is tax-exempt.
          example: true
        option_values:
          type: array
          description: The list of option values associated with the variant.
          items:
            $ref: '#/components/schemas/v2VariantOptionValue'
        localized_names:
          type: object
          description: A map of localized names for the variant. The field is the [ISO-639](https://www.iso.org/iso-639-language-codes.html) two character language code. The value is the product name in the given language.
          additionalProperties:
            type: string
          example:
            en: Purple
            fr: Violette
    v2OptionValue:
      type: object
      properties:
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        label:
          type: string
          description: The label of the option value.
          example: Small
        is_default:
          type: boolean
          format: boolean
          description: Indicates whether this is the default option value.
          example: true
        id:
          type: integer
          format: int64
          description: The unique identifier for this option value. Assigned by Bold.
          example: 143
        position:
          type: integer
          format: int64
          description: The position in the `option_values` array.
          example: 1
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the option value was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the option value was updated. If the option value has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_product_option_id:
          $ref: '#/components/schemas/v2PlatformID'
    v2Option:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this option. Assigned by Bold.
          example: 900
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_option_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_product_id:
          $ref: '#/components/schemas/v2PlatformID'
        name:
          type: string
          description: The option name.
          example: Small
        position:
          type: integer
          format: int64
          description: The position in the `options` array.
          example: 1
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the option was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the option was updated. If the option has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
        values:
          type: array
          items:
            $ref: '#/components/schemas/v2OptionValue'
    v2DeepProduct:
      type: object
      properties:
        product:
          $ref: '#/components/schemas/v2Product'
        images:
          description: |-
            The images associated with the product.

            Included in the response when the query parameter `deep` is set to `true`.
          type: array
          items:
            $ref: '#/components/schemas/v2Image'
        variants:
          description: |-
            The variants associated with the product.

            Included in the response when the query parameter `deep` is set to `true`.
          type: array
          items:
            $ref: '#/components/schemas/v2Variant'
        options:
          description: |-
            The options associated with the product.

            Included in the response when the query parameter `deep` is set to `true`.
          type: array
          items:
            $ref: '#/components/schemas/v2Option'
        categories:
          description: |-
            The categories associated with the product.

            Included in the response when the query parameter `deep` is set to `true`.
          type: array
          items:
            $ref: '#/components/schemas/v2Category'
    v2ProductListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2DeepProduct'
    v2ProductCategory:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for this product category. Assigned by Bold.
          example: 10
        shop_identifier:
          $ref: '#/components/schemas/shopIdentifierSchema'
        platform_category_id:
          $ref: '#/components/schemas/v2PlatformID'
        platform_product_id:
          $ref: '#/components/schemas/v2PlatformID'
        created_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the product category was created.
          example: '2021-11-04T19:09:52Z'
        updated_at:
          type: string
          format: date-time
          description: The date (in [RFC3339 format](https://datatracker.ietf.org/doc/html/rfc3339)) the product category was updated. If the product category has not been updated, the value is the same as `created_at`.
          example: '2021-11-04T19:09:52Z'
    v2ProductCategoryListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2ProductCategory'
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
    v2ProductByXIDResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/v2DeepProduct'
    v2ImageListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2Image'
    v2ImageByXIDResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/v2Image'
    v2OptionListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2Option'
    v2OptionByXIDResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/v2Option'
    v2VariantListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2Variant'
    v2VariantByXIDResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/v2Variant'
    v2ProductTypeListResponse:
      type: object
      properties:
        type:
          type: string
          description: The product type.
          example: Hat
        data:
          type: array
          items:
            type: string
    v2AllVariantsListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/v2Variant'
        pagination:
          $ref: '#/components/schemas/v2PaginationResponse'
    v2VendorListResponse:
      type: object
      properties:
        type:
          type: string
        data:
          type: array
          items:
            type: string
