---
title: "CreateProduct"
url: "https://developers.zinnia.com/apis/product-service/versions/22f4da0f-1e2d-480a-b682-ea9a0819b47f/operations/CreateProduct"
---

> Full API specification: https://developers.zinnia.com/apis/product-service/versions/22f4da0f-1e2d-480a-b682-ea9a0819b47f.md

# CreateProduct

`POST` `/product/v1/products`

Operation ID: `CreateProduct`

Create Product

## Request body (required)

Content types: `application/json`

## Responses

- `400` - Bad Request – validation error or duplicate key
- `401` - Unauthorized – missing or invalid token
- `403` - Forbidden – insufficient permissions
- `500` - Internal Server Error
- `default`

## OpenAPI definition

```yaml
openapi: 3.0.0
info:
  title: Zinnia Product Service
  version: 0.1.0
servers:
  - url: https://uat.api.zinnia.io
paths:
  /product/v1/products:
    post:
      operationId: CreateProduct
      summary: ""
      description: Create Product
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProductDataModel"
      responses:
        "400":
          description: Bad Request – validation error or duplicate key
        "401":
          description: Unauthorized – missing or invalid token
        "403":
          description: Forbidden – insufficient permissions
        "500":
          description: Internal Server Error
        default:
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductModelDB"
      tags:
        - Product
      security:
        - Auth0: []
security:
  - Auth0: []
components:
  schemas:
    ProductDataModel:
      type: object
      properties:
        productId:
          type: string
          description: Zinnia generated unique ID generated to uniquely identify the
            product in our product master database
          example: UUID
        carrierProductId:
          type: string
          description: Carrier generated unique ID, which may be used to communicate
            across integrations.
          example: EVGL-PROD-001
        productMarketingName:
          type: string
          description: Carrier generated marketing name for the product
          example: Everglades Term Life
          enum:
            - Everglades Term Life
            - Everglades Return of Premium Term
            - Everglades Index Universal Life
        carrier:
          type: string
          description: Unique carrier key used in enterprise APIs
          example: EVGL
        productLine:
          type: string
          description: Product line category
          example: LIFE
          enum:
            - LIFE
            - ANNUITY
        productType:
          type: string
          description: Product type category
          example: TERM
          enum:
            - INDEX_UNIVERSAL_LIFE
            - UNIVERSAL_LIFE
            - TERM
        planCode:
          type: string
          description: Plan code for the product (multiple can exist for a single product)
          example: EVGUL001
        termLength:
          type: array
          description: Term length in years
          example:
            - 10
            - 20
            - 30
          items:
            type: number
            enum:
              - 1
              - 5
              - 10
              - 15
              - 20
              - 25
              - 30
              - 35
              - 40
        availableToSell:
          type: boolean
          description: Indicates if the product is available to sell
          example: true
    ProductModelDB:
      type: object
      properties:
        productId:
          type: string
          description: Zinnia generated unique ID generated to uniquely identify the
            product in our product master database
          example: UUID
        carrierProductId:
          type: string
          description: Carrier generated unique ID, which may be used to communicate
            across integrations.
          example: EVGL-PROD-001
        productMarketingName:
          type: string
          description: Carrier generated marketing name for the product
          example: Everglades Term Life
          enum:
            - Everglades Term Life
            - Everglades Return of Premium Term
            - Everglades Index Universal Life
        carrier:
          type: string
          description: Unique carrier key used in enterprise APIs
          example: EVGL
        productLine:
          type: string
          description: Product line category
          example: LIFE
          enum:
            - LIFE
            - ANNUITY
        productType:
          type: string
          description: Product type category
          example: TERM
          enum:
            - INDEX_UNIVERSAL_LIFE
            - UNIVERSAL_LIFE
            - TERM
        planCode:
          type: string
          description: Plan code for the product (multiple can exist for a single product)
          example: EVGUL001
        termLength:
          type: array
          description: Term length in years
          example:
            - 10
            - 20
            - 30
          items:
            type: number
            enum:
              - 1
              - 5
              - 10
              - 15
              - 20
              - 25
              - 30
              - 35
              - 40
        availableToSell:
          type: boolean
          description: Indicates if the product is available to sell
          example: true
        id:
          type: string
          description: Database generated unique ID
  securitySchemes:
    Auth0:
      type: openIdConnect
      openIdConnectUrl: https://login.uat.zinnia.com/.well-known/openid-configuration
      x-kong-security-openid-connect:
        config:
          run_on_preflight: true
          scopes_claim:
            - https://uat.api.zinnia.io/permissions
          audience_claim:
            - aud
          audience_required:
            - https://uat.api.zinnia.io
          auth_methods:
            - bearer
          scopes: []
        enabled: true
        protocols:
          - grpc
          - grpcs
          - http
          - https
```
