- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build and publish package / publish (push) Successful in 9s
|
||
| .forgejo/workflows | ||
| ninja-api | ||
| ninja-api.json | ||
| openapipythonclient-config.yaml | ||
| README.md | ||
ninja-library
Generierter Python-Client für die NinjaOne Public API 2.0 (OpenAPI 3.0.1, Version 2.0.9), generiert mit openapi-python-client.
Repo-Inhalt
| Pfad | Beschreibung |
|---|---|
ninja-api.json |
OpenAPI-Schema der NinjaOne API (Original, so heruntergeladen) |
ninja-api/ |
Das generierte, installierbare Python-Paket ninja_api (uv/PEP 621, uv_build-Backend) |
openapipythonclient-config.yaml |
Generator-Konfiguration (Paketname/Versions-Override) |
Das Paket ninja_api enthält:
client.py—ClientundAuthenticatedClient(httpx-basiert, Bearer-Token-Auth)api/— ein Modul pro API-Bereich (z. B.devices,contacts,queries,management), je eine Funktion pro Endpunktmodels/— alle Datenklassen aus dem Schema
Die Original-Schema-Version ist 2.0.9-draft — das ist kein gültiger
PEP 440-Version, deshalb heißt das Paket 2.0.9 (Override in der Config).
Verwendung in einem anderen Projekt
Das Paket liegt im Unterverzeichnis ninja-api/, daher wird #subdirectory= mitgegeben:
uv add "ninja-api @ git+https://git.datajob.de/GENERAL/ninja-library.git#subdirectory=ninja-api"
Lokal (ohne git):
uv add /home/dgoetz/Dokumente/ninja-library/ninja-api
Aufruf:
from ninja_api import Client
from ninja_api.api.devices import get_device
client = Client(base_url="https://api.ninjaone.com") # Auth je nach Env/Cloud
result = get_device.sync(client=client, id="...")
# async: get_device.asyncio(client=client, id="...")
# *_detailed-Varianten liefern zusätzlich das rohe httpx.Response
Neu generieren
Client neu generieren (überschreibt ninja-api/, die pyproject.toml-Anpassung
und das .gitignore im Paket-Verzeichnis gehen dabei verloren und müssen notfalls
wiederhergestellt werden):
# Einmalig installieren (empfohlen):
uv tool install openapi-python-client
cd ~/Dokumente/ninja-library
openapi-python-client generate --path ninja-api.json --meta=uv --config openapipythonclient-config.yaml
Ohne Installation direkt per uvx:
uvx --from openapi-python-client openapi-python-client generate \
--path ninja-api.json --meta=uv --config openapipythonclient-config.yaml
Während der Generierung erscheinen Warnungen für Responses mit Content-Type
*/* (ohne Schema) — die werden einfach nicht in den Client übernommen,
das ist unkritisch.