{
  "service": "riot-package-registry",
  "routes": {
    "publish_artifact": "/v1/publish",
    "views_package_overview": "/v1/views/packages/<package-name>/overview",
    "views_package_readme": "/v1/views/packages/<package-name>/readme?version=<version>",
    "views_package_examples": "/v1/views/packages/<package-name>/examples?version=<version>",
    "views_package_downloads": "/v1/views/packages/<package-name>/downloads",
    "views_package_relations": "/v1/views/packages/<package-name>/relations",
    "views_recent_packages": "/v1/views/recent/packages",
    "views_popular_packages": "/v1/views/popular/packages",
    "views_categories": "/v1/views/categories",
    "views_owner_packages": "/v1/views/owners/<github-login>/packages",
    "views_stats_summary": "/v1/views/stats/summary",
    "views_stats_dashboard": "/v1/views/stats/dashboard",
    "auth_github_start": "/v1/auth/github/start?return_to=<url>",
    "auth_github_callback": "/v1/auth/github/callback?code=<code>&state=<state>",
    "auth_logout": "/v1/auth/logout",
    "me": "/v1/me",
    "tokens": "/v1/me/tokens",
    "yank_release": "/v1/me/packages/<package-name>/versions/<version>/yank",
    "search": "/v1/search?q=<query>",
    "events": "/v1/events?limit=<count>&after=<event-id>",
    "package_events": "/v1/packages/<package-name>/events?version=<version>&limit=<count>"
  },
  "cdn_routes": {
    "index_config": "/index/v1/config.json",
    "index_package": "/index/v1/<sharded-package-document>.json",
    "artifact_download": "/<artifact-key>",
    "riot_latest_metadata": "/riot/latest.json",
    "riot_release_metadata": "/riot/riot-<version>.json"
  },
  "legacy_routes": {
    "publish_artifact": "/api/v1/publish",
    "index_config": "/api/v1/index/config.json",
    "index_package": "/api/v1/index/<sharded-package-document>.json",
    "artifact_download": "/api/v1/artifacts/<artifact-key>",
    "riot_latest_metadata": "/api/v1/riot/latest.json",
    "riot_release_metadata": "/api/v1/riot/riot-<version>.json",
    "views_package_overview": "/api/v1/views/packages/<package-name>/overview",
    "views_package_readme": "/api/v1/views/packages/<package-name>/readme?version=<version>",
    "views_package_examples": "/api/v1/views/packages/<package-name>/examples?version=<version>",
    "views_package_downloads": "/api/v1/views/packages/<package-name>/downloads",
    "views_package_relations": "/api/v1/views/packages/<package-name>/relations",
    "views_recent_packages": "/api/v1/views/recent/packages",
    "views_popular_packages": "/api/v1/views/popular/packages",
    "views_categories": "/api/v1/views/categories",
    "views_owner_packages": "/api/v1/views/owners/<github-login>/packages",
    "views_stats_summary": "/api/v1/views/stats/summary",
    "views_stats_dashboard": "/api/v1/views/stats/dashboard",
    "auth_github_start": "/auth/github/start?return_to=<url>",
    "auth_github_callback": "/auth/github/callback?code=<code>&state=<state>",
    "auth_logout": "/auth/logout",
    "me": "/api/v1/me",
    "tokens": "/api/v1/me/tokens",
    "yank_release": "/api/v1/me/packages/<package-name>/versions/<version>/yank",
    "search": "/api/v1/search?q=<query>",
    "events": "/api/v1/events?limit=<count>&after=<event-id>",
    "package_events": "/api/v1/packages/<package-name>/events?version=<version>&limit=<count>"
  },
  "cdn_base_url": "https://cdn.pkgs.ml",
  "index_base_url": "https://cdn.pkgs.ml/index/v1"
}