API Documentation

Integrate Jipy License into clients and CI — license checks plus product release uploads (JavaScript, TypeScript, Python, Lua).

License Check API

Headers

  • Authorization: Bearer <license-key> — required
  • x-product-version: 1.2.3 — optional, enables changelog filtering
  • Content-Type: application/json

Request body

Status codes

Every response includes a status field in the JSON body. The HTTP status code may differ from the application status for some errors.

StatusHTTPMeaning
800200License is valid. Returns product info, enabled addition IDs, and optional changelog entries.
801801License not found — the API key does not exist.
802802License exists but is not active.
803803Product mismatch — key is registered to a different product.
804804Unauthorized IP — request IP is not on the license allowlist.
805805API key is missing from the Authorization header.
806806Product field is missing from the request body.
807807UserID field is missing from the request body.
808806Username field is missing from the request body.
810500Internal server error.

Success response

When autoActivateOnFirstCheck is enabled in site settings, an inactive license with no bound IP will activate automatically on the first successful check from a valid IP.

Example (curl)


Product Upload API

Automate release archives and catalog updates from CI. Authenticate with the PRODUCT_UPLOAD_API_KEY env secret. Use the stable product id (e.g. my_script), not the Mongo ObjectId.

Authentication

  • X-Api-Key: <PRODUCT_UPLOAD_API_KEY> — preferred
  • or Authorization: Bearer <PRODUCT_UPLOAD_API_KEY>

If the key is unset on the server, all endpoints return 503. Invalid keys return 401. Rate limited to 20 requests / minute / IP.

Endpoints

MethodPathPurpose
GET/api/productsList products
GET/api/products/:productIdProduct detail + releases
PATCH/api/products/:productIdUpdate catalog fields (JSON)
GET/api/products/:productId/releasesList releases
POST/api/products/:productId/releasesUpload / replace a release archive
DELETE/api/products/:productId/releases/:versionDelete a release

Upload a release

multipart/form-data with version, file (.zip / .rar / .7z, max 200 MB), and optional updateCatalogVersion=true to bump the shop version string. Jipy Tool products are rejected — use the Blender Repo admin flow instead.

Update catalog metadata

Lua / FiveM: use PerformHttpRequest for JSON (GET/PATCH/DELETE). For ZIP uploads, shell out to curl or run the TypeScript/Python snippet from CI — native multipart from Lua is painful.