API dapat diakses melalui curl atau fetch mentah - kontraknya sederhana, hanya satu header X-Api-Key, JSON masuk dan keluar. Namun ketika ada lebih dari 758 endpoint dan tubuh permintaan memiliki puluhan bidang, klien yang ter-tipe menghemat jam: otomatis melengkapi path, tipe permintaan dan respons, otomatis retry pada jaringan yang tidak stabil.
Oleh karena itu, kami memiliki tiga SDK resmi, yang dihasilkan dari satu kontrak OpenAPI 3.1.
Instalasi
Section titled “Instalasi”# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkContoh Minimal
Section titled “Contoh Minimal”Pemanggilan yang sama untuk natal chart dalam tiga bahasa.
TypeScript - wrapper tipis di atas openapi-fetch (~6 KB runtime), dengan otomatis melengkapi path:
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', },});
// aw.client.POST is the raw typed fetch, so `chart` is the { ok, data } envelopeconsole.log(chart.data.houses.ascendant); // 212.0952574979425Python - sinkron Astroway dan asinkron AsyncAstroway dengan permukaan identik, di atas 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['houses']['ascendant'])PHP - di atas Guzzle 7 dan 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['houses']['ascendant'];Apa yang Sama di Ketiganya
Section titled “Apa yang Sama di Ketiganya”Tiga bahasa berbeda, tapi jaminan yang sama - karena ketiganya dihasilkan dari kontrak OpenAPI yang sama:
- Tipe permintaan dan respons untuk semua endpoint. TS memberikan otomatis melengkapi path dan tubuh ter-tipe; Python - PEP 561 typed-package; PHP - tipe tanda tangan. IDE menyarankan bidang, bukan dokumentasi di tab berikutnya.
- Retry bawaan dengan backoff pada
408,409,429,5xx. Kegagalan jaringan sementara atau rate-limit tidak merusak kodemu - klien mengulangi sendiri. - Hierarki error Stainless-style. Error ter-tipe berdasarkan kelas, bukan string di
catch. Menangkap tipe spesifik -RateLimitError,ValidationError- dan menanganinya secara spesifik. - OpenAPI 3.1 sebagai sumber. Menambahkan endpoint ke API - muncul di SDK di rilis berikutnya, tanpa duplikasi manual.
- OIDC + SLSA-provenance pada publikasi: TS dan PHP - melalui Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC di PyPI. Rantai pasokan dapat diverifikasi.
Base URL di semua - https://api.astroway.info/v1/, kunci diteruskan melalui header X-Api-Key. Kunci yang sama untuk panggilan HTTP mentah; SDK tidak mengubah apa pun dalam otorisasi.
Wrapper Framework dan Roadmap
Section titled “Wrapper Framework dan Roadmap”Di atas tiga SDK dasar ada integrasi siap pakai untuk stack tertentu:
@astroway/react- hooks untuk aplikasi Reactastroway/sdk-symfony- bundle untuk Symfonyastroway/sdk-laravel- package untuk Laravel
Dalam pengerjaan, tetapi belum dipublikasikan - Go, Ruby, dan Rust. Halaman mereka sudah ada di katalog SDK dengan preview perintah instalasi; ketika paket dirilis di registry, status berubah menjadi ‘tersedia’.
Memulai
Section titled “Memulai”- Kunci di dashboard/sign-up - 10 000 kredit per bulan gratis
- Pasang SDK untuk bahasamu (perintah di atas)
- Pemanggilan pertama - natal chart dari snippet di atas, ganti kuncimu di
ASTROWAY_API_KEY
Daftar lengkap SDK dengan contoh untuk masing-masing - di halaman SDK.
Swiss Ephemeris yang sama dengan Solar Fire - dalam 4 baris kode.
Kunci gratis tanpa kartu. 5.000 panggilan per bulan sebelum pembayaran pertama.