# n8n

Workflow z czterech węzłów: na wejściu dane urodzenia, w środku karta natalna z API, na wyjściu znaki Słońca, Księżyca i Ascendentu. Został zaimportowany do n8n 2.39.7 i uruchomiony przeciw produkcji 2026-09-17, a wynik poniżej to dokładnie to, co zwrócił.

Najpierw utwórz klucz, jak opisano w sekcji [Klucz do automatyzacji](/integrations/#ключ-для-автоматизації), z zakresem `chart`.

## 1. Dodaj klucz jako credential

Klucz jest przechowywany w magazynie credentials n8n, a nie w węźle, więc nie trafia do wyeksportowanego workflow.

1. Utwórz w n8n nowy credential typu **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: twój klucz.
4. Zapisz go pod nazwą **AstroWay API key**. Workflow poniżej szuka credential właśnie pod tą nazwą.

## 2. Importuj workflow

Pobierz [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), otwórz pusty workflow i wklej zawartość pliku na płótno lub użyj importu z pliku w menu workflow.

Wewnątrz cztery węzły:

- **Start**, węzeł Manual Trigger: uruchamia workflow podczas testu.
- **Birth data**, węzeł Edit Fields (Set): `date`, `time`, `timezone`, `latitude` i `longitude` jednej osoby.
- **AstroWay chart**, węzeł HTTP Request: wywołuje `POST /v1/chart`.
- **Big three**, węzeł Edit Fields (Set): przekształca długości na nazwy znaków.

## 3. Uruchom

Wykonaj workflow. **Big three** zwraca:

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

`offset_used` to przesunięcie od UTC, które serwer znalazł dla `Europe/Kyiv` na 1990-05-15: 4, a nie 3, które zwykle wpisuje się ręcznie.

## Jak skonfigurowany jest węzeł 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**: włączone.
- **Body Content Type**: JSON.
- **Specify Body**: Using JSON.

Ciało jest określone wyrażeniem, więc wartości z dowolnego poprzedniego węzła są przekazywane tak jak są:

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

## Jak obliczane są znaki

Każde pole w **Big three** to wyrażenie. Znak jest równy długości podzielonej przez 30 i zaokrąglonej w dół, jako indeks w liście:

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

Dla Słońca i Księżyca długość jest pobierana z `$json.data.planets.find(p => p.name === 'Sun').longitude` i tak samo z `'Moon'`.

## Podstaw swoje dane

Zamień **Start** i **Birth data** wyzwalaczem, którego naprawdę używasz: formularzem, webhookiem lub nowym wierszem tabeli, i dopasuj jego pola do pięciu nazw powyżej. Dwie rzeczy warto sprawdzić:

- **`timezone` nie może być pusty.** Puste wartości są odrzucane z `400`, więc dopasuj pole lub ustaw `auto`, jeśli współrzędne są wiarygodne.
- **Koordynaty są obowiązkowe.** API nie geokoduje nazwy miasta; jeśli formularz pyta tylko o miejsce, dodaj krok geokodowania przed **AstroWay chart**.

<Aside type="note">
Wywołanie poza zakresem klucza zatrzymuje uruchomienie z `403 ENDPOINT_NOT_IN_SCOPE`, a klucz przekraczający budżet z `429 KEY_BUDGET_EXHAUSTED`. Oba właśnie w tym celu: podnieś limit w dashboardzie, a nie powtarzaj zapytanie.
</Aside>
