{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://amazonalexa.com/ask/2020/12/ArgumentsDeclaration",
  "title": "ArgumentsDeclaration",
  "description": "Represents the declaration of a set of arguments.",
  "type": "array",
  "items": {
    "title": "argument-declaration",
    "description": "The representation of an argument declaration.",
    "type": "object",
    "additionalProperties": false,
    "required": ["name", "type"],
    "properties": {
      "name": {
        "description": "The name of the argument.",
        "$ref": "https://amazonalexa.com/ask/2020/12/Name"
      },
      "type": {
        "description": "The argument's type.",
        "$ref": "https://amazonalexa.com/ask/2020/12/TypeReference"
      },
      "defaultExpression": {
        "description": "Indicates whether the argument is required. If the argument is not provided in an 'Call' expression, this expression will be used instead.",
        "oneOf": [
          { "$ref": "https://amazonalexa.com/ask/2020/12/Call" },
          { "$ref": "https://amazonalexa.com/ask/2020/12/PropertyReference" },
          { "$ref": "https://amazonalexa.com/ask/2020/12/NameReference" }
        ]
      },
      "annotations": {
        "type": "array",
        "items": {
          "$ref": "https://amazonalexa.com/ask/2020/12/Call",
          "description": "call data structures to annotate this argument declaration."
        }
      }
    }
  }
}
