Vetrix Docs

Generic registry

The generic registry stores arbitrary binary artifacts — release archives, installers, signed bundles — that do not belong to a language-specific package format. See README.md for the conventions shared by every registry protocol.

Resource overview

Unlike the other registries, the generic registry is served under the /api/v1 REST prefix, at /api/v1/repos/{owner}/{repo}/packages/generic/. An artifact is addressed by a package {name}, a {version}, and a {filename}; a version may hold several files.

Auth & scopes

Reads are governed by repository visibility; uploading requires registry write and deletion requires registry delete. The credential is a session or access-token JWT sent as Authorization: Bearer <token>. See Push scopes.

Endpoints

Method Path Summary
GET /api/v1/repos/{owner}/{repo}/packages/generic/{name} List versions of a package
GET /api/v1/repos/{owner}/{repo}/packages/generic/{name}/{version} List files in a version
GET /api/v1/repos/{owner}/{repo}/packages/generic/{name}/{version}/{filename} Download a file
PUT /api/v1/repos/{owner}/{repo}/packages/generic/{name}/{version}/{filename} Upload a file
DELETE /api/v1/repos/{owner}/{repo}/packages/generic/{name}/{version}/{filename} Delete a file

GET .../{name}

Lists the versions of a package.

[ { "version": "1.0.0", "size_bytes": 1048576, "created_at": "2026-01-01T00:00:00Z" } ]

GET .../{name}/{version}

Lists the files in a version.

{ "name": "release", "version": "1.0.0", "files": [ { "filename": "app.tar.gz", "digest": "sha256:...", "size": 1048576 } ] }

GET .../{name}/{version}/{filename}

Downloads a single file as application/octet-stream.

PUT .../{name}/{version}/{filename}

Uploads a file. The request body is the raw file content; the file is added to the named version (creating the package and version if needed). Returns 201 Created.

DELETE .../{name}/{version}/{filename}

Removes a single file from a version. Returns 204 No Content.

Example

# Upload:
curl -X PUT -H "Authorization: Bearer <token>" --data-binary @app.tar.gz \
  https://api.gitvetrix.com/api/v1/repos/alice/app/packages/generic/release/1.0.0/app.tar.gz

# Download:
curl -H "Authorization: Bearer <token>" -O \
  https://api.gitvetrix.com/api/v1/repos/alice/app/packages/generic/release/1.0.0/app.tar.gz

Errors

Errors are JSON { "error": "<message>" } with the shared status-code conventions in errors.md: 401 (missing credential on upload or delete, with a Bearer challenge), 403 (authenticated but lacking write or delete), and 404 (unknown package, version, or file, or a private repository the caller may not read).

Rate limits

Metered under the registry scope. See rate-limits.md.