Entwickler
Die API ist das Produkt
Directwerk ist API-first: Multi-Tenant-Whitelabel, Host-basierte Mandantenauflösung, OAuth2 und modulare Feature-Gates mit maschinenlesbaren Fehlercodes. Diese Seite ist ein Auszug — Installationsanleitung, OpenAPI-Referenz und Integrationsguides stehen in der öffentlichen Dokumentation.
So verbinden Integratoren
- Mandant über verifizierten Host-Header (kein X-Tenant-Id).
- Öffentliche Inhalte unter GET /api/v1/public/* ohne Authentifizierung.
- Geschützte Flows mit OAuth2-JWT über POST /oauth2/token.
Wichtigste Endpoints
Auswahl der relevantesten Pfade — nicht die vollständige Referenz.
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /api/v1/public/site-config Branding und aktive Module — Startpunkt für jedes Frontend. | Branding und aktive Module — Startpunkt für jedes Frontend. |
| GET | /api/v1/public/episodes Öffentlicher Katalog (FREE spielbar; PAID nur Metadaten, audioCdnUrl = null). | Öffentlicher Katalog (FREE spielbar; PAID nur Metadaten, audioCdnUrl = null). |
| GET | /api/v1/public/products Mitgliedschaftsprodukte und Preise für die Pricing-Seite. | Mitgliedschaftsprodukte und Preise für die Pricing-Seite. |
| GET | /feeds/{tenantSlug}/podcast.xml Öffentlicher RSS-Feed für Podcatcher (mandantenbezogen wie die API). | Öffentlicher RSS-Feed für Podcatcher (mandantenbezogen wie die API). |
| GET | /feeds/{tenantSlug}/u/{feedToken}.xml Privater Abonnenten-Feed (tokenisierte URL). | Privater Abonnenten-Feed (tokenisierte URL). |
| POST | /oauth2/token OAuth2-Token für Publisher- und Abonnenten-JWTs. | OAuth2-Token für Publisher- und Abonnenten-JWTs. |
| GET | /api/v1/me/episodes Berechtigte Episoden für eingeloggte Abonnenten. | Berechtigte Episoden für eingeloggte Abonnenten. |
| POST | /api/v1/me/billing/checkout-sessions Stripe-Checkout — Billing vollständig über die API. | Stripe-Checkout — Billing vollständig über die API. |
Beispiel: site-config
Jede öffentliche Frontend-Integration beginnt mit Branding und aktiven Modulen.
curl -sS \
-H "Host: podcast.beispiel.de" \
https://api.directwerk.org/api/v1/public/site-configAntwortformat
Einheitliches JSON-Envelope; Fehler enthalten strukturierte code-Felder für Integratoren.
Erfolg
{
"statusCode": 200,
"statusMessage": "OK",
"data": { "tenant": { "slug": "beispiel" }, "enabledModules": ["PODCAST"] },
"errors": [],
"metadata": {}
}Modul deaktiviert
{
"statusCode": 403,
"statusMessage": "Forbidden",
"data": null,
"errors": [{ "code": "FEATURE_NOT_ENABLED", "message": "Module PODCAST_RSS is not active" }],
"metadata": {}
}