Operator, weapon and gadget data for the R6 Siege Randomizer Android app.
The app loads this data from https://content.jojaweb.com/v1/manifest.json. New operators, loadout fixes and new weapons therefore reach players without an app update. Anyone can suggest a change with a pull request; the maintainer reviews it and publishes a new content pack.
Full documentation: https://jojaweb.com/r6random/docs/
v1/manifest.json (a conditional request with If-None-Match). Most days the answer is “not modified” and nothing else happens.manifest.json.sig) against the public key built into the app. An unsigned or altered manifest is ignored.v1/packs/<version>.json) and only the images it does not have yet. Every file is checked against the sha256 listed in the signed manifest.Players can turn automatic updates off, limit them to Wi-Fi, or switch to offline mode (no network requests at all). Every app release also bundles a pinned pack, so a fresh install works without a connection.
data/
operators/<id>.json one file per operator
weapons/<id>.json one file per weapon
gadgets/<id>.json general gadgets (frag grenade, barbed wire …)
attachments/classes.json attachment defaults per weapon class
attachments/attachments.json all attachments (sight, barrel, grip, underbarrel)
roles.json role names in English, German, French, Luxembourgish
meta.json label and release note for the next pack
messages.json messages shown to players
icons/
operators/ abilities/ weapons/ gadgets/ <id>.svg (preferred), .png or .webp
schema/ JSON Schema for every file above, plus manifest and pack
scripts/ validate, build, changelog, new, preview, keygen, sign
templates/ starting points for npm run new
.github/ checks, publishing, issue forms
You need Node.js 22 or newer and git.
git clone https://github.com/JayRasp/r6random-content.git
cd r6random-content
npm ci
npm run validate
To add an operator:
npm run new -- operator noor # creates data/operators/noor.json
# edit the file, add icons/operators/noor.svg and icons/abilities/<ability id>.svg
npm run validate # fix anything it reports
Then open a pull request. Small fixes (one loadout entry, a name) also work directly in the GitHub web editor; the checks run on the pull request either way.
CONTRIBUTING.md has the full guide.
| Command | What it does |
|---|---|
npm ci |
Installs the four dependencies (ajv, ajv-formats, sharp, svgo). |
npm run validate |
Checks schemas, references between files, icons and translations. Errors fail, warnings do not. |
npm run new -- operator <id> |
Creates a new operator file from the template (also weapon, gadget). |
npm run build -- --version 2026.09.0 --label Y11S3.0 |
Writes the pack, images and manifest to dist/. |
npm run changelog -- --base content-2026.03.0 |
Lists what changed since a release tag. |
npm run preview |
Serves dist/ on http://localhost:8080 for testing with a debug build of the app. |
npm run keygen |
Creates the signing key pair (maintainer only, once). |
npm run sign -- dist/v1/manifest.json |
Signs the manifest (maintainer and publish workflow only). |
Only the maintainer publishes. After pull requests are merged into main, the maintainer pushes a tag such as content-2026.09.0. The publish workflow then waits for the maintainer’s approval, builds the pack, signs the manifest and deploys it to GitHub Pages at content.jojaweb.com. Every player gets the new pack on their next daily check.
Data, schemas, scripts and documentation: CC BY-SA 4.0. The icon artwork is not covered by that licence; see LICENSE for details and credits.
Tom Clancy’s Rainbow Six Siege is a trademark of Ubisoft Entertainment. This project is not affiliated with or endorsed by Ubisoft.