Public API
Read-only JSON under /api/v1. Responses carry ETag and Last-Modified; send If-None-Match to get cheap 304s.
GET /api/v1/manifest.json | Static catalogue: every public addon with its latest version per channel, package URL and SHA-256. |
GET /api/v1/addons | Listing with filters. |
GET /api/v1/addons/{slug} | Addon details. |
GET /api/v1/addons/{slug}/releases/{version} | Release, modules, dependencies and install closure. |
Write API and CI uploads
Create a personal token under API tokens and send it as Authorization: Bearer ror_…. Uploads go through the same verification pipeline as the web form: the response is 202 with a status URL to poll, and the release is published automatically only when you are a trusted maintainer of the addon.
GET /api/v1/me | The token's owner, scopes and the addons it may act on. |
POST /api/v1/addons/{slug}/releases | Multipart upload: version (semver), package (zip), optional changelog_md. Scope releases:write. |
GET /api/v1/addons/{slug}/releases/{version}/status | Pipeline status and check results, including unpublished releases. Scope releases:read. |
curl
curl -sS -H "Authorization: Bearer $ROR_TOKEN" \
-F version=1.2.3 -F [email protected] -F [email protected] \
https://addons.returnofreckoning.com/api/v1/addons/my-addon/releases
GitHub Actions
Push a tag such as v1.2.3. Add the token as the repository secret ROR_TOKEN. The registry writes the version and release date into every .mod, so leave version="@project-version@" in your source.
name: Publish to RoR addons
on:
push:
tags: ['v*']
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Package
run: |
VERSION="${GITHUB_REF_NAME#v}"
zip -r "$RUNNER_TEMP/addon.zip" . -x '.git*' '.github/*'
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
- name: Upload
run: |
curl -sSf -H "Authorization: Bearer ${{ secrets.ROR_TOKEN }}" \
-F "version=$VERSION" -F "package=@$RUNNER_TEMP/addon.zip" \
https://addons.returnofreckoning.com/api/v1/addons/${{ vars.ROR_ADDON }}/releases
GitLab CI
publish:
stage: deploy
image: alpine:3
rules:
- if: $CI_COMMIT_TAG =~ /^v/
script:
- apk add --no-cache curl zip
- VERSION="${CI_COMMIT_TAG#v}"
- zip -r addon.zip . -x '.git*'
- curl -sSf -H "Authorization: Bearer $ROR_TOKEN" -F "version=$VERSION" -F "[email protected]" https://addons.returnofreckoning.com/api/v1/addons/$ROR_ADDON/releases
Prefer not to run CI? Link the repository from the addon's manage page instead and the registry pulls each tag itself.