Add download stats, key deletion, batch creation, and newest-first listing.
Track landing downloads per platform/month, support admin delete and bulk key issue, and sort licenses by createdAtSec. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -62,13 +62,13 @@ npm test
|
||||
|
||||
- `POST /v1/activate` — `{ "productKey": "...", "deviceId": "..." }` → `{ token, sub }`.
|
||||
- `GET /v1/status?sub=...` → `{ revoked: boolean }`.
|
||||
- `POST /v1/admin/revoke` — `Authorization: Bearer <LICENSE_ADMIN_TOKEN>`, тело `{ "key": "TTRPG-..." }` (один продуктовый ключ) или `{ "sub": "..." }` (все ключи с этим sub, legacy).
|
||||
- `POST /v1/track/download` — `{ "platform": "windows"|"macos"|"linux" }` → учёт скачиваний в `data.json` → `downloadStats.byMonth`.
|
||||
- `POST /v1/admin/revoke` — `Authorization: Bearer <LICENSE_ADMIN_TOKEN>`, тело `{ "key": "TTRPG-..." }` или `{ "sub": "..." }`.
|
||||
- `POST /v1/admin/product-keys/delete` — hard delete ключа `{ "key": "..." }`.
|
||||
- `POST /v1/admin/issue` — админская выдача (`sub`, `pid`, `iat`, `exp`, `did`).
|
||||
- `GET /v1/admin/licenses` — список продуктовых ключей с активациями и флагом `revoked`.
|
||||
- `POST /v1/admin/product-keys` — создание нового продуктового ключа (`pid`, `maxDevices`, опционально `key`, `sub`).
|
||||
- **По умолчанию** — period-лицензия: `validDays: 365` (отсчёт с первой активации).
|
||||
- **Fixed** (фиксированная дата): явно передайте `expiresAtSec` (unix-секунды).
|
||||
- Нельзя указывать `expiresAtSec` и `validDays` одновременно.
|
||||
- `GET /v1/admin/licenses` — список ключей (новые сверху), поля `createdAtSec`, `expiryMode`, `validDays`, …
|
||||
- `GET /v1/admin/stats/downloads` — обзор `{ months, currentMonth }`; `?month=YYYY-MM` — статистика за месяц.
|
||||
- `POST /v1/admin/product-keys` — создание ключа (`pid`, `maxDevices`, `validDays` или `expiresAtSec`, опционально `count` 1–100).
|
||||
- `GET /health` — `{ ok: true }`.
|
||||
|
||||
## Клиент
|
||||
|
||||
Reference in New Issue
Block a user