{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://pypi.org/schemas/pypi/project-metadata.json", "title": "PyPI Project Metadata", "description": "Core metadata for a Python package hosted on PyPI, as returned by the JSON API. This schema captures the info object that describes authorship, licensing, dependencies, and classification of a project.", "type": "object", "required": ["name", "version"], "properties": { "name": { "type": "string", "description": "The name of the Python package.", "minLength": 1, "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9._-]*[a-zA-Z0-9])?$" }, "version": { "type": "string", "description": "The version string of the release, following PEP 440.", "minLength": 1 }, "summary": { "type": ["string", "null"], "description": "A one-line summary of what the package does.", "maxLength": 512 }, "description": { "type": ["string", "null"], "description": "The full description of the package, which may be in reStructuredText, Markdown, or plain text." }, "description_content_type": { "type": ["string", "null"], "description": "The content type of the description field.", "enum": [null, "text/plain", "text/x-rst", "text/markdown"] }, "author": { "type": ["string", "null"], "description": "The name of the package author." }, "author_email": { "type": ["string", "null"], "description": "The email address of the package author.", "format": "email" }, "maintainer": { "type": ["string", "null"], "description": "The name of the package maintainer." }, "maintainer_email": { "type": ["string", "null"], "description": "The email address of the package maintainer.", "format": "email" }, "license": { "type": ["string", "null"], "description": "The license text or identifier for the package." }, "license_expression": { "type": ["string", "null"], "description": "A SPDX license expression for the package." }, "license_files": { "type": ["array", "null"], "description": "A list of license file paths included in the distribution.", "items": { "type": "string" } }, "keywords": { "type": ["string", "null"], "description": "Comma-separated keywords describing the package." }, "classifiers": { "type": "array", "description": "Trove classifiers indicating the package maturity, audience, license, and supported environments.", "items": { "type": "string", "pattern": "^[A-Za-z]" } }, "platform": { "type": ["string", "null"], "description": "The platform the package targets." }, "home_page": { "type": ["string", "null"], "description": "The URL of the project home page.", "format": "uri" }, "project_url": { "type": "string", "description": "The canonical URL of the project on PyPI.", "format": "uri" }, "project_urls": { "type": ["object", "null"], "description": "A mapping of label strings to URL strings for project-related links.", "additionalProperties": { "type": "string", "format": "uri" } }, "requires_python": { "type": ["string", "null"], "description": "The Python version requirement specifier, following PEP 440." }, "requires_dist": { "type": ["array", "null"], "description": "A list of PEP 508 dependency specifiers required by the package.", "items": { "type": "string" } }, "provides_extra": { "type": ["array", "null"], "description": "A list of optional extra dependency groups provided by the package.", "items": { "type": "string" } }, "dynamic": { "type": ["array", "null"], "description": "Metadata fields that are dynamically specified at build time.", "items": { "type": "string" } }, "yanked": { "type": "boolean", "description": "Whether this release has been yanked from the index." }, "yanked_reason": { "type": ["string", "null"], "description": "The reason the release was yanked, if applicable." } }, "$defs": { "ReleaseFile": { "type": "object", "description": "Metadata about a single distribution file within a release.", "required": ["filename", "url"], "properties": { "filename": { "type": "string", "description": "The name of the distribution file." }, "url": { "type": "string", "description": "The download URL for the distribution file.", "format": "uri" }, "size": { "type": "integer", "description": "The size of the file in bytes.", "minimum": 0 }, "packagetype": { "type": "string", "description": "The type of distribution.", "enum": ["sdist", "bdist_wheel", "bdist_egg", "bdist_wininst", "bdist_rpm"] }, "python_version": { "type": "string", "description": "The Python version this distribution targets." }, "requires_python": { "type": ["string", "null"], "description": "The Python version requirement for this file." }, "upload_time_iso_8601": { "type": "string", "description": "The ISO 8601 timestamp when the file was uploaded.", "format": "date-time" }, "digests": { "$ref": "#/$defs/Digests" }, "yanked": { "type": "boolean", "description": "Whether this file has been yanked." }, "yanked_reason": { "type": ["string", "null"], "description": "The reason the file was yanked." } } }, "Digests": { "type": "object", "description": "Cryptographic hash digests for a distribution file.", "properties": { "md5": { "type": "string", "description": "MD5 hash digest of the file.", "pattern": "^[a-f0-9]{32}$" }, "sha256": { "type": "string", "description": "SHA-256 hash digest of the file.", "pattern": "^[a-f0-9]{64}$" }, "blake2b_256": { "type": "string", "description": "BLAKE2b-256 hash digest of the file.", "pattern": "^[a-f0-9]{64}$" } } }, "Vulnerability": { "type": "object", "description": "A known security vulnerability affecting the project.", "required": ["id"], "properties": { "id": { "type": "string", "description": "The unique identifier of the vulnerability, such as a CVE or PYSEC ID." }, "aliases": { "type": "array", "description": "Alternative identifiers for this vulnerability.", "items": { "type": "string" } }, "summary": { "type": "string", "description": "A brief summary of the vulnerability." }, "details": { "type": "string", "description": "A detailed description of the vulnerability." }, "fixed_in": { "type": "array", "description": "Version strings in which the vulnerability was fixed.", "items": { "type": "string" } }, "link": { "type": "string", "description": "A URL with more information about the vulnerability.", "format": "uri" } } } } }