Aller au contenu principal

Python SDK [community]

SDK communautaire

Ce SDK est entièrement maintenu par la communauté.

Le Remnawave Python SDK est une bibliothèque pour interagir facilement avec les types RestAPI.

✨ Fonctionnalités clés

  • Conception basée sur les contrôleurs : Divisez la fonctionnalité en contrôleurs séparés pour plus de flexibilité. Utilisez seulement ce dont vous avez besoin !
  • Modèles Pydantic : Requêtes et réponses fortement typées pour une meilleure fiabilité.
  • Sérialisation rapide : Propulsé par orjson pour une gestion efficace de JSON.
  • Utilisation modulaire : Importez des contrôleurs individuels ou le SDK complet selon vos besoins.
  • Support de client HTTP personnalisé : Vous pouvez passer votre propre httpx.AsyncClient avec des en-têtes personnalisés pour contourner diverses vérifications.
  • Intégration du token Caddy : Support direct pour passer le caddy_token lors de l'initialisation du SDK.

Installation

pip install remnawave

Utilisation

Exemple d'utilisation
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())
Exemple d'utilisation avec Caddy comme serveur web
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())
Exemple d'utilisation avec un client personnalisé
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())

Liens du projet