On peut appeler l’API avec un curl ou un fetch bruts : le contrat est simple, un seul en-tête X-Api-Key, du JSON dans les deux sens. Mais quand il y a plus de 761 endpoints et que les corps de requête comptent une dizaine de champs, un client typé fait gagner des heures : autocomplétion des chemins, types de requête et de réponse, nouvelles tentatives automatiques sur un réseau instable.
C’est pourquoi nous avons trois SDK officiels, générés à partir d’un même contrat OpenAPI 3.1.
Installation
Section intitulée « Installation »# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkExemple minimal
Section intitulée « Exemple minimal »Le même appel de thème natal dans trois langages.
TypeScript : une fine surcouche au-dessus de openapi-fetch (~6 KB de runtime), avec autocomplétion des chemins :
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 : Astroway synchrone et AsyncAstroway asynchrone avec une surface identique, au-dessus de 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 : au-dessus de Guzzle 7 et 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'];Ce que les trois ont en commun
Section intitulée « Ce que les trois ont en commun »Trois langages différents, mais les mêmes garanties, car les trois sont générés à partir du même contrat OpenAPI :
- Types de requête et de réponse pour tous les endpoints. TS offre l’autocomplétion des chemins et des corps typés ; Python, un paquet typé PEP 561 ; PHP, des signatures typées. C’est l’IDE qui te souffle les champs, pas la documentation dans l’onglet d’à côté.
- Retry intégré avec backoff sur
408,409,429,5xx. Une panne réseau passagère ou un rate limit ne fait pas planter ton code : le client réessaie tout seul. - Hiérarchie d’erreurs à la Stainless. Les erreurs sont typées par classes, pas une chaîne dans un
catch. Tu attrapes un type précis,RateLimitError,ValidationError, et tu le traites de façon ciblée. - OpenAPI 3.1 comme source. Un endpoint ajouté à l’API apparaît dans les SDK à la release suivante, sans duplication manuelle.
- OIDC + provenance SLSA à la publication : TS et PHP via Trusted Publisher / auto-mirror, Python via Trusted Publisher OIDC sur PyPI. La chaîne d’approvisionnement est vérifiable.
La Base URL est la même partout, https://api.astroway.info/v1/, et la clé passe par l’en-tête X-Api-Key. C’est la même clé que pour les appels HTTP bruts ; le SDK ne change rien à l’autorisation.
Surcouches pour frameworks et roadmap
Section intitulée « Surcouches pour frameworks et roadmap »Au-dessus des trois SDK de base, il existe des intégrations prêtes à l’emploi pour des stacks précises :
@astroway/react: des hooks pour les applications Reactastroway/sdk-symfony: un bundle pour Symfonyastroway/sdk-laravel: un paquet pour Laravel
En cours de développement, mais pas encore publiés : Go, Ruby et Rust. Leurs pages figurent déjà dans le catalogue des SDK avec un aperçu de la commande d’installation ; quand le paquet arrive sur le registry, le statut passe à “disponible”.
Commencer
Section intitulée « Commencer »- Une clé sur dashboard/sign-up : 10 000 crédits par mois gratuitement
- Installe le SDK dans ton langage (commandes ci-dessus)
- Premier appel : le thème natal du snippet ci-dessus, avec ta clé dans
ASTROWAY_API_KEY
La liste complète des SDK, avec des exemples pour chacun, se trouve sur la page SDK.
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.