API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ° v2ray-stat.
ΠΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π° http://127.0.0.1:9952.
GET /api/v1/users
curl -X GET http://127.0.0.1:9952/api/v1/usersGET /api/v1/stats
ΠΡΠΎΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ stats_columns.
curl -X GET http://127.0.0.1:9952/api/v1/statsΠ ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ YAML ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ:
stats_columns:
server:
sort: rate DESC
columns:
- source
- rate
- uplink
- downlink
client:
sort: user ASC
columns:
- user
- last_seen
- rate
- uplink
- downlink-
ΠΠ»Ρ server:
sourceβ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠ°ΡΠΈΠΊΠ° (IP ΠΈΠ»ΠΈ hostname)rateβ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ (Π±ΠΈΡ/Ρ)uplinkβ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ (Π±Π°ΠΉΡ)downlinkβ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ (Π±Π°ΠΉΡ)sess_uplinkβ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ (Π±Π°ΠΉΡ)sess_downlinkβ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ (Π±Π°ΠΉΡ)
-
ΠΠ»Ρ client:
userβ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡuuidβ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡlast_seenβ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈrateβ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ (Π±ΠΈΡ/Ρ)uplinkβ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ (Π±Π°ΠΉΡ)downlinkβ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ (Π±Π°ΠΉΡ)sess_uplinkβ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ (Π±Π°ΠΉΡ)sess_downlinkβ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ (Π±Π°ΠΉΡ)enabledβ Π²ΠΊΠ»ΡΡΠ΅Π½ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρsub_endβ Π΄Π°ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈrenewβ ΡΡΠ°ΡΡΡ/Π΄Π°ΡΠ° ΠΏΡΠΎΠ΄Π»Π΅Π½ΠΈΡlim_ipβ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ IPipsβ ΡΠΏΠΈΡΠΎΠΊ IP-Π°Π΄ΡΠ΅ΡΠΎΠ²createdβ Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ columns Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡΡΡΠΎΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ.
ΠΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ sort Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ:
- ΠΠ»Ρ
serverΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡsource ASC - ΠΠ»Ρ
clientΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡuser ASC
ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΈ Π² Π»ΠΎΠ³Π°Ρ ΠΏΠΎΡΠ²ΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ.
stats_columns:
server:
columns: []
client:
columns:
- user
- rate
- uplink
- downlinkΠ’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°:
curl "http://127.0.0.1:9952/api/v1/stats?sort_by=rate&sort_order=DESC"GET /api/v1/dns_stats
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° DNS.count: ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ DNS-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°.
curl -X GET "http://127.0.0.1:9952/api/v1/dns_stats?user=newuser&count=10"POST /api/v1/delete_dns_stats
curl -X POST http://127.0.0.1:9952/api/v1/delete_dns_statsPOST /api/v1/reset_traffic_stats
curl -X POST http://127.0.0.1:9952/api/v1/reset_traffic_statsPOST /api/v1/reset_clients_stats
curl -X POST http://127.0.0.1:9952/api/v1/reset_clients_statsPOST /api/v1/reset_traffic
curl -X POST http://127.0.0.1:9952/api/v1/reset_trafficPOST /api/v1/add_user
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.credential: ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (UUID Π΄Π»Ρ VLESS ΠΈΠ»ΠΈ PASSWORD Π΄Π»Ρ Trojan).inboundTag: Π’Π΅Π³ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,vless-inΠΈΠ»ΠΈtrojan-in).
curl -X POST http://127.0.0.1:9952/api/v1/add_user -d "user=newuser&credential=123e4567-e89b-12d3-a456-426614174000&inboundTag=vless-in"POST /api/v1/bulk_add_users
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
users_file: Π€Π°ΠΉΠ» Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅user,credential,inboundTag.- Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°:
user,credential,inboundTag: ΠΠΎΠ»Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,user1,550e8400-e29b-41d4-a716-446655440000,vless-in).user,credential: ΠΠ΅Π·inboundTag, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.user: Π’ΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ,credential(UUID) Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.user,,inboundTag: ΠΠΌΡ ΠΈinboundTag,credential(UUID) Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
- Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°:
curl -X POST "http://127.0.0.1:9952/api/v1/bulk_add_users" -F "users_file=@users.txt"- ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
users.txt:
user1,550e8400-e29b-41d4-a716-446655440000,vless-in # ΠΠΎΠ»Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ
user2,6ba7b810-9dad-11d1-80b4-00c04fd430c8 # ΠΠ΅Π· inboundTag
user3 # Π’ΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ, UUID Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½
user4,,vless-in # ΠΠΌΡ ΠΈ inboundTag, UUID Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½
DELETE /api/v1/delete_user
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.inboundTag: Π’Π΅Π³ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,vless-in).
curl -X DELETE "http://127.0.0.1:9952/api/v1/delete_user?user=newuser&inboundTag=vless-in"PATCH /api/v1/set_enabled
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.enabled: Π‘ΡΠ°ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (trueβ Π²ΠΊΠ»ΡΡΠΈΡΡ,falseβ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ).
curl -X PATCH http://127.0.0.1:9952/api/v1/set_enabled -d "user=newuser&enabled=false"PATCH /api/v1/update_lim_ip
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.lim_ip: ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ IP-Π°Π΄ΡΠ΅ΡΠΎΠ².
curl -X PATCH http://127.0.0.1:9952/api/v1/update_lim_ip -d "user=newuser&lim_ip=5"PATCH /api/v1/adjust_date
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.sub_end: Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΊΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅+6d:0d,-3d,3h
curl -X PATCH http://127.0.0.1:9952/api/v1/adjust_date -d "user=newuser&sub_end=+30d13h"PATCH /api/v1/update_renew
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
user: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.renew: ΠΠ΅ΡΠΈΠΎΠ΄ Π°Π²ΡΠΎΠΏΡΠΎΠ΄Π»Π΅Π½ΠΈΡ Π² Π΄Π½ΡΡ .
curl -X PATCH http://127.0.0.1:9952/api/v1/update_renew -d "user=newuser&renew=30"ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ API Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ΄ΡΠ°Ρ Singbox ΠΈ Xray.
"experimental": {
"v2ray_api": {
"listen": "127.0.0.1:9953",
"stats": {
"enabled": true,
"inbounds": [
"trojan-in",
"vless-in"
],
"outbounds": [
"warp",
"direct",
"IPv4"
],
"users": [
"user1",
"user2"
]
}
}
}"api": {
"tag": "api",
"listen": "127.0.0.1:9953",
"services": [
"HandlerService",
"StatsService",
"ReflectionService"
]
},