Bis heute erforderte whitelabel: true in unseren Report-Endpunkten ein WordPress‑Konto mit konfigurierten Schlüsseln in whitelabel_configs. Das ist historisch – früher war das White‑Label eine Pro‑Funktion des WP‑Plugins, und die API las einfach dieselbe DB‑Tabelle.
Für SDK‑Nutzer ohne WP bedeutete das: brand‑config war ohne einen zusätzlichen HTTP‑Sprung nicht möglich (einen separaten Config‑Service betreiben, mit unserem synchronisieren und dann whitelabel: true senden).
Jetzt akzeptiert das Feld ein inline‑Objekt mit allen 15 Branding‑Feldern. Eine Anfrage = voller Marken‑Kontext = personalisiertes PDF.
Beispiel: PDF‑Natal‑Report mit benutzerdefiniertem Branding
Abschnitt betitelt „Beispiel: PDF‑Natal‑Report mit benutzerdefiniertem Branding“curl -X POST https://api.astroway.info/v1/reports/natal \ -H "X-Api-Key: aw_live_..." \ -H "Content-Type: application/json" \ -d '{ "chart": { "date": "1990-05-15", "time": "14:30:00", "timezoneOffset": 3, "latitude": 50.45, "longitude": 30.52, "name": "Maria" }, "whitelabel": { "companyName": "Acme Astrology", "companyUrl": "https://acme-astro.example.com", "companyEmail": "hello@acme-astro.example.com", "logoUrl": "https://cdn.example.com/logo.png", "themeColor": "#ff5500", "headingColor": "#1a1a2e", "reportName": "My Personal Cosmic Map", "footerText": "© 2026 Acme Astrology", "fontPairing": "serif-sans" } }'Das PDF wird mit einem Logo im Header, einem benutzerdefinierten Titel auf dem Cover, passenden theme‑color Akzenten im Chart‑SVG und einem Kontakt‑Block im Footer gerendert.
Alle 15 Felder des Objekts
Abschnitt betitelt „Alle 15 Felder des Objekts“Alle optional – ein fehlendes Feld übernimmt den Wert aus der DB‑Konfiguration (wenn der API‑Schlüssel an einen WP‑Nutzer gebunden ist) oder aus den systemeigenen Defaults (für SDK‑Kunden ohne WP).
| Feld | Typ | Zweck |
|---|---|---|
companyName | string | Markenname im PDF‑Header |
companyUrl | URL | Klickbarer Link zur Website im Footer |
companyEmail | Kontakt‑Link im Footer (mailto:) | |
companyMobile | string | Telefon im Footer |
companyBio | string | Ein Absatz mit der Unternehmensbeschreibung auf der Cover‑Seite |
logoUrl | URL (.png/.jpg/.svg/.webp) | Logo, nur https, empfohlenes Verhältnis 200×60 |
frontImage | URL | Hero‑Bild auf der Cover‑Seite |
textPrimaryColor | #RGB/#RRGGBB | Primär‑Textfarbe |
textSecondaryColor | #RGB/#RRGGBB | Sekundär‑Text, Metadaten |
backgroundColor | #RGB/#RRGGBB | Seiten‑Hintergrund |
themeColor | #RGB/#RRGGBB | Akzente, Überschriften, Aspekt‑Linien in Charts |
headingColor | #RGB/#RRGGBB | H1/H2‑Überschriften |
footerText | string | Benutzerdefinierter Copyright‑Text im Footer |
fontPairing | enum | serif-sans / sans-serif / serif-only / sans-only / system |
reportName | string | Ersetzt den Standard‑Report‑Namen auf dem Cover |
12 Endpunkte der Familie /v1/reports/* akzeptieren dieses Feld einheitlich: natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.
Rückwärtskompatibilität
Abschnitt betitelt „Rückwärtskompatibilität“Der Boolean‑Modus ist weiterhin aktiv und hat sich nicht geändert:
whitelabel: true: liest die DB‑Konfiguration für den gebundenen WP‑Nutzer (wie zuvor)whitelabel: falseoder das Feld fehlt: Standard‑AstroWay‑Brandingwhitelabel: {…}: Inline‑Objekt, neues Verhalten
Das OpenAPI‑Schema für das Feld ist jetzt boolean | BrandingObject (Union‑Typ). Keine bestehende Anfrage wird brechen.
Auflösungspriorität
Abschnitt betitelt „Auflösungspriorität“Wenn der API‑Schlüssel an einen WP‑Nutzer gebunden ist und der Client ein Inline‑Objekt sendet – das Inline‑Objekt hat Vorrang vor der DB. Konkret:
- System‑Defaults (AstroWay‑Branding)
- DB‑Konfiguration aus
whitelabel_configs(falls der WP‑Nutzer eine hat) - Inline‑Objekt aus dem Request‑Body
Merge – shallow, Schlüssel‑für‑Schlüssel. Das heißt, inline.themeColor = "#ff5500" überschreibt den DB‑Wert, aber ein fehlendes inline.logoUrl lässt das DB‑Logo erhalten. Das ist praktisch für SaaS‑Szenarien, bei denen das Basis‑Branding in der DB liegt und per‑Tenant‑Feintuning inline kommt.
Interne Zuordnung: themeColor wird nach Aufruf von applyBrandingPreferences zu primaryColor, fontPairing wird auf den CSS‑font-family‑Stack im Handlebars‑Template gemappt (z. B. serif-sans = font-family: 'Playfair Display', serif für Überschriften + 'Inter', sans-serif für den Body).
OpenAPI 3.1 + SDK‑Typisierung
Abschnitt betitelt „OpenAPI 3.1 + SDK‑Typisierung“BrandingObject ist jetzt ein separates Component in /v1/openapi.json – das bedeutet, dass das nächste SDK‑Release (TS / Python / PHP) eine typisierte Klasse erhalten wird:
// TS SDK - після наступного codegen-релізуimport { Astroway } from "@astroway/sdk";
const client = new Astroway({ apiKey: process.env.ASTROWAY_KEY });
const pdf = await client.reports.natal.create({ chart: { date: "1990-05-15", time: "14:30", /* ... */ }, whitelabel: { companyName: "Acme Astrology", themeColor: "#ff5500", reportName: "My Personal Cosmic Map", fontPairing: "serif-sans", // typed enum, autocomplete у IDE },});Roadmaps der SDK‑Pakete – in den jeweiligen Staging‑Repos (astroway-typescript-staging/ROADMAP.md usw.). Der Cron veröffentlicht alle 5‑8 Tage Minor‑Releases; das typisierte BrandingObject kommt bald.
Was das eliminiert
Abschnitt betitelt „Was das eliminiert“Früher war der Weg für einen SaaS‑Konsumenten, der die AstroWay‑PDF‑Generierung in sein Produkt integriert, folgender:
- Eine eigene Tabelle
tenantsmit dem Feldbranding_jsonpflegen - Vor jedem Report‑Request die Konfiguration des eigenen Users abrufen
- Nicht wissen, wie man das an die API ohne WP‑Plugin übergibt (früher: gar nicht, man musste uns bitten, einen Eintrag in
whitelabel_configsfür den SaaS‑User anzulegen) - Oder das PDF‑Post‑Processing mit eigenem Renderer durchführen: das ist zusätzliche Infrastruktur
Jetzt der Weg:
branding_jsonintern speichern- Inline in
whitelabelfür jede Anfrage übergeben
Weniger HTTP‑Sprünge, null DB‑Synchronisation zwischen den Services, volle Kontrolle über das Branding per Request.
Verfügbarkeit
Abschnitt betitelt „Verfügbarkeit“Der Inline‑Modus ist auf allen Tarifen verfügbar, die PDF‑Reports bieten – von Indie ($19/Monat) bis Business. Der Free‑Tier liefert kein PDF (absichtlich – im Free‑Tier gibt es nur kostenloses JSON, kein Rendering). Die Kreditkosten pro Anfrage ändern sich nicht – die Inline‑Konfiguration fügt keinen zusätzlichen credit‑cost zum Rendering hinzu.
Die Dokumentation für alle 12 Endpunkte wurde mit Beispielen für den Inline‑Modus aktualisiert. Siehe /docs/api/ → Reports.
Derselbe Swiss Ephemeris wie in Solar Fire - in 4 Zeilen Code.
Kostenloser Schlüssel ohne Kreditkarte. 5.000 Aufrufe pro Monat vor der ersten Zahlung.