Vous pouvez accéder à l’API via curl ou fetch - contrat simple, un seul en-tête X-Api-Key, JSON aller-retour. Mais lorsque vous avez plus d’758 endpoints et que les corps des requêtes ont des dizaines de champs, un client typé économise des heures : autocomplétion des chemins, types de requêtes et de réponse, réessais automatiques sur une 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 à la carte natale en trois langages.
TypeScript - une fine couche sur openapi-fetch (~6 KB en 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, sur 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 - sur 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 qu’ils ont en commun
Section intitulée « Ce qu’ils ont en commun »Les 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êtes et de réponse pour tous les endpoints. TS fournit l’autocomplétion des chemins et des corps typés ; Python - PEP 561 typed-package ; PHP - signatures typées. L’IDE vous suggère les champs, et non la documentation dans la fenêtre adjacente.
- Retry avec backoff sur
408,409,429,5xx. Un temps de réseau instable ou de limitation de taux ne fait pas tomber votre code - le client réessaie automatiquement. - Hiérarchie d’erreurs Stainless-style. Les erreurs sont typées par classe, et non une chaîne dans
catch. Vous attrapez un type spécifique -RateLimitError,ValidationError- et vous traitez spécifiquement. - OpenAPI 3.1 comme source. Vous ajoutez un endpoint à l’API - il apparaît dans l’SDK à la prochaine mise à jour, sans duplication manuelle.
- OIDC + SLSA-provenance sur les publications : TS et PHP - via Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC sur PyPI. La chaîne de fournisseur est vérifiée.
L’URL de base dans tous les cas - https://api.astroway.info/v1/, la clé est transmise en en-tête X-Api-Key. La même clé que pour les appels HTTP simples ; l’SDK ne change rien dans l’authentification.
Frameworks et roadmap
Section intitulée « Frameworks et roadmap »Sur les trois SDK de base, il y a des intégrations prêtes pour les stacks spécifiques :
@astroway/react- hooks pour les applications Reactastroway/sdk-symfony- bundle pour Symfonyastroway/sdk-laravel- package pour Laravel
En cours de développement, mais pas encore publiés - Go, Ruby et Rust. Leur page est déjà dans le répertoire SDK avec la commande d’installation prévue ; lorsque le package est publié dans le registre, le statut change en « disponible ».
Commencer
Section intitulée « Commencer »- Clé sur dashboard/sign-up - 10 000 crédits par mois gratuit
- Installez l’_SDK dans votre langue (commandes ci-dessus)
- Premier appel - carte natale avec snippet ci-dessus, remplacez votre clé dans
ASTROWAY_API_KEY
Liste complète des SDK avec exemples pour chaque - 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.