Python SDK [community]
Community SDK
Dieses SDK wird vollständig von der Community gepflegt.
Das Remnawave Python SDK ist eine Bibliothek für die komfortable Interaktion mit den RestAPI-Typen.
✨ Hauptfunktionen
- Controller-basiertes Design: Aufteilung der Funktionalität in separate Controller für mehr Flexibilität. Verwende nur, was du brauchst!
- Pydantic-Modelle: Stark typisierte Anfragen und Antworten für bessere Zuverlässigkeit.
- Schnelle Serialisierung: Angetrieben von orjson für effiziente JSON-Verarbeitung.
- Modulare Nutzung: Importiere einzelne Controller oder das vollständige SDK nach Bedarf.
- Unterstützung für benutzerdefinierte HTTP-Clients: Du kannst deinen eigenen httpx.AsyncClient mit benutzerdefinierten Headern übergeben, um verschiedene Prüfungen zu umgehen.
- Caddy-Token-Integration: Direkte Unterstützung für die Übergabe des caddy_token bei der SDK-Initialisierung.
Installation
pip install remnawave
Verwendung
Verwendungsbeispiel
import os
import asyncio
from remnawave import RemnawaveSDK # Updated import for new package
from remnawave.models import ( # Updated import path
UsersResponseDto,
UserResponseDto,
GetAllConfigProfilesResponseDto,
CreateInternalSquadRequestDto
)
async def main():
# URL to your panel (ex. https://vpn.com or http://127.0.0.1:3000)
base_url: str = os.getenv("REMNAWAVE_BASE_URL")
# Bearer Token from panel (section: API Tokens)
token: str = os.getenv("REMNAWAVE_TOKEN")
# Initialize the SDK
remnawave = RemnawaveSDK(base_url=base_url, token=token)
# Fetch all users
response: UsersResponseDto = await remnawave.users.get_all_users()
total_users: int = response.total
users: list[UserResponseDto] = response.users
print("Total users: ", total_users)
print("List of users: ", users)
if __name__ == "__main__":
asyncio.run(main())
Verwendungsbeispiel mit Caddy als Webserver
import os
import asyncio
from remnawave import RemnawaveSDK # Updated import for new package
from remnawave.models import ( # Updated import path
UsersResponseDto,
UserResponseDto,
GetAllConfigProfilesResponseDto,
CreateInternalSquadRequestDto
)
async def main():
# URL to your panel (ex. https://vpn.com or http://127.0.0.1:3000)
base_url: str = os.getenv("REMNAWAVE_BASE_URL")
# Bearer Token from panel (section: API Tokens)
token: str = os.getenv("REMNAWAVE_TOKEN")
# Bearer Token for Caddy Auth
caddy_token = os.getenv("CADDY_TOKEN_AUTH")
# Initialize the SDK
remnawave = RemnawaveSDK(base_url=base_url, token=token, caddy_token=caddy_token)
# Fetch all users
response: UsersResponseDto = await remnawave.users.get_all_users()
total_users: int = response.total
users: list[UserResponseDto] = response.users
print("Total users: ", total_users)
print("List of users: ", users)
if __name__ == "__main__":
asyncio.run(main())
Verwendungsbeispiel mit benutzerdefiniertem Client
import os
import asyncio
import httpx
from remnawave import RemnawaveSDK
async def main():
base_url = os.getenv("REMNAWAVE_BASE_URL")
token = os.getenv("REMNAWAVE_TOKEN")
# Custom client with headers
async with httpx.AsyncClient(headers={"hello": "world"}) as client:
# Initialize SDK with a custom client
remnawave = RemnawaveSDK(base_url=base_url, token=token, client=client)
# Fetch all users
response = await remnawave.users.get_all_users_v2()
print("Total users:", response.total)
asyncio.run(main())
Projektlinks
- GitHub-Repository: Remnawave API auf GitHub
- Autoren: Artem (sm1ky), Kesevone