/backage

Metadata endpoint for GitHub Packages that powers badges

Primary LanguageShellMIT LicenseMIT

logo

SOTA Sprinkler System

It's all part and parcel.


The GitHub Packages API doesn't expose much metadata that other registries provide; this is the remedy. Four owner services are hosted and ran on GitHub: manual entry, automatic discovery, batch queuing, and batch processing. They query the GitHub API, scraping GitHub when needed, to produce a JSON endpoint served from GitHub and a SQLite database stored on GitHub.

You can view currently available owners in the index. To add any post-haste, you can open an issue and/or add the case-sensitive name of each user or organization on a new line in owners.txt on your own fork here and make a pull request. Please add just the name(s) -- ids, repos, and packages will be obtained automatically!

If you're here to make a badge, use something like shields.io/json with the endpoint below. Here's what badges could look like for a few of the available properties:

package

downloads size latest

Database

All of the data is available under the latest release. There are two classes of tables:

Package
Column Type Description
owner_id INTEGER The ID of the owner
owner_type TEXT The type of owner (e.g. users)
package_type TEXT The type of package (e.g. container)
owner TEXT The owner of the package
repo TEXT The repository of the package
package TEXT The package name
size INTEGER The size of the latest version
downloads INTEGER The total number of downloads
downloads_month INTEGER The total number of downloads in the last month
downloads_week INTEGER The total number of downloads in the last week
downloads_day INTEGER The total number of downloads in the last day
date TEXT The most recent date the package was refreshed
Version
Column Type Description
id INTEGER The ID of the version
name TEXT The version name
size INTEGER The size of the version
downloads INTEGER The total number of downloads
downloads_month INTEGER The total number of downloads in the last month
downloads_week INTEGER The total number of downloads in the last week
downloads_day INTEGER The total number of downloads in the last day
date TEXT The most recent date the version was refreshed
tags TEXT The tags of the version (csv)

Endpoint

The latest additions to the continually updated database, with two classes of objects:

Package
Property Type Description
owner_id number The ID of the owner
owner_type string The type of owner (e.g. users)
package_type string The type of package (e.g. container)
owner string The owner of the package
repo string The repository of the package
package string The package name
date string The most recent date the package was refreshed
size string Formatted size of the latest version
versions string Formatted count of versions tracked
tagged string Formatted count of tagged versions tracked
downloads string Formatted count of all downloads
downloads_month string Formatted count of all downloads in the last month
downloads_week string Formatted count of all downloads in the last week
downloads_day string Formatted count of all downloads in the last day
raw_size number Size of the latest version, in bytes
raw_versions number Count of versions tracked
raw_tagged number Count of tagged versions tracked
raw_downloads number Count of all downloads
raw_downloads_month number Count of all downloads in the last month
raw_downloads_week number Count of all downloads in the last week
raw_downloads_day number Count of all downloads in the last day
version object array The versions of the package (see below)
Version
Property Type Description
id number The ID of the version
name string The version name
date string The most recent date the version was refreshed
newest boolean Whether the version is the newest
latest boolean Whether the version is the newest tagged
size string Formatted size of the version
downloads string Formatted count of downloads
downloads_month string Formatted count of downloads in the last month
downloads_week string Formatted count of downloads in the last week
downloads_day string Formatted number of downloads in the last day
raw_size number Size of the version, in bytes
raw_downloads number Count of downloads
raw_downloads_month number Count of downloads in the last month
raw_downloads_week number Count of downloads in the last week
raw_downloads_day number Count of downloads in the last day
tags string array The tags of the version

URL

Replace OWNER/REPO/PACKAGE with their respective values:

https://ipitio.github.io/backage/OWNER/REPO/PACKAGE.json

JSONPath

You can query a package for its properties, like size or version:

$.PROPERTY
$.size

Versions can be filtered in and tags out:

$.version[FILTER].PROPERTY
$.version[?(@.latest == true)].tags[?(@ != "latest")]