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

# Create Product

> Create a new product



## OpenAPI

````yaml openapi-products POST /v2/products
openapi: 3.0.0
info:
  title: Orders Service
  description: Orders service API
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.production.orderprotection.com
    description: Production server
security: []
tags:
  - name: orders
    description: ''
paths:
  /v2/products:
    post:
      tags:
        - Products
      summary: Create Product children
      operationId: ProductApiController_createProduct
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProductDto'
      responses:
        '201':
          description: The product passes validation and has been successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkStatusResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionResponse'
        '409':
          description: Product already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiExceptionResponse'
      security:
        - bearer: []
components:
  schemas:
    CreateProductDto:
      type: object
      properties:
        productId:
          type: string
          example: '123456'
          description: Unique ID for the product
        status:
          type: string
          example: ACTIVE
          description: Status of the variant
          enum:
            - ACTIVE
            - DRAFT
            - ARCHIVED
            - DELETED
        variantId:
          type: string
          example: '123456'
          description: >-
            If your platform supports variant ids, you can use this field here.
            Otherwise use the productId field and leave this blank
        name:
          type: string
          example: '123456'
          description: This is the name of the product.
        description:
          type: string
          example: This product is super awesome and will solve all of your problems
          description: >-
            This is the description of the product. This will help with making
            sure the correct product is chosen
        sku:
          type: string
          example: '123456'
          description: SKU of the product
        price:
          type: number
          example: 22.22
          description: Price of the product
        tax:
          type: number
          example: '123456'
          description: Unique ID for the product
        inventoryType:
          type: string
          example: FULL
          description: What kind of inventory tracking we will do
          enum:
            - FULL
            - SIMPLE
        inventoryQuantity:
          type: number
          example: '123456'
          description: >-
            This is the amount remaining in stock. This is used if you are using
            the FULL inventory type
          enum:
            - FULL
            - SIMPLE
        productImage:
          type: string
          example: https://somedomain.com/image.png
          description: This is the url to show a product image.
        productType:
          type: string
          example: This is the type of product. Can be SIMPLE or GROUPED
          enum:
            - FULL
            - SIMPLE
          description: >-
            This tells us if this product is a bundle or a simple product with
            variants
        inStock:
          type: boolean
          example: true
          description: >-
            If using the SIMPLE mode you just simply tell us if the product is
            in stock or not
        bundleProductIds:
          example:
            - product-id-1
            - product-id-2
          description: >-
            If you are creating a bundled product and have already created the
            child products you can include
                their ids here
          type: array
          items:
            type: string
      required:
        - productId
        - status
        - name
        - price
        - inventoryQuantity
        - productType
    OkStatusResponse:
      type: object
      properties:
        status:
          type: string
          readOnly: true
          deprecated: false
          example: ok
      required:
        - status
    UnauthorizedExceptionResponse:
      type: object
      properties:
        message:
          type: string
          readOnly: true
          example: Unauthorized
        statusCode:
          type: number
          readOnly: true
          example: 401
      required:
        - message
        - statusCode
    ApiExceptionResponse:
      type: object
      properties:
        message:
          type: string
          readOnly: true
          example: order not found
        error:
          type: string
          readOnly: true
          example: Not Found
        statusCode:
          type: number
          readOnly: true
          example: 404
      required:
        - message
        - error
        - statusCode
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````