# n8n

Workflow à quatre nœuds : en entrée les données de naissance, au milieu le thème natal avec l'API, en sortie les signes du Soleil, de la Lune et de l'Ascendant. Il a été importé dans n8n 2.39.7 et exécuté contre la production le 2026-09-17, et le résultat ci-dessous est exactement celui qu'il a retourné.

Tout d'abord, créez une clé comme décrit dans la section [Clé pour l'automatisation](/integrations/#ключ-для-автоматизації), avec la portée `chart`.

## 1. Ajoutez la clé comme credential

La clé est stockée dans le référentiel des credentials n8n, et non dans le nœud, donc elle n'est pas incluse dans le workflow exporté.

1. Créez dans n8n un nouveau credential de type **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: votre clé.
4. Enregistrez-le sous le nom **AstroWay API key**. Le workflow ci-dessous recherche le credential par ce nom exact.

## 2. Importez le workflow

Téléchargez [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), ouvrez un workflow vide et insérez le contenu du fichier sur le canevas ou utilisez l'importation depuis le fichier dans le menu workflow.

À l'intérieur, quatre nœuds :
- **Start**, nœud Manual Trigger : déclenche le workflow lors des tests.
- **Birth data**, nœud Edit Fields (Set) : `date`, `time`, `timezone`, `latitude` et `longitude` d'une personne.
- **AstroWay chart**, nœud HTTP Request : appelle `POST /v1/chart`.
- **Big three**, nœud Edit Fields (Set) : convertit la longitude en noms de signes.

## 3. Lancez

Exécutez le workflow. **Big three** retourne :

```json
{
  "sun": "Taurus",
  "moon": "Capricorn",
  "rising": "Virgo",
  "offset_used": 4
}
```

`offset_used` est le décalage par rapport à UTC que le serveur a trouvé pour `Europe/Kyiv` le 1990-05-15 : 4, et non 3, qui est généralement écrit manuellement.

## Comment le nœud HTTP Request est configuré

- **Method**: `POST`.
- **URL**:

  ```
  https://api.astroway.info/v1/chart
  ```

- **Authentication**: Generic Credential Type.
- **Generic Auth Type**: Header Auth, credential **AstroWay API key**.
- **Send Body**: activé.
- **Body Content Type**: JSON.
- **Specify Body**: Using JSON.

Le corps est défini par une expression, donc les valeurs de n'importe quel nœud précédent sont transmises telles quelles :

```js
{{ JSON.stringify({ date: $json.date, time: $json.time, timezone: $json.timezone, latitude: $json.latitude, longitude: $json.longitude }) }}
```

## Comment les signes sont calculés

Chaque champ dans **Big three** est une expression. Le signe est égal à la longitude divisée par 30 et arrondie à l'inférieur, comme un index dans la liste :

```js
{{ ['Aries','Taurus','Gemini','Cancer','Leo','Virgo','Libra','Scorpio','Sagittarius','Capricorn','Aquarius','Pisces'][Math.floor($json.data.houses.ascendant / 30)] }}
```

Pour le Soleil et la Lune, la longitude est prise de `$json.data.planets.find(p => p.name === 'Sun').longitude` et de même pour `'Moon'`.

## Insérez vos propres données

Remplacez **Start** et **Birth data** par le déclencheur que vous utilisez réellement : un formulaire, un webhook ou une nouvelle ligne de tableau, et mappez ses champs aux cinq noms ci-dessus. Deux choses à vérifier :

- **`timezone` ne peut pas être vide.** Une valeur vide est rejetée avec `400`, donc mappez un champ ou mettez `auto` si les coordonnées sont fiables.
- **Les coordonnées sont obligatoires.** L'API ne géocode pas le nom de la ville ; si le formulaire ne demande que le lieu, ajoutez une étape de géocodage avant **AstroWay chart**.

<Aside type="note">
Un appel en dehors de la portée de la clé arrête l'exécution avec `403 ENDPOINT_NOT_IN_SCOPE`, et une clé hors budget avec `429 KEY_BUDGET_EXHAUSTED`. Les deux sont conçus pour cela : augmentez la limite dans le tableau de bord, ne répétez pas la requête.
</Aside>
