# n8n

Workflow con quattro nodi: in ingresso i dati di nascita, al centro il tema natale dall'API, in uscita i segni del Sole, Luna e Ascendente. È stato importato in n8n 2.39.7 ed eseguito contro il production il 2026-09-17, e il risultato qui sotto è esattamente quello che ha restituito.

Per prima cosa, crea una chiave come descritto nella sezione [Chiave per l'automazione](/integrations/#ключ-для-автоматизації), con ambito `chart`.

## 1. Aggiungi la chiave come credential

La chiave viene salvata nel repository delle credenziali di n8n, non nel nodo, quindi non viene inclusa nel workflow esportato.

1. Crea in n8n una nuova credential di tipo **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: la tua chiave.
4. Salvala con il nome **AstroWay API key**. Il workflow qui sotto cerca la credential proprio con questo nome.

## 2. Importa il workflow

Carica [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), apri un workflow vuoto e incolla il contenuto del file sulla tela o usa l'importazione da file nel menu workflow.

Al suo interno ci sono quattro nodi:

- **Start**, nodo Manual Trigger: avvia il workflow durante il test.
- **Birth data**, nodo Edit Fields (Set): `date`, `time`, `timezone`, `latitude` e `longitude` di una persona.
- **AstroWay chart**, nodo HTTP Request: chiama `POST /v1/chart`.
- **Big three**, nodo Edit Fields (Set): converte la longitudine nei nomi dei segni.

## 3. Esegui

Esegui il workflow. **Big three** restituisce:

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

`offset_used` è lo scostamento da UTC che il server ha trovato per `Europe/Kyiv` il 1990-05-15: 4, non 3, che di solito si scrive manualmente.

## Come è configurato il nodo HTTP Request

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

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

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

Il corpo è definito da un'espressione, quindi i valori da qualsiasi nodo precedente vengono passati così come sono:

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

## Come vengono calcolati i segni

Ogni campo in **Big three** è un'espressione. Il segno è uguale alla longitudine divisa per 30 e arrotondata per difetto, come indice nella lista:

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

Per Sole e Luna, la longitudine viene presa da `$json.data.planets.find(p => p.name === 'Sun').longitude` e così via con `'Moon'`.

## Inserisci i tuoi dati

Sostituisci **Start** e **Birth data** con il trigger che effettivamente usi: un form, un webhook o un nuovo record di tabella, e mappa i suoi campi con i cinque nomi sopra. Due cose da verificare:

- **`timezone` non può essere vuoto.** Un valore vuoto viene rifiutato con `400`, quindi mappa il campo o imposta `auto` se le coordinate sono affidabili.
- **Le coordinate sono obbligatorie.** L'API non geocodifica il nome della città; se il modulo chiede solo il luogo, aggiungi un passaggio di geocodifica prima di **AstroWay chart**.

<Aside type="note">
Una chiamata fuori dall'ambito della chiave blocca l'esecuzione con `403 ENDPOINT_NOT_IN_SCOPE`, mentre una chiave oltre il budget restituisce `429 KEY_BUDGET_EXHAUSTED`. Entrambi sono progettati proprio per questo: aumenta il limite nel dashboard, non ripetere la richiesta.
</Aside>
