Ходити до API через сирий curl чи fetch можна - контракт простий, один заголовок X-Api-Key, JSON туди-назад. Але коли ендпоінтів понад 726, а тіла запитів мають десяток полів, типізований клієнт економить години: автодоповнення шляхів, типи запиту й відповіді, автоматичні повтори на нестабільній мережі.
Тому в нас три офіційні SDK, згенеровані з одного OpenAPI 3.1-контракту.
Установка
Section titled “Установка”# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkМінімальний приклад
Section titled “Мінімальний приклад”Той самий виклик натальної карти трьома мовами.
TypeScript - тонка обгортка над openapi-fetch (~6 KB рантайму), з автодоповненням шляхів:
import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const { data: chart } = await aw.client.POST('/chart', { body: { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234, houseSystem: 'P', },});
console.log(chart.angles.asc);Python - синхронний Astroway і асинхронний AsyncAstroway з ідентичною поверхнею, поверх httpx:
from astroway import Astroway
aw = Astroway(api_key=os.environ['ASTROWAY_API_KEY'])
chart = aw.post('/chart', body={ 'date': '1990-07-14', 'time': '14:30:00', 'timezoneOffset': 3, 'latitude': 50.4501, 'longitude': 30.5234, 'houseSystem': 'P',})
print(chart['angles']['asc'])PHP - поверх Guzzle 7 і PSR-18:
<?phpuse Astroway\Astroway;
$aw = new Astroway(['apiKey' => getenv('ASTROWAY_API_KEY')]);
$chart = $aw->post('/chart', body: [ 'date' => '1990-07-14', 'time' => '14:30:00', 'timezoneOffset' => 3, 'latitude' => 50.4501, 'longitude' => 30.5234, 'houseSystem' => 'P',]);
echo $chart['angles']['asc']['sign'];Що спільного в усіх трьох
Section titled “Що спільного в усіх трьох”Три різні мови, але однакові гарантії - бо всі три генеруються з того самого OpenAPI-контракту:
- Типи запиту й відповіді для всіх ендпоінтів. TS дає автодоповнення шляхів і типізовані тіла; Python - PEP 561 typed-пакет; PHP - типізовані сигнатури. IDE підказує поля, а не документація у сусідній вкладці.
- Вбудований retry з backoff на
408,409,429,5xx. Тимчасовий мережевий збій або rate-limit не валить твій код - клієнт повторює сам. - Stainless-style ієрархія помилок. Помилки типізовані за класами, а не рядок у
catch. Ловиш конкретний тип -RateLimitError,ValidationError- і обробляєш точково. - OpenAPI 3.1 як джерело. Додали ендпоінт у API - він з’являється в SDK на наступному релізі, без ручного дублювання.
- OIDC + SLSA-провенанс на публікації: TS і PHP - через Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC на PyPI. Ланцюжок постачання перевірюваний.
Base URL у всіх - https://api.astroway.info/v1/, ключ передається заголовком X-Api-Key. Той самий ключ, що для сирих HTTP-викликів; SDK нічого не змінює в авторизації.
Фреймворк-обгортки та роадмап
Section titled “Фреймворк-обгортки та роадмап”Поверх трьох базових SDK є готові інтеграції під конкретні стеки:
@astroway/react- хуки для React-застосунківastroway/sdk-symfony- бандл для Symfonyastroway/sdk-laravel- пакет для Laravel
У роботі, але ще не опубліковані - Go, Ruby і Rust. Їхні сторінки вже є в каталозі SDK з превʼю install-команди; коли пакет виходить у registry, статус міняється на «доступний».
Почати
Section titled “Почати”- Ключ на dashboard/sign-up - 10 000 кредитів на місяць безкоштовно
- Постав SDK своєю мовою (команди вище)
- Перший виклик - натальна карта зі снипета вище, підстав свій ключ у
ASTROWAY_API_KEY
Повний перелік SDK з прикладами під кожен - на сторінці SDK.
Той самий Swiss Ephemeris, що й у Solar Fire — у 4 рядках коду.
Безкоштовний ключ без картки. 5 000 викликів на місяць до першої оплати.