Admin SDK (linege-admin)
Standalone Admin SDK for the Linege anti-fingerprint browser platform API.
No dependency on linege-sdk-python -- this package is fully self-contained.
Installation
pip install https://pub-69fcb37602174d10b2152f09439de470.r2.dev/sdk/linege_admin-0.2.0-py3-none-any.whlFor development:
cd packages/linege-admin-python
pip install -e ".[dev]"Quick Start
from linege_admin import LinegeAdmin
admin = LinegeAdmin(
api_url="https://api.example.com",
token="your-admin-token",
)
# List users
users = admin.list_users()
for u in users.users:
print(f"{u.username} quota={u.quota_used}/{u.quota_total}")
# Import proxies from CSV
result = admin.import_proxies_csv("JP,socks5://1.2.3.4:1080\nUS,http://5.6.7.8:8080")
print(f"Inserted: {result.inserted}")
# Country readiness matrix
matrix = admin.get_country_matrix()
for c in matrix.countries:
print(f"{c.code}: ready={c.ok}")Environment Variables
| Variable | Description | Default |
|---|---|---|
LINEGE_API_URL | Base URL for the Linege API | http://localhost:3000 |
LINEGE_ADMIN_TOKEN | Admin bearer token | (required) |
API Reference
Constructor
LinegeAdmin(api_url: str, token: str, timeout: float = 30.0)api_url-- Base URL (e.g.https://api.example.com). Automatically appends/api/v1if not present.token-- Admin bearer token.timeout-- HTTP request timeout in seconds.
User Management
list_users(page=1, limit=20) -> UserListResponse
List all users with pagination.
resp = admin.list_users(page=1, limit=10)
# resp.users: List[AdminUser]
# resp.pagination: Pagination (page, limit, total, pages)create_user(username, email, password=None, quota_total=10) -> AdminUser
Create a new user. Password is optional (enables password-based login).
user = admin.create_user("alice", "[email protected]", password="secret", quota_total=20)Token Management
list_tokens(page=1, limit=20) -> TokenListResponse
List all API tokens with pagination.
resp = admin.list_tokens()create_token(user_id, name="", expires_in_days=None) -> CreateTokenResponse
Create a new API token for a user.
token = admin.create_token(user_id=1, name="ci-key", expires_in_days=90)revoke_token(token_id) -> None
Revoke (delete) a token by ID.
admin.revoke_token(token_id=5)Proxy Management
list_proxies(country=None, status="available", limit=100) -> ProxyListResponse
List proxies with optional filters.
resp = admin.list_proxies(country="JP", status="available", limit=50)get_proxy_stats() -> ProxyStatsResponse
Get proxy usage statistics and restock suggestions.
stats = admin.get_proxy_stats()
# stats.summary: ProxyStatsSummary (total, available, full, expired, remaining_slots, avg_usage)
# stats.by_country: List[CountryProxyStat]
# stats.restock_needed: List[RestockItem]recheck_proxies(country=None, limit=50) -> ProxyRecheckResponse
Batch recheck proxy health.
result = admin.recheck_proxies(country="US", limit=10)
# result.checked, result.ok, result.expired, result.failedimport_proxies(items=None, raw=None) -> ImportResult
Bulk import proxies in JSON format.
result = admin.import_proxies(items=[
{"country": "JP", "proxy_url": "socks5://user:[email protected]:1080"},
{"country": "US", "proxy_url": "http://5.6.7.8:8080"},
])import_proxies_csv(csv, default_country="US") -> ImportResult
Bulk import proxies from CSV text.
csv_text = """JP,socks5://user:[email protected]:1080
US,http://5.6.7.8:8080
1.2.3.4:1080"""
result = admin.import_proxies_csv(csv=csv_text, default_country="US")Templates & Fingerprints
import_templates(items) -> ImportResult
Bulk import fingerprint templates.
result = admin.import_templates(items=[
{"country": "US", "ua": "Mozilla/5.0 ...", "platform": "Win32"},
])import_fingerprints(items) -> ImportResult
Bulk import fingerprints.
result = admin.import_fingerprints(items=[
{"country": "US", "userAgent": "Mozilla/5.0 ...", "hardwareConcurrency": 8},
])get_fingerprint_stats() -> FingerprintStatsResponse
Get fingerprint statistics by country.
stats = admin.get_fingerprint_stats()
# stats.total: int
# stats.by_country: List[FingerprintCountryStats]Country Matrix
get_country_matrix() -> CountryMatrixResponse
Get full country readiness matrix (templates + proxies availability).
matrix = admin.get_country_matrix()
for c in matrix.countries:
print(f"{c.code}: fp={c.fingerprints} proxies={c.proxies_available} ready={c.ok}")Types Summary
| Type | Fields |
|---|---|
AdminUser | id, username, email, quota_total, quota_used, status, has_password |
UserListResponse | users: List[AdminUser], pagination: Pagination |
TokenInfo | id, user_id, username, token, name, expires_at, status |
ProxyInfo | id, country, proxy_url, gost_format, status |
ProxyStatsSummary | total, available, full, expired, remaining_slots |
ImportResult | total, inserted, duplicates, invalid, skipped |
CountryMatrixEntry | code, fingerprints, proxies_available, ok |
All types are @dataclass with a from_dict(d: Dict) -> T classmethod for deserialization.
Running the Full Example
python examples/example_full.py \
--api-url https://api.example.com \
--token YOUR_ADMIN_TOKEN