31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# IDRS API
|
|
|
|
Python (FastAPI + SQLite) server that mirrors the live idrs-api endpoints, with a login-protected admin panel to manage the data.
|
|
|
|
- `GET /api/getTokenInfo` → token list (position ASC, `decimals` int, `is_live` bool)
|
|
- `GET /api/version/android` → version record
|
|
- `GET /img/<filename>` → uploaded token icons
|
|
- `/admin` → sqladmin panel (login-protected): manage tokens, version, upload icons
|
|
|
|
## Setup
|
|
|
|
```
|
|
python3.12 -m venv venv
|
|
./venv/bin/pip install -r requirements.txt
|
|
cp .env.example .env # set ADMIN_USERNAME / ADMIN_PASSWORD
|
|
```
|
|
|
|
## Run
|
|
|
|
```
|
|
./run.sh # http://127.0.0.1:8000 (admin at /admin)
|
|
```
|
|
|
|
`run.sh` loads `.env`. First run seeds the DB from `tokenList.json` and `versionAndroid.json` (idrs.db is created here; override path via `IDRS_DB_PATH`).
|
|
|
|
## Notes
|
|
|
|
- **Auth:** single admin, credentials from `ADMIN_USERNAME`/`ADMIN_PASSWORD` env. If they're unset, login is refused and a warning is logged (fail closed). Session secret is auto-generated on first run and stored in `.session_secret`. The public API endpoints stay unauthenticated.
|
|
- **Version rule:** `acceptableVersion` ≤ `latestVersion` is enforced in the panel; below `acceptableVersion` the Android app force-updates, below `latestVersion` it prompts.
|
|
- **Icons:** upload PNGs in the admin panel (Icons page); `iconUrl` auto-points to `/img/<filename>`.
|
|
- No on-chain integration, no audit trail — data is entered manually. |