Projects and versions
The model
| Entity | What it is |
|---|---|
| Project | The top-level container. Has a name, an alias, an owner and its own CDN location. |
| Version | A named snapshot line of the project's files, such as default or staging. |
| File | A config file: json, lua, txt, css or scss. |
| Consumer | A client that receives configs (a game build, a backend service). |
| Tag | A free-form label for grouping and filtering files. |
| Bundle | A named set of files delivered together. Membership is set per version. |
Projects are created in the Veresk web interface. Versions, files, tags and publishing are also available through the REST API and MCP. Consumers, bundles, encryption and Git are managed in the interface.
Versions form a chain
Every project has a root version named default. A new version is created from a parent (the default version when you do not choose one) and inherits every file from it.
- A version without its own copy of a file serves the parent's content.
- When you edit the file in the version, that version gets its own copy and stops inheriting that file. Other files keep inheriting.
- You can reset a file to inherit from the parent again.
default settings.json prices.json events.lua
└─ staging settings.json* (inherits prices.json, events.lua)
└─ season-5 events.lua* (inherits the rest from staging)
* marks a file with its own copy in that version.
This makes small changes cheap: create staging, edit one file and publish, without duplicating the whole project.
Locking
A version can be locked. A locked version is read-only: files cannot be edited. Use it to freeze what you have released.
Comparing and promoting
You can compare two versions file by file. Each file is same, different, or present on one side only. You can then copy chosen files from one version to another, for example to promote tested changes from staging to default.
Consumers
A consumer decides which files a client receives. A file reaches a consumer only when the file is assigned to it. Clients address themselves by consumer name, so backend and game-client can receive different sets of files from the same version.
Tags
Tags help you find files in a long list. Files created or changed through the API get the tags api-created and api-edited automatically, so you can review what automation touched.