# 01 Einführung in die ENLYZE API Data Source

Die **ENLYZE API** Data Source (basierend auf dem Infinity Plugin) verbindet sich direkt mit der ENLYZE Platform API. Sie ermöglicht OEE-Dashboards, Dropdown-Filter, Alarme und komplexe Datenkombinationen. In diesem Tutorial stellst du deine erste API-Abfrage und lernst die Grundlagen:

<figure><img src="https://3556205377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn6Jn6Re8NNPSKD1jGZyL%2Fuploads%2Fgit-blob-493cb885604fee70e204dcfdd6e457560fbcab1a%2Fgrafana-api-hero-01.png?alt=media" alt=""><figcaption></figcaption></figure>

## Was du lernst

* Wann die ENLYZE API statt der ENLYZE Data Source verwenden
* Eine GET-Anfrage an die ENLYZE API senden
* JSON-Antworten mit dem Root Selector `$.data` parsen
* Spalten auswählen und Ergebnisse strukturieren

## Voraussetzungen

* Teil 1-3 der Tutorials abgeschlossen (Grafana-Grundkenntnisse)
* Zugang zu Grafana mit beiden konfigurierten ENLYZE Data Sources

***

## Was ist die ENLYZE API?

Die ENLYZE Platform stellt eine REST-API bereit. Eine API (Application Programming Interface) ist eine Schnittstelle, über die Programme strukturiert Daten austauschen können. Statt Daten in einer Oberfläche abzulesen, schickt man eine Anfrage an eine URL und erhält die Antwort als maschinenlesbaren Text (JSON) zurück.

In Grafana übernimmt das Infinity Plugin die Kommunikation. Du gibst nur an, welchen Endpunkt du abfragen möchtest (z. B. `machines`), und Grafana stellt die Anfrage automatisch.

Die vollständige API-Dokumentation mit allen verfügbaren Endpunkten und Parametern findest du unter [app.enlyze.com/api/v2/redoc](https://app.enlyze.com/api/v2/redoc).

## ENLYZE vs. ENLYZE API

In Grafana stehen dir zwei Data Sources zur Verfügung. Die **ENLYZE** Data Source (Teil 1-3 der Tutorials) bietet eine Point-and-Click-Oberfläche für Zeitreihendaten. Die **ENLYZE API** Data Source nutzt die REST-API direkt und ermöglicht deutlich mehr:

| Merkmal             | ENLYZE            | ENLYZE API          |
| ------------------- | ----------------- | ------------------- |
| Bedienbarkeit       | Point-and-Click   | Query-Konfiguration |
| Variablen/Dropdowns | Eingeschränkt     | Volle Unterstützung |
| Alerting            | Nicht unterstützt | Unterstützt         |
| OEE-Kennzahlen      | Nicht verfügbar   | Voller Zugriff      |

Verwende die ENLYZE API, wenn du Dashboard-Variablen, Alerts, OEE-Kennzahlen oder Produktionsdaten (Aufträge, Stillstände) brauchst.

***

## Erste API-Abfrage: Maschinen auflisten

### Panel erstellen

1. Erstelle ein neues Panel mit der Visualisierung **Table**
2. Wähle im Query-Editor die Data Source **ENLYZE API** (nicht ENLYZE)

<figure><img src="https://3556205377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn6Jn6Re8NNPSKD1jGZyL%2Fuploads%2Fgit-blob-884a13dbcdabc43d4877e1110d46d75c5d7d29c3%2Fgrafana-api-datasource-select-01.png?alt=media" alt=""><figcaption></figcaption></figure>

**Query konfigurieren**

| Einstellung | Wert       |
| ----------- | ---------- |
| Type        | JSON       |
| Parser      | Backend    |
| Source      | URL        |
| Format      | Table      |
| Method      | GET        |
| URL         | `machines` |

{% hint style="info" %}
Du musst nur `machines` eingeben, nicht die vollständige URL. Die Base URL (`https://app.enlyze.com/api/v2/`) und die Authentifizierung sind bereits vorkonfiguriert.
{% endhint %}

### Root Selector

Die API liefert Daten innerhalb eines `data`-Arrays. Um diese zu extrahieren, gib im Feld **Root selector** ein: `$.data`

<figure><img src="https://3556205377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn6Jn6Re8NNPSKD1jGZyL%2Fuploads%2Fgit-blob-4098003e3b67997130b8f1d2da4942110db419b8%2Fgrafana-api-root-selector-01.png?alt=media" alt=""><figcaption></figcaption></figure>

Ohne Root Selector würde Grafana die gesamte Antwort einschließlich `next_cursor` darstellen. Mit `$.data` extrahierst du nur das Daten-Array.

***

## Weitere Endpunkte

### Standorte abfragen

| Einstellung   | Wert     |
| ------------- | -------- |
| URL           | `sites`  |
| Root selector | `$.data` |

### Variablen einer Maschine

| Einstellung   | Wert        |
| ------------- | ----------- |
| URL           | `variables` |
| Root selector | `$.data`    |

Viele API-Endpunkte akzeptieren Query-Parameter, um die Ergebnisse zu filtern. Statt die Parameter direkt in die URL zu schreiben, kannst du sie über die Grafana-Oberfläche angeben:

1. Klicke auf **Headers, Request params**
2. Unter **URL Query Params** gib Key-Value-Paare ein, z. B. `machine` = `141e0927-...`

<figure><img src="https://3556205377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn6Jn6Re8NNPSKD1jGZyL%2Fuploads%2Fgit-blob-12b644beff7e58c6f1f4078e9d3c13dde349b85a%2Fgrafana-api-query-params-01.png?alt=media" alt=""><figcaption></figcaption></figure>

Welche Query-Parameter ein Endpunkt unterstützt, findest du in der [API-Dokumentation](https://app.enlyze.com/api/v2/redoc).

### Häufige Endpunkte

| Endpunkt                               | Methode | Beschreibung             |
| -------------------------------------- | ------- | ------------------------ |
| `machines`                             | GET     | Alle Maschinen           |
| `sites`                                | GET     | Alle Standorte           |
| `variables?machine={uuid}`             | GET     | Variablen einer Maschine |
| `machines/{uuid}/productivity-metrics` | POST    | OEE-Kennzahlen           |
| `production-runs`                      | GET     | Aufträge                 |
| `downtimes`                            | GET     | Stillstände              |

***

## Ergebnisse strukturieren

### Spalten auswählen

Standardmäßig zeigt Infinity alle Felder der API-Antwort an. Um nur bestimmte Spalten anzuzeigen:

1. Klappe **Parsing options & Result fields** auf
2. Klicke unter **Columns** auf **Add Columns**
3. Gib den Feldnamen als **Selector** ein und vergib einen Anzeigenamen unter **as**

<figure><img src="https://3556205377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fn6Jn6Re8NNPSKD1jGZyL%2Fuploads%2Fgit-blob-2bafadfdf11d290c8a5e3f9f749802eca70f1f1d%2Fgrafana-api-column-config-01.png?alt=media" alt=""><figcaption></figcaption></figure>

Alternativ kannst du Grafanas Transformation **Organize fields by name** verwenden (wie in [Transformationen](https://docs.enlyze.com/integrations/grafana/intermediate-features/02-transformations) gelernt).

{% hint style="info" %}
Im Feld **Rows/Root** lassen sich mit JSONata auch komplexere Datenabfragen formulieren, z. B. Felder filtern, umbenennen oder berechnen. Die folgenden Tutorials zeigen, wie das funktioniert.
{% endhint %}

***

## Tipps

* **Backend-Parser**: Setze den Parser immer auf **Backend**. Die Daten werden serverseitig verarbeitet, was zuverlässiger ist.
* **Einfach anfangen**: Erst die Query mit `$.data` zum Laufen bringen, dann Spalten und Transformationen ergänzen.
* **"No data"**: URL prüfen (nur `machines`, nicht die vollständige URL), Root Selector `$.data` überprüfen, Parser auf "Backend" stellen.
* **URLs testen**: API-URLs lassen sich direkt im Browser testen: `https://app.enlyze.com/api/v2/machines`

***

## Nächste Schritte

* [**ENLYZE API abfragen**](https://docs.enlyze.com/integrations/grafana/advanced-api/02-api-queries) - POST-Anfragen, Produktivitätskennzahlen, dynamische Zeiträume
