# SDK für TypeScript

> Typisierter Client für die Ladehase API, Live-Updates per Server-Sent Events und Prüfung von Webhooks.

Das SDK `@ladehase/sdk` ist ein schlanker, vollständig typisierter Client. Es wird aus der OpenAPI-Beschreibung erzeugt und passt darum immer zur API.

## Installation

```bash
npm install @ladehase/sdk
```

## Client erstellen

```ts
import { ladehase } from "@ladehase/sdk";

const lh = ladehase({ apiKey: process.env.LADEHASE_KEY! });

const { data, error } = await lh.GET("/v1/devices");
if (error) throw new Error(error.title);
for (const device of data.data) console.log(device.id, device.name);
```

Pfade, Parameter und Antworten sind typisiert. Dein Editor schlägt Endpunkte und Felder vor.

## Ladung starten und stoppen

```ts
const { data: session } = await lh.POST("/v1/sessions", {
  body: { device_id: "dev_…" },
  headers: { "idempotency-key": crypto.randomUUID() },
});

await lh.POST("/v1/sessions/{id}/stop", { params: { path: { id: session!.id } } });
```

## Tarif in der Vorschau berechnen

```ts
const { data: preview } = await lh.POST("/v1/tariffs/preview", {
  body: { rules: { energyPrice: 4500, serviceFee: 50 }, energy_wh: [20000] },
});
```

## Webhooks prüfen

```ts
import { verifyWebhook } from "@ladehase/sdk";

const ok = await verifyWebhook(rawBody, signatureHeader, process.env.LADEHASE_WEBHOOK_SECRET!);
```

Die Funktion nutzt Web Crypto und läuft in Node.js, Deno, Bun und Edge-Umgebungen. Details unter [Webhooks](/de/docs/webhooks).

## Andere Sprachen

Für andere Sprachen erzeugst du einen Client aus der OpenAPI-Beschreibung unter [www.ladehase.com/openapi.json](/openapi.json), zum Beispiel mit openapi-generator. Oder du nutzt die REST-API direkt mit einem HTTP-Client deiner Wahl.
