# Questra Python Documentation

**Version:** 0.5.0

Willkommen zur zentralen Dokumentation der Questra Python Client Libraries.

## Verfügbare Pakete

<div class="grid cards" markdown>

-   :material-package:{ .lg .middle } **Questra (Umbrella)**

    ---

    Komplettpaket - enthält Authentication und Data Client

    [:octicons-arrow-right-24: Installation](#installation)

-   :material-shield-key:{ .lg .middle } **Questra Authentication**

    ---

    OAuth2 Authentication Client für Questra API

    [:octicons-arrow-right-24: Dokumentation](authentication/index.md)

-   :material-database:{ .lg .middle } **Questra Data**

    ---

    Python Client für Dyno GraphQL und REST API

    [:octicons-arrow-right-24: Dokumentation](data/index.md)

</div>

## Installation

### Empfohlen: Umbrella-Paket

Das `seven2one-questra` Paket installiert automatisch alle Komponenten und bietet vereinfachte Imports:

```bash
pip install seven2one-questra
```

### Einzelpakete

Für spezifische Anwendungsfälle können Sub-Pakete einzeln installiert werden:

```bash
# Nur Authentication
pip install seven2one-questra-authentication

# Nur Data (mit pandas)
pip install seven2one-questra-data[pandas]
```

## Getting Started

### Schnellstart (Umbrella-Paket)

Mit dem Umbrella-Paket sind alle Komponenten direkt verfügbar:

```python
from questra import QuestraAuthentication, QuestraData

# Authentifizierung
auth = QuestraAuthentication(
    url="https://authentik.dev.example.com",
    username="ServiceUser",
    password="secret"
)

# Data Client (High-Level API)
client = QuestraData(
    graphql_url="https://dev.example.com/graphql",
    auth_client=auth
)

# Items laden
items = client.list(
    inventory_name="Stromzaehler",
    namespace="Energie"
)

# TimeSeries-Daten laden
from datetime import datetime
values = client.list_timeseries_values(
    inventory_name="Stromzaehler",
    namespace="Energie",
    timeseries_property="messwerte_Energie",
    from_time=datetime(2024, 1, 1),
    to_time=datetime(2024, 1, 31)
)
```

### Fortgeschrittene Verwendung

```python
# Low-Level Data API
from questra import QuestraDataCore

core_client = QuestraDataCore(
    graphql_url="https://dev.example.com/graphql",
    auth_client=auth
)
inventories = core_client.queries.get_inventories()

# Spezifische Models importieren
from questra import (
    Inventory, Namespace, TimeSeriesValue,
    SortOrder, ConflictAction
)

# Direkter Sub-Paket-Zugriff für erweiterte Features
from questra_data.models import InventoryPrivilege
from questra_authentication.authentication import OidcDiscoveryClient
```

!!! tip "Vereinfachte Imports"

    Das Umbrella-Paket exportiert die wichtigsten Komponenten für einfachere Imports.
    Alle Sub-Paket-APIs bleiben weiterhin direkt zugänglich für erweiterte Use-Cases.

!!! info "Verfügbare Exports"

    Das Umbrella-Paket exportiert:

    **Core Clients:** `QuestraAuthentication`, `QuestraData`, `QuestraDataCore`

    **Models:** `Inventory`, `Namespace`, `TimeSeriesValue`, `Role`, etc.

    **Enums:** `SortOrder`, `ConflictAction`, `DataType`, etc.

    **Exceptions:** `AuthenticationError`, `InvalidCredentialsError`, etc.

    Vollständige Liste: [src/questra/\_\_init\_\_.py](https://github.com/your-repo/questra/blob/main/src/questra/__init__.py)

## Weitere Ressourcen

- [Questra Authentication](authentication/index.md)
- [Questra Data](data/index.md)
- [Azure DevOps](https://dev.azure.com/seven2one/Seven2one.Questra)

## License

Proprietär - Seven2one GmbH
