# n8n

Workflow com quatro nós: na entrada os dados de nascimento, no meio o mapa natal da API, na saída os signos do Sol, da Lua e do Ascendente. Foi importado para o n8n 2.39.7 e executado contra produção em 2026-09-17, e o resultado abaixo é exatamente o que devolveu.

Primeiro cria a chave, como descrito na secção [Chave para automação](/integrations/#ключ-для-автоматизації), com a área `chart`.

## 1. Adiciona a chave como credencial

A chave é guardada no repositório de credentials n8n, e não no nó, por isso não aparece no workflow exportado.

1. Cria no n8n um novo credential do tipo **Header Auth**.  
2. **Name**: `X-Api-Key`.  
3. **Value**: a tua chave.  
4. Guarda‑o com o nome **AstroWay API key**. O workflow abaixo procura o credential exatamente por esse nome.

## 2. Importa o workflow

Descarrega o [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), abre um workflow vazio e cola o conteúdo do ficheiro no canvas ou usa a importação a partir do ficheiro no menu do workflow.

Dentro há quatro nós:

- **Start**, nó Manual Trigger: inicia o workflow durante o teste.  
- **Birth data**, nó Edit Fields (Set): `date`, `time`, `timezone`, `latitude` e `longitude` de uma pessoa.  
- **AstroWay chart**, nó HTTP Request: chama `POST /v1/chart`.  
- **Big three**, nó Edit Fields (Set): converte as longitudes em nomes dos signos.

## 3. Executa

Executa o workflow. **Big three** devolve:

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

`offset_used` é o deslocamento a partir de UTC que o servidor encontrou para `Europe/Kyiv` em 1990-05-15: 4, e não 3, que normalmente se escreve manualmente.

## Como está configurado o nó HTTP Request

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

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

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

O corpo é definido por uma expressão, por isso os valores de qualquer nó anterior são transmitidos tal como estão:

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

## Como são calculados os signos

Cada campo em **Big three** é uma expressão. O signo corresponde à longitude dividida por 30 e arredondada para baixo, como índice numa lista:

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

Para o Sol e a Lua a longitude é obtida a partir de `$json.data.planets.find(p => p.name === 'Sun').longitude` e da mesma forma de `'Moon'`.

## Substitui os teus dados

Substitui **Start** e **Birth data** por um trigger que realmente utilizas: um formulário, webhook ou uma nova linha de tabela, e mapeia os seus campos para os cinco nomes acima. Duas coisas vale a pena verificar:

- **`timezone` não pode estar vazio.** Um valor vazio é rejeitado com `400`, por isso mapeia o campo ou define `auto`, se as coordenadas forem confiáveis.  
- **As coordenadas são obrigatórias.** A API não faz geocoding do nome da cidade; se o formulário pedir apenas o local, adiciona um passo de geocoding antes do **AstroWay chart**.

<Aside type="note">
Uma chamada fora da área da chave interrompe a execução com `403 ENDPOINT_NOT_IN_SCOPE`, e uma chave acima do orçamento gera `429 KEY_BUDGET_EXHAUSTED`. Ambos são exatamente para isso: aumenta o limite no dashboard, em vez de repetir a solicitação.
</Aside>
