{
    "name": "Package",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "name": {
            "type": "string",
            "description": "Package name, including type prefix if it's a plugin",
            "required": true
        },
        "type": {
            "description": "Package type, either 'Library', or the parent project it applies to if it's a plugin for a framework or application (e.g. 'Symfony2', 'Typo3', 'Drupal', ..), note that this has to be defined and communicated by any project implementing a custom composer installer, those are just unreliable examples.",
            "type": "string",
            "optional": true
        },
        "target-dir": {
            "description": "Override install location of package",
            "type": "string"
        },
        "description": {
            "type": "string",
            "description": "Package description",
            "required": true
        },
        "keywords": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "optional": true
        },
        "homepage": {
            "type": "string",
            "description": "Homepage URL for the project",
            "format": "uri",
            "optional": true
        },
        "version": {
            "type": "string",
            "description": "Package version, see http://packagist.org/about for more info on valid schemes",
            "required": true
        },
        "license": {
            "type": ["string", "array"],
            "description": "License name",
            "optional": true
        },
        "authors": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Full name of the author",
                        "required": true
                    },
                    "email": {
                        "type": "string",
                        "description": "Email address of the author",
                        "format": "email",
                        "required": true
                    },
                    "homepage": {
                        "type": "string",
                        "description": "Homepage URL for the author",
                        "format": "uri",
                        "optional": true
                    }
                }
            },
            "optional": true
        },
        "require": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "replace": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "conflict": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "provide": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "recommend": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "suggest": {
            "type": "object",
            "additionalProperties": true,
            "optional": true
        },
        "extra": {
            "type": ["object", "array"],
            "additionalProperties": true,
            "optional": true
        },
        "autoload": {
            "type": "object",
            "additionalProperties": true
        }
    }
}