> ## Documentation Index
> Fetch the complete documentation index at: https://www.commercengine.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create product

> This endpoint allows you to create a draft product by specifying its name and type. The product is created in its preliminary stage. All additional product details, including descriptions, pricing, and images, etc, can be updated using the Update Product API endpoint.



## OpenAPI

````yaml https://openapi.commercengine.io/ce-admin.json post /catalog/products
openapi: 3.1.0
info:
  title: CE Admin APIs
  version: '1.0'
  summary: Comprehensive admin interface for managing your e-commerce platform
  description: >-
    Complete administrative API suite for Commerce Engine, providing powerful
    tools to manage products, orders, customers, inventory, analytics, and
    system configuration. Designed for administrators and backend integrations
    requiring full platform control.
  license:
    name: All Rights Reserved
    url: https://www.commercengine.io/contact-us
  contact:
    email: support@commercengine.io
    url: https://www.commercengine.io/contact-us
    name: Support
servers:
  - url: https://staging.api.commercengine.io/api/v1/{store_id}/admin
    description: Staging Server
    variables:
      store_id:
        default: store_id
        description: Store ID
  - url: https://prod.api.commercengine.io/api/v1/{store_id}/admin
    description: Prod Server
    variables:
      store_id:
        default: store_id
        description: Store ID
security:
  - Authorization: []
tags:
  - name: Analytics
    description: Analytics
  - name: Catalog
    description: Catalog
  - name: Coupons & promotions
    description: Coupons & promotions
  - name: Customers
    description: Customers
  - name: Filter Options
    description: Filter Options
  - name: Inventories
    description: Inventories
  - name: Marketplace
    description: Marketplace
  - name: Marketplace Catalog
    description: Marketplace Catalog
  - name: Media Gallery
    description: Media Gallery
  - name: Metrics
    description: Metrics
  - name: Orders
    description: Orders
  - name: Payments
    description: Payments
  - name: Payouts
    description: Payouts
  - name: POS
    description: POS
  - name: POSAdmin
    description: Admin endpoints to be used as proxy in pos
  - name: Segments
    description: Segments
  - name: Shipping
    description: Shipping
  - name: SSE
    description: SSE
  - name: Store
    description: Store
  - name: Webhooks
    description: Webhooks
paths:
  /catalog/products:
    parameters: []
    post:
      tags:
        - Catalog
      summary: Create product
      description: >-
        This endpoint allows you to create a draft product by specifying its
        name and type. The product is created in its preliminary stage. All
        additional product details, including descriptions, pricing, and images,
        etc, can be updated using the Update Product API endpoint.
      operationId: create-product
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDraftProduct'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  success:
                    type: boolean
                  content:
                    properties:
                      product:
                        $ref: '#/components/schemas/ProductDetail'
                    type: object
      security:
        - Authorization: []
components:
  schemas:
    CreateDraftProduct:
      title: CreateDraftProduct
      type: object
      required:
        - name
        - product_type
      properties:
        name:
          type: string
        product_type:
          enum:
            - physical
            - digital
            - bundle
        slug:
          description: URL-friendly product identifier
          type: string
      x-tags:
        - Catalog
    ProductDetail:
      title: ProductDetail
      allOf:
        - $ref: '#/components/schemas/Product'
        - type: object
          properties:
            description:
              type: string
            videos:
              type: array
              items:
                $ref: '#/components/schemas/ProductVideo'
            pricing:
              type: array
              items:
                $ref: '#/components/schemas/ProductPricing'
            shipping:
              $ref: '#/components/schemas/ProductShipping'
            packaging:
              $ref: '#/components/schemas/ProductPackaging'
            promotions:
              $ref: '#/components/schemas/ProductPromotion'
            subscriptions:
              type: array
              items:
                $ref: '#/components/schemas/ProductSubscription'
            related_products:
              type: object
              properties:
                upsell:
                  type: array
                  items:
                    $ref: '#/components/schemas/ProductBasicDetail'
                cross_sell:
                  type: array
                  items:
                    $ref: '#/components/schemas/ProductBasicDetail'
            variants:
              type: array
              items:
                $ref: '#/components/schemas/Variant'
            bundle_items:
              type: array
              items:
                $ref: '#/components/schemas/ProductBundleItem'
            seo:
              $ref: '#/components/schemas/Seo'
            integrations:
              type: array
              items:
                $ref: '#/components/schemas/ProductIntegrationSync'
      x-tags:
        - Catalog
    Product:
      title: Product
      type: object
      required:
        - reviews_rating_sum
        - reviews_count
        - is_featured
        - on_offer
        - on_promotion
        - on_subscription
        - has_variant
        - sku
      properties:
        id:
          description: product id
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 128
        status:
          $ref: '#/components/schemas/ProductStatus'
          description: >-
            This field is relevant for b2b and b2c type stores only and it will
            be returned only for b2b and b2c type stores. It is computed based
            on the status of the variants if product has variants otherwise it
            is computed based on the active channels associated with the
            product.
          readOnly: true
        active:
          description: >-
            This field is relevant for b2b and b2c type stores only and it will
            be returned only for b2b and b2c type stores.
          type: boolean
          readOnly: true
        publication_status:
          $ref: '#/components/schemas/MarketplacePublicationStatus'
          description: >-
            This field is relevant for marketplace type stores only and it will
            be returned only for marketplace type stores.
          readOnly: true
        stock_available:
          type: boolean
        short_description:
          type:
            - string
            - 'null'
          maxLength: 256
        metadata:
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
        tags:
          type: array
          items:
            type: string
        product_type:
          enum:
            - physical
            - digital
            - bundle
        hsn_code:
          type:
            - string
            - 'null'
        categories:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
                readOnly: true
              active:
                type: boolean
                readOnly: true
        sales_channels:
          type: array
          items:
            $ref: '#/components/schemas/SalesChannel'
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/ProductAttribute'
        variant_options:
          type: array
          items:
            $ref: '#/components/schemas/VariantOption'
        reviews_rating_sum:
          type: integer
          format: int32
          readOnly: true
        reviews_count:
          type: integer
          format: int32
          readOnly: true
        is_featured:
          type: boolean
        on_offer:
          type: boolean
        on_promotion:
          type: boolean
        on_subscription:
          type: boolean
        has_variant:
          type: boolean
        variant_count:
          type: integer
          readOnly: true
        modified_at:
          type: string
          format: date-time
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        sku:
          type: string
          maxLength: 64
        images:
          type: array
          items:
            $ref: '#/components/schemas/ProductImage'
        seller_id:
          description: >-
            Seller ID. This field is relevant for marketplace type stores only.
            Will return null for b2b and b2c type stores.
          type:
            - string
            - 'null'
        seller_detail:
          description: >-
            Seller detail information. This field is relevant for marketplace
            type stores only. Will return null for b2b and b2c type stores.
          oneOf:
            - $ref: '#/components/schemas/SellerInfo'
            - type: 'null'
      x-tags:
        - Catalog
    ProductVideo:
      title: ProductVideo
      type: object
      properties:
        title:
          type:
            - string
            - 'null'
        alternate_text:
          type:
            - string
            - 'null'
        sort_order:
          type: integer
        video_preview_url:
          type: string
        video_stream_hls_url:
          type: string
        video_stream_dash_url:
          type: string
        image_thumbnail_url:
          type: string
        video_duration:
          type: integer
        file_id:
          type: string
      x-tags:
        - Catalog
    ProductPricing:
      title: ProductPricing
      type: object
      required:
        - customer_group_id
        - cost_price
        - listing_price
        - selling_price
        - tax_rate
      properties:
        customer_group_id:
          description: >-
            customer group id. for different pricing model in case of multiple
            customer groups.
          type:
            - string
            - 'null'
        cost_price:
          type:
            - number
            - 'null'
          format: double
        listing_price:
          type: number
          format: double
        selling_price:
          type: number
          format: double
        min_order_quantity:
          type: integer
          format: int32
          default: 1
        max_order_quantity:
          type:
            - integer
            - 'null'
          format: int32
        incremental_quantity:
          type: integer
          format: int32
          default: 1
        tax_type:
          enum:
            - GST
          readOnly: true
        tax_rate:
          type: number
          format: double
      x-tags:
        - Catalog
    ProductShipping:
      title: ProductShipping
      type: object
      required:
        - handling_charge
      properties:
        handling_charge:
          description: >-
            A handling charge is an additional fee applied to cover the costs
            associated with preparing, packaging, and processing an order for
            shipment or delivery.
          type: number
          minimum: 0
      x-tags:
        - Catalog
    ProductPackaging:
      title: ProductPackaging
      type:
        - object
        - 'null'
      required:
        - pack_width
        - pack_height
        - pack_length
        - pack_dry_weight
        - units_per_pack
        - vertical_rotation
      properties:
        pack_width:
          type: number
          format: float
        pack_height:
          type: number
          format: float
        pack_length:
          type: number
          format: float
        pack_dry_weight:
          type: number
          format: float
        units_per_pack:
          type: integer
          format: int32
        vertical_rotation:
          description: >-
            Indicates whether items can be rotated during packing or if they
            must be kept in a strictly vertical orientation.
          type: boolean
        shipper_width:
          type: number
          format: float
        shipper_height:
          type: number
          format: float
        shipper_length:
          type: number
          format: float
        shipper_dry_weight:
          type: number
          format: float
        units_per_shipper:
          type: integer
          format: int32
      x-tags:
        - Catalog
    ProductPromotion:
      title: ProductPromotion
      oneOf:
        - $ref: '#/components/schemas/DiscountBasedPromotion'
        - $ref: '#/components/schemas/FixedPricePromotion'
        - $ref: '#/components/schemas/VolumeBasedPromotion'
        - $ref: '#/components/schemas/FreeGoodsPromotion'
      x-tags:
        - Catalog
    ProductSubscription:
      title: ProductSubscription
      type: object
      required:
        - subscription_plan
        - billing_interval
        - billing_frequency
        - billing_limit
        - billing_trial_days
        - fulfill_separately
        - subscription_price
      properties:
        subscription_plan_id:
          type: string
          readOnly: true
        subscription_plan:
          type: string
        billing_interval:
          type: integer
          format: int32
        billing_frequency:
          enum:
            - monthly
        billing_limit:
          type:
            - integer
            - 'null'
        billing_trial_days:
          type: integer
          format: int32
          default: 0
        order_interval:
          type:
            - integer
            - 'null'
        order_frequency:
          type:
            - string
            - 'null'
          enum:
            - monthly
        order_limit:
          type:
            - integer
            - 'null'
        fulfill_separately:
          type: boolean
        subscription_price:
          type: array
          items:
            type: object
            required:
              - suscription_price
              - minimum_quantity
              - customer_group_id
            properties:
              suscription_price:
                type: number
                format: double
              minimum_quantity:
                type: integer
                default: 1
              customer_group_id:
                description: customer group id.
                type:
                  - string
                  - 'null'
      x-tags:
        - Catalog
    ProductBasicDetail:
      title: ProductBasicDetail
      type: object
      properties:
        id:
          description: >-
            product id or combination of product id and variant id separated by
            hyphen.
          type: string
          readOnly: true
        product_id:
          type: string
        product_name:
          type: string
        product_type:
          enum:
            - physical
            - digital
            - bundle
        status:
          enum:
            - draft
            - active
            - inactive
          readOnly: true
        tags:
          type: array
          items:
            type: string
        reviews_rating_sum:
          type: integer
          format: int32
          readOnly: true
        reviews_count:
          type: integer
          format: int32
          readOnly: true
        hsn_code:
          type:
            - string
            - 'null'
          maxLength: 128
        variant_id:
          type:
            - string
            - 'null'
          maxLength: 128
        variant_name:
          type:
            - string
            - 'null'
          maxLength: 128
        slug:
          type: string
          maxLength: 128
        sku:
          type: string
          maxLength: 128
        associated_options:
          type: array
          items:
            $ref: '#/components/schemas/AssociatedOption'
        active:
          type: boolean
        stock_available:
          type: boolean
        images:
          type: array
          items:
            $ref: '#/components/schemas/ProductImage'
        pricing:
          type: array
          items:
            $ref: '#/components/schemas/ProductPricing'
      x-tags:
        - Catalog
    Variant:
      title: Variant
      allOf:
        - $ref: '#/components/schemas/VariantCommonDetail'
        - type: object
          properties:
            name:
              type: string
            associated_options:
              type: array
              items:
                $ref: '#/components/schemas/AssociatedOption'
            images:
              type: array
              items:
                $ref: '#/components/schemas/ProductImage'
      examples: []
      x-tags:
        - Catalog
    ProductBundleItem:
      title: ProductBundelItem
      allOf:
        - $ref: '#/components/schemas/ProductBasicDetail'
        - type: object
          properties:
            quantity:
              type: integer
      x-tags:
        - Catalog
    Seo:
      title: Seo
      type: object
      required:
        - title
        - description
        - keywords
      properties:
        title:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        keywords:
          type:
            - array
            - 'null'
    ProductIntegrationSync:
      title: ProductIntegrationSync
      type: object
      properties:
        product_id:
          type: string
        product_name:
          type: string
        variant_id:
          type:
            - string
            - 'null'
        variant_name:
          type:
            - string
            - 'null'
        integration_name:
          type: string
        sync_status:
          enum:
            - pending
            - success
            - failed
        item_id:
          type: string
        item_type:
          enum:
            - product
            - productbundle
            - category
        item_type_id:
          type: string
        item_url:
          type: string
        schema:
          type: string
        logo:
          type: string
        last_updated:
          type: string
          format: date-time
        last_synced:
          type: string
          format: date-time
    ProductStatus:
      enum:
        - draft
        - active
        - inactive
    MarketplacePublicationStatus:
      description: Marketplace publication status
      type: string
      enum:
        - published
        - unpublished
    SalesChannel:
      title: SalesChannel
      type: object
      required:
        - id
        - name
        - kind
        - active
      properties:
        id:
          type: string
        name:
          type: string
          readOnly: true
        kind:
          type: string
          enum:
            - storefront
            - marketplace
        active:
          type: boolean
          readOnly: true
    ProductAttribute:
      title: ProductAttribute
      type: object
      properties:
        attribute_id:
          type: string
        attribute_name:
          type: string
          readOnly: true
        attribute_type:
          type: string
          enum:
            - text
            - number
            - boolean
            - date
            - single-select
            - multi-select
            - color
          readOnly: true
        attribute_value:
          oneOf:
            - type: string
              description: >-
                string value for attribute type **text**, **single select** and
                **date**.
            - type: number
              description: numeric value for attribute type number.
            - type: boolean
              description: true/false for attribute type boolean.
            - type: array
              description: for attribute type = multi-select
              items:
                type: string
            - $ref: '#/components/schemas/ColorObject'
              description: for attribute type = color
        key:
          description: Value in snake case.
          type: string
          readOnly: true
      examples: []
      x-tags:
        - Catalog
    VariantOption:
      title: VariantOption
      type: object
      properties:
        attribute_id:
          type: string
        attribute_value:
          description: >-
            The attribute value can be represented as an array of strings for
            single-select attribute types. For color attribute types, the value
            will be represented as a color object, which contains color details
            with name and hexcode.
          type: array
          items:
            oneOf:
              - type: string
              - $ref: '#/components/schemas/ColorObject'
        attribute_name:
          type: string
        attribute_type:
          enum:
            - single-select
            - color
        key:
          description: value in snake case.
          type: string
    ProductImage:
      title: ProductImage
      type: object
      properties:
        title:
          type:
            - string
            - 'null'
          maxLength: 128
        alternate_text:
          type:
            - string
            - 'null'
          maxLength: 128
        sort_order:
          type: integer
          format: int32
        url_tiny:
          type: string
          maxLength: 512
        url_thumbnail:
          type: string
          maxLength: 512
        url_standard:
          type: string
          maxLength: 512
        url_zoom:
          type: string
          maxLength: 512
        file_id:
          type: string
        file_type:
          enum:
            - image
      x-tags:
        - Catalog
    SellerInfo:
      title: SellerInfo
      type: object
      properties:
        id:
          type: string
        trade_name:
          type: string
        legal_name:
          type: string
        business_type:
          $ref: '#/components/schemas/SellerBusinessType'
        tax_identification_number:
          type: string
        status:
          $ref: '#/components/schemas/SellerAccountStatus'
        kyc_status:
          $ref: '#/components/schemas/SellerKycStatus'
        visibility:
          description: >-
            Visibility of the products of the seller. public: products are
            visible to all users, private: products are visible to only
            authenticated users.
          type: string
          enum:
            - public
            - private
        logo:
          type:
            - string
            - 'null'
    DiscountBasedPromotion:
      title: DiscountBasedPromotion
      description: promotion_type = discount
      type:
        - object
        - 'null'
      required:
        - promotion_type
        - starts_at
        - details
      properties:
        id:
          type: string
          readOnly: true
        promotion_type:
          enum:
            - discount
        starts_at:
          type: string
        expires_at:
          description: null means never expires.
          type:
            - string
            - 'null'
        details:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/PercentageBasedDiscount'
              - $ref: '#/components/schemas/FixedAmountBasedDiscount'
    FixedPricePromotion:
      title: FixedPricePromotion
      description: promotion_type = fixed-price
      type:
        - object
        - 'null'
      required:
        - promotion_type
        - starts_at
        - details
      properties:
        id:
          type: string
          readOnly: true
        promotion_type:
          enum:
            - fixed-price
        starts_at:
          type: string
        expires_at:
          description: null means never expires.
          type:
            - string
            - 'null'
        details:
          type: array
          items:
            type: object
            required:
              - offer_price
              - customer_group_id
              - minimum_quantity
              - maximum_quantity
            properties:
              offer_price:
                type: number
              customer_group_id:
                type:
                  - string
                  - 'null'
              minimum_quantity:
                description: >-
                  It refers to the minimum quantity of a specific item a
                  customer must purchase to qualify for the promotion.
                type: integer
                default: 1
              maximum_quantity:
                description: >-
                  It refers to the maximum quantity of a specific item a
                  customer can purchase in order to qualify for the promotion.
                  If this field is set to null, it indicates that there is no
                  limit.
                type:
                  - integer
                  - 'null'
    VolumeBasedPromotion:
      title: VolumeBasedPromotion
      description: promotion_type = volume-based
      type:
        - object
        - 'null'
      required:
        - promotion_type
        - starts_at
        - details
      properties:
        id:
          type: string
          readOnly: true
        promotion_type:
          enum:
            - volume-based
        starts_at:
          type: string
        expires_at:
          description: null means never expires.
          type:
            - string
            - 'null'
        details:
          type: array
          items:
            type: object
            required:
              - customer_group_id
              - slabs
            properties:
              customer_group_id:
                type:
                  - string
                  - 'null'
              slabs:
                type: array
                items:
                  type: object
                  required:
                    - quantity
                    - quantity_condition
                    - discount_percent
                  properties:
                    quantity:
                      type: integer
                    quantity_condition:
                      description: >-
                        This key defines how the system will evaluate the
                        quantity to determine if the promotion should be
                        applied, based on the specified slab.
                      enum:
                        - less
                        - less-or-equal
                        - greater
                        - greater-or-equal
                    discount_percent:
                      type: number
    FreeGoodsPromotion:
      title: FreeGoodsPromotion
      description: promotion_type = free-goods
      type:
        - object
        - 'null'
      required:
        - promotion_type
        - starts_at
        - details
      properties:
        id:
          type: string
          readOnly: true
        promotion_type:
          enum:
            - free-goods
        starts_at:
          type: string
          format: date-time
        expires_at:
          description: null means never expires.
          type:
            - string
            - 'null'
          format: date-time
        details:
          type: array
          items:
            allOf:
              - required:
                  - customer_group_id
                properties:
                  customer_group_id:
                    type:
                      - string
                      - 'null'
              - oneOf:
                  - title: ScaleAutomatically
                    required:
                      - auto_scale
                      - slab
                    properties:
                      auto_scale:
                        description: >-
                          The **auto_scale** key determines whether the
                          promotion should be automatically adjusted based on
                          the ratio between the quantities bought and the
                          quantities received.\n\nIf **true**: The promotion
                          will be applied dynamically according to the ratio of
                          the buy quantity to the get quantity. For example, if
                          the promotion is \"Buy 2, Get 1\" and the customer
                          buys 4 items, they would receive 2 free items (scaling
                          based on the original ratio).\n\nIf **false**: The
                          promotion will be applied strictly according to the
                          predefined conditions. For example, even if the
                          customer buys more items, they will receive the fixed
                          free quantity as defined in the original promotion
                          (e.g., buying 4 would still only get them 1 free
                          item).
                        type: boolean
                      slab:
                        type: object
                        properties:
                          buy_quantity:
                            type: integer
                          get_quantity:
                            type: integer
                          quantity_condition:
                            description: >-
                              Defines how the system will evaluate the
                              buy_quantity to determine if the promotion should
                              be applied.
                            enum:
                              - less
                              - less-or-equal
                              - greater
                              - greater-or-equal
                        required:
                          - buy_quantity
                          - get_quantity
                          - quantity_condition
                  - title: CustomSlabs
                    required:
                      - slabs
                    properties:
                      slabs:
                        type: array
                        items:
                          type: object
                          properties:
                            buy_quantity:
                              type: integer
                            get_quantity:
                              type: integer
                            quantity_condition:
                              description: >-
                                Defines how the system will evaluate the
                                buy_quantity to determine if the promotion
                                should be applied.
                              enum:
                                - less
                                - less-or-equal
                                - greater
                                - greater-or-equal
                          required:
                            - buy_quantity
                            - get_quantity
                            - quantity_condition
            type: object
    AssociatedOption:
      title: AssociatedOption
      type: object
      required:
        - attribute_id
        - attribute_value
      properties:
        attribute_id:
          type: string
        attribute_value:
          oneOf:
            - type: string
              description: >-
                Attributes with type of **single-select**, the value will be
                represented as a **string**.
            - $ref: '#/components/schemas/ColorObject'
              description: >-
                **Color** attributes will have their value represented as a
                color object, specifying the color details with name and
                hexcode.
        attribute_name:
          type: string
          readOnly: true
        attribute_type:
          enum:
            - single-select
            - color
          readOnly: true
        key:
          description: value in snake case.
          type: string
          readOnly: true
    VariantCommonDetail:
      title: VariantCommonDetail
      type: object
      properties:
        id:
          description: variant id
          type: string
          readOnly: true
        active:
          type: boolean
          readOnly: true
        stock_available:
          type: boolean
          readOnly: true
        is_default:
          type: boolean
        short_description:
          type:
            - string
            - 'null'
        metadata:
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
        sku:
          description: variant sku. can be null for digital product.
          type:
            - string
            - 'null'
        slug:
          description: variant sku. can be null for digital product.
          type: string
        hsn_code:
          type: string
          readOnly: true
        on_offer:
          type: boolean
          readOnly: true
        on_promotion:
          type: boolean
          readOnly: true
        on_subscription:
          type: boolean
          readOnly: true
        product_type:
          enum:
            - physical
            - digital
          readOnly: true
        product_id:
          type: string
          readOnly: true
        product_name:
          type: string
          readOnly: true
        pricing:
          type: array
          items:
            $ref: '#/components/schemas/ProductPricing'
        created_at:
          type: string
          format: date-time
          readOnly: true
        modified_at:
          type: string
          format: date-time
          readOnly: true
        variant_attributes:
          type: array
          items:
            $ref: '#/components/schemas/ProductAttribute'
      examples: []
      x-tags:
        - Catalog
    ColorObject:
      title: ColorObject
      type: object
      required:
        - name
        - hexcode
      properties:
        name:
          type: string
        hexcode:
          type: string
    SellerBusinessType:
      title: SellerBusinessType
      type: string
      enum:
        - sole_proprietorship
        - private_limited
        - public_listed
        - public_limited
        - state_owned
        - charity
        - individual
    SellerAccountStatus:
      title: SellerAccountStatus
      type: string
      enum:
        - pending_approval
        - approved
        - rejected
    SellerKycStatus:
      title: SellerKycStatus
      type: string
      enum:
        - document_pending
        - document_submitted
        - approved
        - rejected
    PercentageBasedDiscount:
      title: PercentageBasedDiscount
      description: promotion_type = discount
      type:
        - object
        - 'null'
      required:
        - discount_type
        - discount_percent
        - customer_group_id
        - minimum_quantity
        - maximum_quantity
        - maximum_discount_amount
      properties:
        discount_type:
          type: string
          const: percentage
        discount_percent:
          type: number
        customer_group_id:
          type:
            - string
            - 'null'
        minimum_quantity:
          description: >-
            It refers to the minimum quantity of a specific item a customer must
            purchase to qualify for the promotion.
          type: integer
          default: 1
        maximum_quantity:
          description: >-
            It refers to the maximum quantity of a specific item a customer can
            purchase in order to qualify for the promotion. If this field is set
            to null, it indicates that there is no limit.
          type:
            - integer
            - 'null'
        maximum_discount_amount:
          description: >-
            When a value is specified, the discount amount will not exceed the
            defined maximum, ensuring that the promotion stays within a
            controlled discount range. If this field is set to null, it
            indicates that there is no limit to the discount amount.
          type:
            - number
            - 'null'
    FixedAmountBasedDiscount:
      title: FixedAmountBasedDiscount
      description: promotion_type = discount
      type:
        - object
        - 'null'
      required:
        - discount_type
        - discount_fixed_amount
        - customer_group_id
        - minimum_quantity
        - maximum_quantity
      properties:
        discount_type:
          type: string
          const: fixed-amount
        discount_fixed_amount:
          type: integer
        customer_group_id:
          type:
            - string
            - 'null'
        minimum_quantity:
          description: >-
            It refers to the minimum quantity of a specific item a customer must
            purchase to qualify for the promotion.
          type: integer
          default: 1
        maximum_quantity:
          description: >-
            It refers to the maximum quantity of a specific item a customer can
            purchase in order to qualify for the promotion. If this field is set
            to null, it indicates that there is no limit.
          type:
            - integer
            - 'null'
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer

````