{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/amazon-service-catalog/json-schema/amazon-service-catalog-create-product-input-schema.json",
  "title": "CreateProductInput",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amazon-service-catalog-products-api-openapi.yml#/components/schemas/CreateProductInput",
  "type": "object",
  "properties": {
    "AcceptLanguage": {
      "type": "string",
      "description": "The language code. jp - Japanese zh - Chinese"
    },
    "Name": {
      "type": "string",
      "description": "The name of the product."
    },
    "Owner": {
      "type": "string",
      "description": "The owner of the product."
    },
    "Description": {
      "type": "string",
      "description": "The description of the product."
    },
    "Distributor": {
      "type": "string",
      "description": "The distributor of the product."
    },
    "SupportDescription": {
      "type": "string",
      "description": "The support information about the product."
    },
    "SupportEmail": {
      "type": "string",
      "description": "The contact email for product support."
    },
    "SupportUrl": {
      "type": "string",
      "description": "The contact URL for product support. ^https?:\\/\\// / is the pattern used to validate SupportUrl."
    },
    "ProductType": {
      "type": "string",
      "enum": [
        "CLOUD_FORMATION_TEMPLATE",
        "MARKETPLACE",
        "TERRAFORM_OPEN_SOURCE",
        "TERRAFORM_CLOUD",
        "EXTERNAL"
      ],
      "description": "The type of product."
    },
    "Tags": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Tag"
      },
      "description": "One or more tags."
    },
    "ProvisioningArtifactParameters": {
      "$ref": "#/$defs/ProvisioningArtifactProperties"
    },
    "IdempotencyToken": {
      "type": "string",
      "description": "A unique identifier that you provide to ensure idempotency. If multiple requests differ only by the idempotency token, the same response is returned for each repeated request."
    },
    "SourceConnection": {
      "$ref": "#/$defs/SourceConnection"
    }
  },
  "required": [
    "Name",
    "Owner",
    "ProductType",
    "IdempotencyToken"
  ],
  "$defs": {
    "CodeStarParameters": {
      "type": "object",
      "properties": {
        "ConnectionArn": {
          "type": "string",
          "description": "The CodeStar ARN, which is the connection between Service Catalog and the external repository."
        },
        "Repository": {
          "type": "string",
          "description": "The specific repository where the product’s artifact-to-be-synced resides, formatted as \"Account/Repo.\""
        },
        "Branch": {
          "type": "string",
          "description": "The specific branch where the artifact resides."
        },
        "ArtifactPath": {
          "type": "string",
          "description": "The absolute path wehre the artifact resides within the repo and branch, formatted as \"folder/file.json.\""
        }
      },
      "required": [
        "ConnectionArn",
        "Repository",
        "Branch",
        "ArtifactPath"
      ]
    },
    "ProvisioningArtifactProperties": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "The name of the provisioning artifact (for example, v1 v2beta). No spaces are allowed."
        },
        "Description": {
          "type": "string",
          "description": "The description of the provisioning artifact, including how it differs from the previous provisioning artifact."
        },
        "Info": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specify the template source with one of the following options, but not both. Keys accepted: [ LoadTemplateFromURL, ImportFromPhysicalId ] The URL of the CloudFormation template in Amazon S3 or GitHub in JSON format. Specify the URL in JSON format as follows: \"LoadTemplateFromURL\": \"https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/...\" ImportFromPhysicalId: The physical id of the resource that contains the template. Currently only supports CloudFormation stack arn. Specify the physical id in JSON format as follows: ImportFromPhysicalId: “arn:aws:cloudformation:[us-east-1]:[accountId"
        },
        "Type": {
          "type": "string",
          "enum": [
            "CLOUD_FORMATION_TEMPLATE",
            "MARKETPLACE_AMI",
            "MARKETPLACE_CAR",
            "TERRAFORM_OPEN_SOURCE",
            "TERRAFORM_CLOUD",
            "EXTERNAL"
          ],
          "description": "The type of provisioning artifact. CLOUD_FORMATION_TEMPLATE - CloudFormation template TERRAFORM_OPEN_SOURCE - Terraform Open Source configuration file TERRAFORM_CLOUD - Terraform Cloud configuration file EXTERNAL - External configuration file"
        },
        "DisableTemplateValidation": {
          "type": "boolean",
          "description": "If set to true, Service Catalog stops validating the specified provisioning artifact even if it is invalid. Service Catalog does not support template validation for the TERRAFORM_OS product type."
        }
      }
    },
    "SourceConnection": {
      "type": "object",
      "properties": {
        "Type": {
          "type": "string",
          "enum": [
            "CODESTAR"
          ],
          "description": "The only supported SourceConnection type is Codestar."
        },
        "ConnectionParameters": {
          "$ref": "#/$defs/SourceConnectionParameters"
        }
      },
      "required": [
        "ConnectionParameters"
      ]
    },
    "SourceConnectionParameters": {
      "type": "object",
      "properties": {
        "CodeStar": {
          "$ref": "#/$defs/CodeStarParameters"
        }
      }
    },
    "Tag": {
      "type": "object",
      "properties": {
        "Key": {
          "type": "string",
          "description": "The tag key."
        },
        "Value": {
          "type": "string",
          "description": "The value for this key."
        }
      },
      "required": [
        "Key",
        "Value"
      ]
    }
  }
}