{
  "$schema":     "http://json-schema.org/draft-04/schema#",
  "title":       "Resource Type",
  "description": "A puppet resource type",
  "type":        "object",
  "properties": {
    "doc": {
      "type": "string",
      "description": "Any documentation comment from the type definition"
    },
    "line": {
      "type": "integer",
      "description": "The line number where the type is defined"
    },
    "file": {
      "type": "string",
      "description": "The full path of the file where the type is defined"
    },
    "parent": {
      "type": "string",
      "description": "If the type inherits from another type, the name of that type"
    },
    "name": {
      "type": "string",
      "description": "The fully qualified name"
    },
    "kind": {
      "type": "string",
      "description": "The kind of object the type represents",
      "enum": [
        "class",
        "node",
        "defined_type"
      ]
    },
    "parameters": {
      "type": "object",
      "description": "The default arguments to the type. If an argument has no default value, the value is represented by a literal \"null\" (without quotes in pson).  Default values are the string representation of that value, even for more complex structures (e.g. the hash { key => 'val', key2 => 'val2' } would be represented in pson as \"{key => \\\"val\\\", key2 => \\\"val2\\\"}\"."
    }
  },
  "required": ["name", "kind"],
  "additionalProperties": false
}
