mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-05 17:46:37 +08:00
docs: add AI Skill integration guide
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
# Authentication API
|
||||
|
||||
## POST /api/v1/user/login
|
||||
|
||||
Authenticate and obtain JWT token.
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
{
|
||||
"username": "admin",
|
||||
"password": "secret",
|
||||
"captchaId": "optional-captcha-id"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "success",
|
||||
"data": {
|
||||
"token": "eyJhbGciOiJIUzI1NiIs...",
|
||||
"name": "Administrator",
|
||||
"role_id": 0,
|
||||
"requirePasswordChange": false
|
||||
},
|
||||
"ts": 1706659200000
|
||||
}
|
||||
```
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| token | string | JWT token for subsequent requests |
|
||||
| name | string | User's display name |
|
||||
| role_id | number | 0 = admin, 1 = regular user |
|
||||
| requirePasswordChange | boolean | Whether password change is required |
|
||||
|
||||
## JWT Token Details
|
||||
|
||||
**Algorithm:** HMAC-SHA256
|
||||
**Lifetime:** 90 days
|
||||
|
||||
**Token Claims:**
|
||||
```json
|
||||
{
|
||||
"sub": "1",
|
||||
"user": "admin",
|
||||
"name": "Administrator",
|
||||
"role_id": 0,
|
||||
"iat": 1706659200,
|
||||
"exp": 1738195200
|
||||
}
|
||||
```
|
||||
|
||||
## POST /api/v1/captcha/check
|
||||
|
||||
Check if captcha verification is required.
|
||||
|
||||
**Request:** `{}`
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"enabled": true,
|
||||
"type": "turnstile"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## POST /api/v1/captcha/verify
|
||||
|
||||
Verify captcha response (Cloudflare Turnstile or local captcha).
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
{
|
||||
"captchaId": "captcha-session-id",
|
||||
"captchaValue": "user-captcha-response"
|
||||
}
|
||||
```
|
||||
|
||||
## Token Usage
|
||||
|
||||
Include the token in all authenticated requests:
|
||||
|
||||
```bash
|
||||
curl -X POST "${FLVX_BASE_URL}/api/v1/node/list" \
|
||||
-H "Authorization: eyJhbGciOiJIUzI1NiIs..." \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{}'
|
||||
```
|
||||
|
||||
⚠️ **CRITICAL: Do NOT add "Bearer " prefix!**
|
||||
|
||||
```
|
||||
✅ Correct: Authorization: eyJhbGciOiJIUzI1NiIs...
|
||||
❌ Incorrect: Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
|
||||
```
|
||||
|
||||
## POST /api/v1/user/updatePassword
|
||||
|
||||
Change current user's password.
|
||||
|
||||
**Request:**
|
||||
```json
|
||||
{
|
||||
"oldPassword": "current-password",
|
||||
"newPassword": "new-password"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{"code": 0, "msg": "success"}
|
||||
```
|
||||
|
||||
## POST /api/v1/user/package
|
||||
|
||||
Get current user's package info (tunnels, forwards, traffic stats).
|
||||
|
||||
**Request:** `{}`
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"flow": 100,
|
||||
"inFlow": 1073741824,
|
||||
"outFlow": 2147483648,
|
||||
"tunnels": 5,
|
||||
"forwards": 10,
|
||||
"expTime": 1735689600000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Fields:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| flow | number | Total traffic quota in GB |
|
||||
| inFlow | number | Used upload in bytes |
|
||||
| outFlow | number | Used download in bytes |
|
||||
| tunnels | number | Number of assigned tunnels |
|
||||
| forwards | number | Number of forwards created |
|
||||
| expTime | number | Account expiry timestamp (ms) |
|
||||
Reference in New Issue
Block a user