{
  "$schema": "https://schemas.amazon.com/selling-partners/definitions/product-types/meta-schema/v1",
  "$id": "https://schemas.amazon.com/selling-partners/definitions/product-types/meta-schema/v1",
  "$vocabulary": {
    "https://json-schema.org/draft/2019-09/vocab/core": true,
    "https://json-schema.org/draft/2019-09/vocab/applicator": true,
    "https://json-schema.org/draft/2019-09/vocab/validation": true,
    "https://json-schema.org/draft/2019-09/vocab/meta-data": true,
    "https://json-schema.org/draft/2019-09/vocab/format": true,
    "https://json-schema.org/draft/2019-09/vocab/content": true,
    "https://schemas.amazon.com/selling-partners/definitions/product-types/vocabulary/v1": true
  },
  "allOf": [
    {
      "$ref": "https://json-schema.org/draft/2019-09/schema"
    }
  ],
  "title": "Amazon Product Type Definition Meta-Schema v1",
  "$comment": "Meta-schema for JSON Schema instances describing the properties and requirements for Amazon product types, such as LUGGAGE.",
  "properties": {
    "editable": {
      "$comment": "Editable indicates whether or not an item property can be modified after the item has been created.",
      "type": "boolean"
    },
    "enumNames": {
      "$comment": "For objects with enum values defined, enum names provide display labels for the enum values in the same order as the enum values array.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "hidden": {
      "$comment": "Suggests whether or not a property should be hidden in Amazon user interfaces. Hiding or displaying these properties is at the discretion of the application consuming the Amazon Product Type Definition Meta-Schema.",
      "type": "boolean"
    },
    "maxUniqueItems": {
      "$comment": "Maximum unique items indicates the maximum number of items with the same combination of selector properties.",
      "type": "integer"
    },
    "minUniqueItems": {
      "$comment": "Minimum unique items indicates the minimum number of items with the same combination of selector properties.",
      "type": "integer"
    },
    "maxUtf8ByteLength": {
      "$comment": "Maximum UTF-8 byte length indicates the maximum length of a string property in bytes.",
      "type": "integer"
    },
    "minUtf8ByteLength": {
      "$comment": "Minimum UTF-8 byte length indicates the minimum length of a string property in bytes.",
      "type": "integer"
    },
    "selectors": {
      "$comment": "Selectors indicate the properties of an object in an array that, in combination, make the object unique.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "$lifecycle": {
      "$comment": "The $lifecycle element provides details for property and constraint changes, such as replacement properties and enumeration value deprecations.",
      "type": "object",
      "properties": {
        "replacedBy": {
          "$comment": "ReplacedBy indicates the properties replacing this property, in an array, using the Relative JSON Pointer specification: http://json-schema.org/draft/2019-09/relative-json-pointer.html.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "replaces": {
          "$comment": "Replaces indicates the properties being replaced by this property, in an array, using the Relative JSON Pointer specification: http://json-schema.org/draft/2019-09/relative-json-pointer.html.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "enumDeprecated": {
          "$comment": "EnumDeprecated provides an array of enum values that are deprecated and will be removed in the future. Existing usage of these deprecated enum values should be replaced with another value before they are removed.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "enumReplacement": {
          "$comment": "EnumReplacement provides an array of deprecated enum values with their suggested replacement value(s) in an array.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "$comment": "Deprecated enum value.",
                "type": "string"
              },
              "replacements":
              {
                "$comment": "One or more suggested replacement values for the deprecated enum value in an array.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            }
          }
        }
      }
    }
  }
}