AstroWay/api v2.204.2 · hu
minden rendszer működik rendben

Reports V2: egy végpont tizenkettő helyett - `/v1/reports/generate`

12 típus-specifikus útvonal (/reports/natal, /reports/synastry, …) helyett egy egységesített POST végpont `/v1/reports/generate` report_type mezővel. SDK-fogyasztók egyetlen metódust kapnak tizenkettő helyett; MCP-katalógus tizenkettő eszközről egyre csökken.

12 típusú PDF-jelentés - natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli - eddig 12 különálló útvonalként éltek. Mindegyiknek saját sémája, saját chart-payload-ja, saját pricing tier-je van. Ez tisztességes a REST-kanon szerint, de DX-problémát okoz két szinten:

  1. SDK surface. A TypeScript kliens 12 metódust hordoz client.reports.natal(), client.reports.synastry(), … Minden új jelentéstípus = breaking change a public API SDK-ben (minor verzió új metódussal).
  2. MCP-katalógus. A hosted MCP-szerver 686 eszközt exponál: a 12 jelentés mindegyike külön tool entry-t foglal el. Az AI-ügynök, amely az MCP-n keresztül jár, le kell, hogy szkennelje a 12 tool leírást, hogy a megfelelőt válassza. Ez zaj a tool selection-ben.

Az új endpoint POST /v1/reports/generate - egy dispatcher a report_type enum-mal.

Terminál
curl -X POST https://api.astroway.info/v1/reports/generate \
-H "X-Api-Key: aw_live_..." \
-H "Content-Type: application/json" \
-d '{
"report_type": "natal",
"chart": {
"date": "1990-05-15",
"time": "14:30:00",
"timezoneOffset": 3,
"latitude": 50.45,
"longitude": 30.52,
"name": "Test"
},
"language": "uk",
"whitelabel": {
"themeColor": "#ff5500",
"reportName": "My Cosmic Map"
}
}'

12 érvényes report_type érték: natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.

A különböző típusok különböző payload mezőket igényelnek. A dispatcher a handlerben validál, és egy tipizált 400-at ad vissza:

report_typeKötelező mezőkHiányzó hibakód
natal, business, career, love, money, child, lal-kitab, human-design, vedic-kundli, transit-yearlychartMISSING_CHART
synastrychart1, chart2MISSING_CHARTS
tarot(opcionális) seed–

Tehát a report_type nem csak a render útvonalat irányítja, hanem a kérés testére vonatkozó validációs szabályokat is.

A visszafelé kompatibilitás teljes: az összes 12 típus-specifikus endpoint élő marad. Az új /v1/reports/generate - additív felület, nem helyettesítő. Ez azt jelenti, hogy a meglévő kód nem fog eltörni, de az új kód kompaktabban írható:

// Стара модель - direct method per type
const pdf1 = await client.reports.natal.create({ chart, whitelabel });
const pdf2 = await client.reports.synastry.create({ chart1, chart2 });
const pdf3 = await client.reports.tarot.create({ seed: "abc" });
// V2 - generic dispatcher
const pdf1 = await client.reports.generate({ report_type: "natal", chart, whitelabel });
const pdf2 = await client.reports.generate({ report_type: "synastry", chart1, chart2 });
const pdf3 = await client.reports.generate({ report_type: "tarot", seed: "abc" });

Mi a jobb – a use-case-től függ. A Direct-módszer jobb type narrowing-et ad (a TS-compiler tudja, hogy a client.reports.synastry.create() chart1 + chart2-t igényel). A Generic-dispatcher kisebb felületet biztosít dinamikus use-case-ekhez – például amikor a felhasználó a UI dropdownból választja ki a jelentéstípust, és nem akarsz 12-es switch-t a klienskódban.

A hosted MCP-szerveren (mcp.astroway.info) 12 különálló tool volt, mindegyik teljes paraméterleírással. A generate hozzáadása után nem töröljük a régi (visszafelé kompatibilitás) – de a új tool astroway_reports_generate egy leírást tartalmaz a report_type enum-mal:

Tool: astroway_reports_generate
Description: Generates a PDF/HTML astrology report. Pass report_type to select template.
Parameters:
report_type (enum): "natal" | "transit-yearly" | "synastry" | "business" | ...
chart (object, required for most types): birth chart data
chart1, chart2 (objects, required for synastry)
language (string): "uk" | "en" | ...
whitelabel (boolean | object): branding override

Az AI-ügynök, amikor megkapja a „generálj nekem egy natal jelentést a X dátumra” feladatot, egy jelöltet kap egy nyilvánvaló descriptorral, a 12 átfedő leírású jelölt helyett. Ez javítja a tool selection pontosságát az ügynöki szinten.

A dispatcher nem ad hozzá külön költséget. Minden report_type a saját belső renderelőjére továbbítódik, amelynek saját pricing tier-je van:

  • natal → TIER_7
  • transit-yearly → TIER_8
  • synastry, business, career, love, money, child, lal-kitab, human-design, vedic-kundli → megfelelő tier-ek
  • tarot → TIER_4

A konkrét credit számokat lásd a Pricing oldalon. A POST /v1/reports/generate hívás report_type: "natal" pontosan ugyanannyit kerül, mint a közvetlen POST /v1/reports/natal.

Az új whitelabel: BrandingObject inline-mód (kiadva 2026-05-19) a generic dispatcher-en keresztül változtatás nélkül működik:

Terminál
curl -X POST https://api.astroway.info/v1/reports/generate \
-H "X-Api-Key: aw_live_..." \
-H "Content-Type: application/json" \
-d '{
"report_type": "synastry",
"chart1": { ... },
"chart2": { ... },
"whitelabel": {
"companyName": "Acme Astrology",
"logoUrl": "https://cdn.example.com/logo.png",
"themeColor": "#ff5500"
}
}'

Egy dispatch + egy inline whitelabel = teljes körű white-label integráció minimális SDK felülettel.

GenerateReport - egy külön komponens a /v1/openapi.json-ban. oneOf-t használ a report_type diszkriminátor alapján, ami helyes codegen-t ad Pythonban (Pydantic) és PHP-ben (typed unions a psalm/phpstan-stílusú hint-ekkel).

A következő codegen kiadás az SDK-ban hozzáadja a client.reports.generate() metódust mindhárom csomagban (TS / Python / PHP). Addig hívhatod a generic HTTP kliensen keresztül a saját SDK-dban – a payload dokumentálva van az OpenAPI-ban.

ForgatókönyvAjánlott
A felhasználó a UI dropdownból választja a jelentéstípustgenerate (dinamikusan)
A backend pontosan egy típust ismer az endpointondirect (natal, synastry, …) – jobb típusozás
Integráció MCP / AI-ügynökön keresztülgenerate (kevesebb tool zaj)
Létező kód a v1.0 SDK-banhagyd meg a direct-et, fokozatosan migrálj

Nincs külön migration sürgősség – a direct endpointok nem deprecated. Ez tisztán DX-javítás azoknak, akiket a 12-módszeres felület zavar.

MakSeong · AstroWay

Az AstroWay API-t fejlesztem: a Swiss Ephemerist tiszta REST-be csomagolom és írok a unalmas részletekről, amelyek valójában fontosak.

// építs erre

Ugyanaz a Swiss Ephemeris, mint a Solar Fire-ben - 4 sor kóddal.

Ingyenes kulcs bankkártya nélkül. Havi 5 000 hívás a fizetésig.

További bejegyzések összes bejegyzés →

Ephemeris 2026-07-19

Hogyan tartjuk a pontosságot ellenőrzés alatt: CI a swetest és a NASA ellen

A pontosság az astro-API-ban könnyen romlik egy ephemeris refaktorálás miatt. Megvizsgáljuk a védelmet: egy Swiss Ephemeris mag az alkalmazáshoz és az API-hoz, több száz fagyasztott snapshot a referencia térképeken, és minden PR háromszögelése a swetest CGI, Kerykeion, Prokerala és a NASA árnyék katalógusa ellen.

Engineering 2026-07-15

Három hivatalos SDK: TypeScript, Python, PHP a nyers curl helyett

A nyers HTTP működik, de a típusos kliens órákat spórol meg: útvonalak automatikus kiegészítése, kérés és válasz típusai, beépített újrapróbálkozás 408/409/429/5xx hibákra, és Stainless-stílusú hierarchia. Bemutatjuk a három hivatalos SDK-t - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - és hogy hogyan generálódtak egyetlen OpenAPI-szerződésből.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.