{
  "x402Version": 2,
  "id": 1154,
  "slug": "1154",
  "resource": "https://gateway.stride20k.com/dev/pypi/:packageName",
  "description": "PyPI package health API: dependency-hygiene facts from the official PyPI JSON API — latest version, upload time, total releases, yank status, declared dependency count, requires-python constraint, license, summary, and weekly downloads (pypistats). Names are PEP 503-normalized (dots/underscores/hyphens equivalent). Use for auditing requirements.txt and pyproject.toml, supply-chain security checks, and version freshness agents. Cached up to 1 hour per package.",
  "type": "http",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x552Cc4A10878C7F20574489D47184249657Ca3f6",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "3000",
      "maxTimeoutSeconds": 60
    }
  ],
  "outputSchema": {
    "bazaar": {
      "info": {
        "input": {
          "method": "GET",
          "pathParams": {
            "packageName": "requests"
          },
          "queryParams": {},
          "type": "http"
        },
        "output": {
          "example": {
            "data": {
              "dependencyCount": 6,
              "latestUploadedAt": "2026-05-14T19:25:26.443000Z",
              "latestVersion": "2.34.2",
              "license": "Apache-2.0",
              "package": "requests",
              "requiresPython": ">=3.10",
              "summary": "Python HTTP for Humans.",
              "versionCount": 163,
              "weeklyDownloads": 380362015,
              "yanked": false
            },
            "endpoint": "/dev/pypi/:packageName",
            "meta": {
              "attribution": null,
              "cached": false,
              "fetchedAt": "2026-07-04T00:00:00.000Z",
              "source": "PyPI JSON API + pypistats"
            },
            "ok": true
          },
          "type": "json"
        }
      },
      "routeTemplate": "/dev/pypi/:packageName",
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "method": {
                "enum": [
                  "GET"
                ],
                "type": "string"
              },
              "pathParams": {
                "properties": {
                  "packageName": {
                    "description": "PyPI package name (PEP 503 normalized, e.g. 'requests', 'scikit-learn').",
                    "normalize": "lower",
                    "pattern": "[A-Za-z0-9]([A-Za-z0-9._-]*[A-Za-z0-9])?",
                    "type": "string"
                  }
                },
                "required": [
                  "packageName"
                ],
                "type": "object"
              },
              "queryParams": {
                "properties": {},
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "properties": {
                  "data": {
                    "properties": {
                      "dependencyCount": {
                        "description": "Declared requires_dist entries for the latest release.",
                        "type": "integer"
                      },
                      "latestUploadedAt": {
                        "description": "Upload time of the newest release files, ISO 8601.",
                        "type": "string"
                      },
                      "latestVersion": {
                        "description": "Current release version.",
                        "type": "string"
                      },
                      "license": {
                        "description": "Declared license (truncated to 120 chars), or null.",
                        "type": "string"
                      },
                      "package": {
                        "description": "Canonical package name.",
                        "type": "string"
                      },
                      "requiresPython": {
                        "description": "requires-python constraint (e.g. '>=3.10'), or null.",
                        "type": "string"
                      },
                      "summary": {
                        "description": "One-line package summary.",
                        "type": "string"
                      },
                      "versionCount": {
                        "description": "Total published releases.",
                        "type": "integer"
                      },
                      "weeklyDownloads": {
                        "description": "Downloads in the last 7 days, or null if unavailable.",
                        "type": "integer"
                      },
                      "yanked": {
                        "description": "Whether the latest release is yanked.",
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "package",
                      "latestVersion",
                      "yanked"
                    ],
                    "type": "object"
                  },
                  "endpoint": {
                    "description": "Always \"/dev/pypi/:packageName\".",
                    "type": "string"
                  },
                  "meta": {
                    "properties": {
                      "attribution": {
                        "description": "Licensing attribution when the source requires it.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "cached": {
                        "description": "Whether this response was served from cache.",
                        "type": "boolean"
                      },
                      "fetchedAt": {
                        "description": "ISO 8601 time the data was actually retrieved from the upstream.",
                        "type": "string"
                      },
                      "source": {
                        "description": "Upstream source: PyPI JSON API + pypistats.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "source",
                      "cached",
                      "fetchedAt"
                    ],
                    "type": "object"
                  },
                  "ok": {
                    "description": "true on success.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "ok",
                  "endpoint",
                  "data",
                  "meta"
                ],
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "bazaar"
  ],
  "sourceHost": "gateway.stride20k.com",
  "lastUpdated": "2026-08-30T12:06:44.526Z",
  "quality": {
    "calls30d": 2,
    "uniquePayers30d": 2,
    "lastCalledAt": "2026-08-30T12:06:44.384Z"
  },
  "liveness": {},
  "verified": false,
  "featured": false,
  "provider": {
    "host": "gateway.stride20k.com",
    "manifest_name": "gateway.stride20k.com",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-09-18T22:00:31.484Z"
  }
}