{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/highlevel/main/json-schema/highlevel-create-product-dto-schema.json",
  "title": "CreateProductDto",
  "x-generated": "2026-09-22",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/highlevel-products-openapi.json#/components/schemas/CreateProductDto",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the product."
    },
    "locationId": {
      "type": "string",
      "description": "The unique identifier for the location."
    },
    "description": {
      "type": "string",
      "description": "A brief description of the product."
    },
    "productType": {
      "type": "string",
      "enum": [
        "DIGITAL",
        "PHYSICAL",
        "SERVICE",
        "PHYSICAL/DIGITAL"
      ]
    },
    "image": {
      "type": "string",
      "description": "The URL for the product image."
    },
    "statementDescriptor": {
      "type": "string",
      "description": "The statement descriptor for the product."
    },
    "availableInStore": {
      "type": "boolean",
      "description": "Indicates whether the product is available in-store."
    },
    "medias": {
      "description": "An array of medias for the product.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/ProductMediaDto"
      }
    },
    "variants": {
      "description": "An array of variants for the product.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/ProductVariantDto"
      }
    },
    "collectionIds": {
      "description": "An array of category Ids for the product",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "isTaxesEnabled": {
      "type": "boolean",
      "description": "Are there any taxes attached to the product. If this is true, taxes array cannot be empty.",
      "default": false
    },
    "taxes": {
      "description": "List of ids of Taxes attached to the Product. If taxes are passed, isTaxesEnabled should be true.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "automaticTaxCategoryId": {
      "type": "string",
      "description": "Tax category ID for Automatic taxes calculation."
    },
    "isLabelEnabled": {
      "type": "boolean",
      "description": "Is the product label enabled. If this is true, label object cannot be empty.",
      "default": false
    },
    "label": {
      "description": "Details for Product Label",
      "allOf": [
        {
          "$ref": "#/$defs/ProductLabelDto"
        }
      ]
    },
    "slug": {
      "type": "string",
      "description": "The slug using which the product navigation will be handled"
    },
    "seo": {
      "description": "SEO data for the product that will be displayed in the preview",
      "allOf": [
        {
          "$ref": "#/$defs/ProductSEODto"
        }
      ]
    },
    "taxInclusive": {
      "type": "boolean",
      "description": "Whether the taxes should be included in the purchase price",
      "default": false
    }
  },
  "required": [
    "name",
    "locationId",
    "productType"
  ],
  "$defs": {
    "ProductLabelDto": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "The content for the product label."
        },
        "startDate": {
          "type": "string",
          "description": "Start date in YYYY-MM-DDTHH:mm:ssZ format"
        },
        "endDate": {
          "type": "string",
          "description": "Start date in YYYY-MM-DDTHH:mm:ssZ format"
        }
      },
      "required": [
        "title"
      ]
    },
    "ProductMediaDto": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for the media."
        },
        "title": {
          "type": "string",
          "description": "The title of the media file."
        },
        "url": {
          "type": "string",
          "description": "The URL where the media file is stored."
        },
        "type": {
          "type": "string",
          "description": "The type of the media file (e.g., image, video will be supporting soon).",
          "enum": [
            "image",
            "video"
          ]
        },
        "isFeatured": {
          "type": "boolean",
          "description": "Indicates whether the media is featured."
        },
        "priceIds": {
          "description": "Mongo ObjectIds of the prices for which the media is assigned",
          "type": "array",
          "items": {
            "type": "array"
          }
        }
      },
      "required": [
        "id",
        "url",
        "type"
      ]
    },
    "ProductSEODto": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "SEO title"
        },
        "description": {
          "type": "string",
          "description": "SEO description"
        }
      }
    },
    "ProductVariantDto": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "A unique identifier for the variant."
        },
        "name": {
          "type": "string",
          "description": "The name of the variant."
        },
        "options": {
          "description": "An array of options for the variant.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProductVariantOptionDto"
          }
        }
      },
      "required": [
        "id",
        "name",
        "options"
      ]
    },
    "ProductVariantOptionDto": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for the option."
        },
        "name": {
          "type": "string",
          "description": "The name of the option."
        }
      },
      "required": [
        "id",
        "name"
      ]
    }
  }
}