No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Simon Huber f337ff7389
All checks were successful
Build and publish package / publish (push) Successful in 9s
fix: GITHUB_PATH instead of FORGEJO_GITHUB_PATH (runner does not set it); call uv by absolute path
2026-09-07 16:32:22 +02:00
.forgejo/workflows fix: GITHUB_PATH instead of FORGEJO_GITHUB_PATH (runner does not set it); call uv by absolute path 2026-09-07 16:32:22 +02:00
ninja-api add NinjaOne API OpenAPI spec + generated Python client (openapi-python-client) 2026-09-01 11:40:26 +02:00
ninja-api.json add NinjaOne API OpenAPI spec + generated Python client (openapi-python-client) 2026-09-01 11:40:26 +02:00
openapipythonclient-config.yaml add NinjaOne API OpenAPI spec + generated Python client (openapi-python-client) 2026-09-01 11:40:26 +02:00
README.md add README (usage, uv add, regeneration) 2026-09-01 11:53:27 +02:00

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 — Client und AuthenticatedClient (httpx-basiert, Bearer-Token-Auth)
  • api/ — ein Modul pro API-Bereich (z. B. devices, contacts, queries, management), je eine Funktion pro Endpunkt
  • models/ — 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.