Jusqu’à présent whitelabel: true dans nos endpoints de report nécessitait un compte WordPress avec les clés configurées dans whitelabel_configs. C’est historique – auparavant le white label était une fonctionnalité Pro du plugin WP, et l’API lisait simplement la même table DB.
Pour les utilisateurs SDK sans WP, cela signifiait : la configuration de marque était impossible sans un saut HTTP supplémentaire (garder un service de config séparé, le synchroniser avec le nôtre, puis envoyer whitelabel: true).
Désormais le champ accepte un inline-objet avec les 15 champs de branding. Une requête = contexte complet de la marque = PDF personnalisé.
Exemple : rapport PDF natal avec branding personnalisé
Section intitulée « Exemple : rapport PDF natal avec branding personnalisé »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" } }'Le PDF est rendu avec le logo dans l’en-tête, un titre personnalisé sur la couverture, des accents theme-color appropriés dans le chart‑SVG, et un bloc de contacts dans le pied de page.
Tous les 15 champs de l’objet
Section intitulée « Tous les 15 champs de l’objet »Tous les optionnels – un champ omis prend la valeur du config DB (si la clé API est liée à un utilisateur WP) ou des défauts système (pour les clients SDK sans WP).
| Champ | Type | Description |
|---|---|---|
companyName | string | Nom de la marque dans l’en-tête du PDF |
companyUrl | URL | Lien cliquable vers le site dans le pied de page |
companyEmail | Lien de contact dans le pied de page (mailto:) | |
companyMobile | string | Téléphone dans le pied de page |
companyBio | string | Un paragraphe de description de l’entreprise sur la page de couverture |
logoUrl | URL (.png/.jpg/.svg/.webp) | Logo, https‑only, ratio recommandé 200×60 |
frontImage | URL | Image hero sur la page de couverture |
textPrimaryColor | #RGB/#RRGGBB | Texte principal |
textSecondaryColor | #RGB/#RRGGBB | Sous‑titres, métadonnées |
backgroundColor | #RGB/#RRGGBB | Fond des pages |
themeColor | #RGB/#RRGGBB | Accents, titres, lignes d’aspect dans les graphiques |
headingColor | #RGB/#RRGGBB | Titres H1/H2 |
footerText | string | Copyright personnalisé dans le pied de page |
fontPairing | enum | serif-sans / sans-serif / serif-only / sans-only / system |
reportName | string | Remplace le nom de rapport par défaut sur la couverture |
12 endpoints de la famille /v1/reports/* acceptent ce champ de la même façon : natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.
Compatibilité descendante
Section intitulée « Compatibilité descendante »Le mode booléen est toujours actif et n’a pas changé :
whitelabel: true: lit la config DB pour l’utilisateur WP lié (comme avant)whitelabel: falseou champ absent : branding standard AstroWaywhitelabel: {…}: inline‑objet, nouveau comportement
Le schéma OpenAPI pour le champ est devenu boolean | BrandingObject (type union). Aucune requête existante ne sera cassée.
Priorité de résolution
Section intitulée « Priorité de résolution »Lorsque la clé API est liée à un utilisateur WP ET le client envoie un inline‑objet, l’inline l’emporte sur la DB. Concrètement :
- Défauts système (branding AstroWay)
- Config DB avec
whitelabel_configs(si l’utilisateur WP en possède un) - Inline‑objet du corps de la requête
Fusion – superficielle, clé par clé. Ainsi inline.themeColor = "#ff5500" écrasera la valeur DB, mais inline.logoUrl omis laissera le logo DB. C’est pratique pour les scénarios SaaS où le branding de base réside dans la DB, et le fine‑tuning per‑tenant arrive inline.
Mappage interne : themeColor devient primaryColor après l’appel à applyBrandingPreferences, fontPairing est mappé sur la pile CSS font-family dans le template Handlebars (par ex., serif-sans = font-family: 'Playfair Display', serif pour les titres + 'Inter', sans-serif pour le corps).
OpenAPI 3.1 + typage SDK
Section intitulée « OpenAPI 3.1 + typage SDK »BrandingObject est maintenant un composant séparé dans /v1/openapi.json – cela signifie que la prochaine version du SDK (TS / Python / PHP) recevra une classe typée :
// 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 },});Les feuilles de route des paquets SDK – dans les repos de staging correspondants (astroway-typescript-staging/ROADMAP.md, etc.). Cron publie des releases mineures tous les 5‑8 jours ; le BrandingObject typé sera dans la prochaine.
Ce que cela élimine
Section intitulée « Ce que cela élimine »Auparavant, pour un consommateur SaaS qui intègre la génération PDF d’AstroWay dans son propre produit, le flux était :
- Gérer chez toi une table
tenantsavec le champbranding_json - Avant chaque requête de rapport : récupérer la config de ton utilisateur
- Ne pas savoir comment transmettre à l’API sans le plugin WP (avant : impossible, il fallait nous demander de créer une entrée dans
whitelabel_configspour l’utilisateur SaaS) - Ou bien faire le post‑processing PDF avec ton propre rendu : c’est une infra supplémentaire
Désormais le flux :
- Stocker
branding_jsonchez toi - Le transmettre inline dans
whitelabelpour chaque requête
Moins de sauts HTTP, zéro synchronisation DB entre les services, contrôle total du branding par requête.
Disponibilité
Section intitulée « Disponibilité »Le mode inline est disponible sur tous les plans où les rapports PDF sont proposés – de Indie ($19/mois) à Business. Le niveau gratuit ne fournit pas de PDF (c’est intentionnel – le Free donne uniquement du JSON gratuit, sans rendu). Le coût en crédits de la requête ne change pas – la config inline n’ajoute pas de credit‑cost au rendu.
La documentation pour les 12 endpoints a été mise à jour avec des exemples du mode inline. Voir /docs/api/ → Reports.
Le même Swiss Ephemeris que Solar Fire - en 4 lignes de code.
Clé gratuite sans carte. 5 000 appels par mois avant le premier paiement.