{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:PropertyValueSpecification",
  "title": "PropertyValueSpecification",
  "description": "A Property value specification.",
  "type": "object",
  "allOf": [
    {
      "description": "A utility class that serves as the umbrella for a number of 'intangible' things such as quantities, structured values, etc.",
      "$ref": "schema:Intangible"
    }
  ],
  "properties": {
    "defaultValue": {
      "description": "The default value of the input.  For properties that expect a literal, the default is a literal value, for properties that expect an object, it's an ID reference to one of the current values.",
      "anyOf": [{ "type": "string" }, { "$ref": "schema:Thing" }]
    },
    "maxValue": {
      "description": "The upper value of some characteristic or property.",
      "type": "number"
    },
    "minValue": {
      "description": "The lower value of some characteristic or property.",
      "type": "number"
    },
    "multipleValues": {
      "description": "Whether multiple values are allowed for the property.  Default is false.",
      "type": "boolean"
    },
    "readonlyValue": {
      "description": "Whether or not a property is mutable.  Default is false. Specifying this for a property that also has a value makes it act similar to a \"hidden\" input in an HTML form.",
      "type": "boolean"
    },
    "stepValue": {
      "description": "The stepValue attribute indicates the granularity that is expected (and required) of the value in a PropertyValueSpecification.",
      "type": "number"
    },
    "valueMaxLength": {
      "description": "Specifies the allowed range for number of characters in a literal value.",
      "oneOf": [
        { "type": "number" },
        { "type": "array", "items": { "type": "number" } }
      ]
    },
    "valueMinLength": {
      "description": "Specifies the minimum allowed range for number of characters in a literal value.",
      "oneOf": [
        { "type": "number" },
        { "type": "array", "items": { "type": "number" } }
      ]
    },
    "valueName": {
      "description": "Indicates the name of the PropertyValueSpecification to be used in URL templates and form encoding in a manner analogous to HTML's input@name.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "valuePattern": {
      "description": "Specifies a regular expression for testing literal values according to the HTML spec.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "valueRequired": {
      "description": "Whether the property must be filled in to complete the action.  Default is false.",
      "type": "boolean"
    }
  }
}
