# REST API

## REST API

Überblick über die Eliona REST APIDie Eliona REST API ermöglich einen einheitlichen Zugriff auf die Ressourcen und Daten einer Eliona Umgebung. Die Beschreibung der API liegt im weit verbreiteten Format [OpenAPI](https://www.openapis.org/) vor und kann somit auf vielfältige Weise weiterverwendet werden.

[![](https://api.eliona.io/favicon-32x32.png)Eliona API](https://api.eliona.io/)

Das [Eliona App SDK](https://doc.eliona.io/collection/referenzen/app-sdk) ermöglicht mit vorgefertigten Bibliotheken für unterschiedliche Programmiersprachen den Zugriff auf Eliona über die API.

### Zugriff und Authentifizierung <a href="#zugriff-und-authentifizierung" id="zugriff-und-authentifizierung"></a>

Die Eliona API kann man über den URL-Pfad `/api/v2` erreichen. Lautet die URL für Eliona beispielsweise `https://meine.eliona.domain`, dann erreicht man die API über folgende URL:

> `https://meine.eliona.domain/api/v2`

Für die Authentifizierung ist ein API-Key zu verwenden. Dieser wird pro Anwendung vom Administrator von Eliona ausgestellt und kann mit einem Ablaufdatum versehen sein. Für die Erstellung muss bekannt sein, welche Endpunkte der API benötigt werden und ob darüber lesende oder schreibende Zugriffe erfolgen sollen.Der API-Key ist im HTTP-Header des Aufrufs als `X-Api-Key` mitzuliefern:GET <https://meine.eliona.domain/api/v2/assets/158X-Api-Key>: {{key}}

### **Postman Collection** mit Beispielen

Eine Postman-Collection mit mehreren Anforderungsrequests steht für einfaches API-Testing zur Verfügung. Sie können die Datei `postman_collection.json` direkt in Postman über die folgende URL importieren. Bevor Sie die Sammlung verwenden, stellen Sie sicher, dass Sie die Variablen `api-server` und `read-write-token` entsprechend Ihrer Umgebung aktualisieren.

> <https://raw.githubusercontent.com/eliona-smart-building-assistant/eliona-api/refs/heads/main/examples/postman-collection.json>

### Clients für den Zugriff auf die API <a href="#clients-fuer-den-zugriff-auf-die-api" id="clients-fuer-den-zugriff-auf-die-api"></a>

**Clients für unterschiedliche Programmiersprachen**

Mit der OpenAPI-Beschreibung der Schnittstelle ist es mittels [OpenAPI-Generatoren](https://openapi-generator.tech/docs/generators) möglich passende Clients für die verschiedensten Programmiersprachen zu erstellen.Für die Generierung stehen unterschiedliche Methoden zur Verfügung. Es empfiehlt sich das bereitgestellte Docker-Image zu verwenden. Dazu wird die jeweils aktuelle Version der OpenAPI-Beschreibung referenziert:

> ​<https://raw.githubusercontent.com/eliona-smart-building-assistant/eliona-api/main/openapi.yaml>​

Hier ein beispielhafter Aufruf zur Generierung eines Clients für die Programmiersprache Go.

{% code lineNumbers="true" %}

```bash
docker run --rm \
     -v "${PWD}:/local" \
     openapitools/openapi-generator-cli:v6.2.1 generate \
     -g go \
     -i https://raw.githubusercontent.com/eliona-smart-building-assistant/eliona-api/main/openapi.yaml \
     -o /local \
     --additional-properties="packageName=api"
```

{% endcode %}

Für die Programmiersprachen Go und Python wird derzeit immer ein Client aktualisiert und über GitHub bereitgestellt.

{% embed url="<https://github.com/eliona-smart-building-assistant/python-eliona-api-client>" %}
Python Client für Eliona API
{% endembed %}

{% embed url="<https://github.com/eliona-smart-building-assistant/go-eliona-api-client>" %}
Go Client für Eliona API
{% endembed %}

**Postman: Import der API-Beschreibung**

Die OpenAPI-Beschreibung der Eliona REST-Schnittstelle kann in Postman importiert werden. Somit stehen alle Endpunkte für die Abfrage zur Verfügung. Dazu ist folgende URL in Postman zu importieren:

> ​<https://raw.githubusercontent.com/eliona-smart-building-assistant/eliona-api/main/openapi.yaml>​

![](https://1888287146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB9s2DNtIvhBdrJ64xR9g%2Fuploads%2FR1ruHAyXir61hkKWi3x3%2Fimage.png?alt=media\&token=e655cac8-5759-4685-9d28-95b57981c1f6)​![](https://1888287146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB9s2DNtIvhBdrJ64xR9g%2Fuploads%2F3fKWL7jsrEbMLrASydHg%2Fimage.png?alt=media\&token=64660104-83c4-4a8c-85c1-f9994d48e610)​

<figure><img src="https://1888287146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB9s2DNtIvhBdrJ64xR9g%2Fuploads%2Fy06Xa74cDM69ZY7u8yJR%2Fimage.png?alt=media&#x26;token=e486405a-9a8e-4f83-ae20-02901d94af16" alt=""><figcaption></figcaption></figure>

Import URL für WorkspaceNachdem die OpenAPI-Datei importiert wurde, stehe alle Endpunkte zur Verfügung. Damit API verwendet werden kann, muss unter dem Punkt Authorization der API-Key und unter Variables die jeweilige Basis-URL eingetragen werden.

#### Mock für API Tests <a href="#mock-fuer-api-tests" id="mock-fuer-api-tests"></a>

Für den Test mit der API steht eine entsprechender Eliona-Mock zur Verfügung. Dieser kann losgelöst von einer vollständigen Eliona-Umgebung genutzt werden. Der Mock stellt eine vollständige API-Implementierung und eine vereinfachte Eliona-Datenbank mittels Docker-Netzwerk zur Verfügung. Die passende `docker-compose.yml` und die Datenbankdefinition wird über GitHub bereitgestellt:

{% embed url="<https://github.com/eliona-smart-building-assistant/eliona-mock>" %}
Eliona-Mock
{% endembed %}
