---
title: "@vonvon-kit/core"
description: "Browser-Client für Sitzungszustand, kurzlebige JWT-Zugriffe und Management-API-Helfer."
locale: "de"
---

> Documentation Index
> Fetch the relevant documentation index at: https://vonvon.id/de/sdks/llms.txt
> Use this file to discover all available pages before exploring further.

# @vonvon-kit/core

## Installieren und konfigurieren

Registry-Status: UNPUBLISHED. Installieren Sie dieses SDK nur aus einem Checkout des Repository-Quellcodes; verwenden Sie keine externe Paket-Registry.

Konfigurieren Sie für eine Entwickler-App auf einem anderen Ursprung `mode: 'oidc'` mit issuer, clientId und einer exakten redirectUri. Verwenden Sie den same-origin-Modus nur, wenn die Anwendung die Core-Authentifizierungsendpunkte auf ihrem exakten Ursprung routet. Vonvon besitzt keine publishable-key-Anmeldedaten.

```ts
import { VonvonClient } from '@vonvon-kit/core'

const vonvon = new VonvonClient({
  mode: 'oidc',
  issuer: 'https://vonvon.id',
  clientId: 'client_abc123',
  redirectUri: 'https://app.example.com/auth/callback',
})

const authorization = await vonvon.createAuthorizationUrl({ returnUrl: '/dashboard' })
if (!authorization.ok) throw new Error(authorization.error.message)
window.location.assign(authorization.value)
```

## Sitzungslebenszyklus

- `load()` liest `/v1/me` und befüllt Benutzer, Sitzung und aktive Organisation.
- `signInPassword()` richtet eine Cookie-Sitzung über den Hosted Auth Passwort-Ablauf ein.
- `getToken()` gibt ein kurzlebiges JWT für API-Aufrufe zurück. Prüfen Sie es netzwerklos in Ihrem Backend mit JWKS.
- `setActiveOrganization()` wechselt den Organisationskontext und leert den Token-Cache, bevor der Zustand neu geladen wird.
- `signOut()` widerruft den Browser-Sitzungs-Cookie.

## Management-API-Helfer

Management-API-Hilfsfunktionen sind `nur serverseitig oder bei exakt gleichem Ursprung verfügbar`. Erstellen Sie auf dem Server einen separaten Client mit `sk_live_*` oder sk\_test\_\*; der OIDC-Browsermodus lehnt diese Vorgänge ab.

```ts
const management = new VonvonClient({
  apiUrl: 'https://vonvon.id',
  secretKey: process.env.VONVON_SECRET_KEY,
})

const keys = await management.listApiKeys()
if (!keys.ok) throw new Error(keys.error.message)

const created = await management.createApiKey({ name: 'CI deploy', scopes: ['read'] })
if (!created.ok) throw new Error(created.error.message)

const revoked = await management.revokeApiKey({ id: created.value.id })
if (!revoked.ok) throw new Error(revoked.error.message)
```

## Exportierte API

| Exportieren | Art | Zweck |
| --- | --- | --- |
| `VonvonClient` | class | Oberster Browser-Client: load, signIn, getToken, setActiveOrganization, signOut und Management-API-Helfer |
| `VonvonStore` | class | Framework-agnostischer reaktiver Speicher; mit useSyncExternalStore in Framework-Bindungen abonnieren |
| `TokenManager` | class | Kurzlebiger JWT-Cache und geplante Aktualisierung (erweiterte Nutzung und Tests) |
| `VonvonApiClient` | class | HTTP-Client für /v1/me und Token-Endpunkte |
| `VonvonNetworkError` | class | Wird bei Transportfehlern geworfen: Netzwerkfehler, Nicht-JSON-Antwort, 5xx ohne strukturierten Body |
| `makeVonvonError` | function | Einen strukturierten VonvonError für lokale Validierungsfehler ohne Netzwerkumlauf erstellen |
| `isVonvonErrorShape` | function | Typwächter: prüft, ob ein unbekannter Wert der VonvonError-Form aus der Übertragung entspricht |
| `decodeTokenClaims` | function | JWT-Payload-Claims nur für die Ablaufplanung dekodieren; verifiziert die Signatur nicht |
| `isTokenExpiring` | function | Gibt true zurück, wenn das Token innerhalb des Toleranzfensters abläuft (Standard 10 s) |
| `SESSION_STATUS` | as const Tupel | Gültige Sitzungsstatuswerte: active, pending, expired, removed, ended, revoked |
| `CLIENT_STATUS` | as const Tupel | Gültige Client-Statuswerte: loading, ready, degraded, error |
| `PACKAGE` | Zeichenkettenkonstante | Paketkennzeichner '@vonvon-kit/core' |

## Typen

| Typ | Beschreibung |
| --- | --- |
| `VonvonUser` | Schreibgeschützte Ansicht des authentifizierten Benutzers (keine Geheimnisse oder Hashes) |
| `VonvonOrganization` | Öffentliche Organisationsansicht |
| `VonvonOrganizationMembership` | Benutzermitgliedschaft in einer Organisation mit Rolle und Berechtigungen |
| `VonvonSession` | Sitzungsansicht mit Status, Ablauf und aktiver Organisation |
| `VonvonApiKey` | API-Schlüssel ohne Geheimnis (Listenansicht) |
| `VonvonApiKeyWithSecret` | API-Schlüssel wird einmalig bei der Erstellung zurückgegeben; enthält das Schlüsselfeld |
| `VonvonPage<T>` | Cursor-paginierter Antwort-Envelope |
| `CreateApiKeyInput` | Eingabe für createApiKey |
| `SignInPasswordInput` | Eingabe für signInPassword |
| `SignInResult` | Ergebnis von signInPassword: nächster Schritt oder Weiterleitungs-URL |
| `SessionStatus` | Vereinigung der SESSION\_STATUS-Werte |
| `ClientStatus` | Vereinigung der CLIENT\_STATUS-Werte |
| `VonvonState` | Vollständiger SDK-Zustandsschnappschuss, abonniert von VonvonStore |
| `VonvonStateListener` | Callback-Typ für Zustandsänderungs-Listener |
| `Unsubscribe` | Rückgabetyp von VonvonStore.subscribe |
| `GetTokenOptions` | Optionen für getToken: skipCache, leewaySeconds, signal |
| `VonvonClientOptions` | Diskriminierte VonvonClient-Konstruktoroptionen: same-origin akzeptiert apiUrl, secretKey, fetcher und now; oidc erfordert issuer, clientId und redirectUri. |
| `TokenResponse` | Rohform der Token-Endpunkt-Antwort |
| `ClientStateResponse` | Rohform der /v1/me-Antwort |
| `DecodedTokenClaims` | JWT-Payload-Claims, zurückgegeben von decodeTokenClaims |

## Zugehörige Dokumentation

Framework-Bindungen: [@vonvon-kit/react](/de/sdks/react). Server-Verifizierung: [@vonvon-kit/backend](/de/sdks/backend).

Source: https://vonvon.id/de/sdks/core/index.mdx
