# n8n

Ένα workflow με τέσσερα nodes: στην είσοδο τα δεδομένα γέννησης, στη μέση το γενέθλιο χάρτη από το API, στην έξοδο τα ζώδια του Ήλιου, της Σελήνης και του Ανελκυστήρα. Έχει εισαχθεί στο n8n 2.39.7 και τρέχει ενάντια στο production στις 2026-09-17, και το αποτέλεσμα παρακάτω είναι ακριβώς αυτό που επέστρεψε.

Πρώτα δημιούργησε ένα κλειδί, όπως περιγράφεται στην ενότητα [Κλειδί για αυτοματοποίηση](/integrations/#ключ-для-автоматизації), με περιοχή `chart`.

## 1. Πρόσθεσε το κλειδί ως credential

Το κλειδί αποθηκεύεται στο αποθετήριο credentials του n8n, όχι στο node, έτσι δεν περιλαμβάνεται στο εξαγόμενο workflow.

1. Δημιούργησε στο n8n ένα νέο credential τύπου **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: το κλειδί σου.
4. Αποθήκευσε το με το όνομα **AstroWay API key**. Το workflow παρακάτω ψάχνει το credential ακριβώς με αυτό το όνομα.

## 2. Εισάγετε το workflow

Κατέβασε το [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), άνοιξε ένα κενό workflow και επικόλλησε το περιεχόμενο του αρχείου στον καμβά ή χρησιμοποίησε την εισαγωγή από αρχείο στο μενού του workflow.

Μέσα υπάρχουν τέσσερα nodes:

- **Start**, node Manual Trigger: εκκινεί το workflow κατά τη δοκιμή.
- **Birth data**, node Edit Fields (Set): `date`, `time`, `timezone`, `latitude` και `longitude` ενός ατόμου.
- **AstroWay chart**, node HTTP Request: καλεί το `POST /v1/chart`.
- **Big three**, node Edit Fields (Set): μετατρέπει τις μακριές σε ονόματα ζώδιων.

## 3. Εκτέλεσε

Εκτέλεσε το workflow. Το **Big three** επιστρέφει:

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

`offset_used` είναι η μετατόπιση από UTC που βρήκε ο διακομιστής για το `Europe/Kyiv` στις 1990-05-15: 4, αντί για 3, που συνήθως γράφεται χειροκίνητα.

## Πώς είναι ρυθμισμένο το node 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**: ενεργοποιημένο.
- **Body Content Type**: JSON.
- **Specify Body**: Using JSON.

Το σώμα ορίζεται με έκφραση, έτσι οι τιμές από οποιοδήποτε προηγούμενο node περνούν όπως είναι:

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

## Πώς υπολογίζονται τα ζώδια

Κάθε πεδίο στο **Big three** είναι μια έκφραση. Το ζώδιο ισούται με το μήκος, διαιρεμένο δια 30 και στρογγυλοποιημένο προς τα κάτω, ως δείκτης στη λίστα:

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

Για τον Ήλιο και τη Σελήνη το μήκος λαμβάνεται από `$json.data.planets.find(p => p.name === 'Sun').longitude` και το ίδιο για `'Moon'`.

## Αντικατέστησε τα δικά σου δεδομένα

Αντικατέστησε το **Start** και το **Birth data** με το trigger που πραγματικά χρησιμοποιείς: φόρμα, webhook ή νέα γραμμή πίνακα, και αντιστοίχισε τα πεδία του με τα πέντε ονόματα παραπάνω. Δύο πράγματα αξίζει να ελέγξεις:

- **`timezone` δεν μπορεί να είναι κενό.** Η κενή τιμή απορρίπτεται με `400`, έτσι αντιστοίχισε το πεδίο ή όρισε `auto`, αν οι συντεταγμένες είναι αξιόπιστες.
- **Οι συντεταγμένες είναι υποχρεωτικές.** Το API δεν γεωκωδικοποιεί το όνομα της πόλης· αν η φόρμα ζητά μόνο την τοποθεσία, πρόσθεσε ένα βήμα γεωκωδικοποίησης πριν το **AstroWay chart**.

<Aside type="note">
Κλήση εκτός της περιοχής του κλειδιού σταματά την εκτέλεση με `403 ENDPOINT_NOT_IN_SCOPE`, και κλειδί που υπερβαίνει τον προϋπολογισμό με `429 KEY_BUDGET_EXHAUSTED`. Και τα δύο είναι για αυτό: αύξησε το όριο στον πίνακα ελέγχου, αντί να επαναλάβεις το αίτημα.
</Aside>
