# n8n

Workflow với bốn node: đầu vào là dữ liệu sinh, ở giữa là bản đồ sinh từ API, đầu ra là các dấu hiệu của Mặt Trời, Mặt Trăng và Ascendant. Nó đã được nhập vào n8n 2.39.7 và chạy với production vào 2026-09-17, và kết quả dưới đây chính là những nó đã trả về.

Đầu tiên, hãy tạo khóa như được mô tả trong phần [Khóa cho tự động hóa](/integrations/#ключ-для-автоматизації), với phạm vi `chart`.

## 1. Thêm khóa làm credential

Khóa được lưu trong kho credentials của n8n, không phải trong node, vì vậy nó không xuất hiện trong workflow được xuất.

1. Tạo trong n8n một credential mới loại **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: khóa của bạn.
4. Lưu nó với tên **AstroWay API key**. Workflow dưới đây tìm credential chính xác với tên này.

## 2. Nhập workflow

Tải xuống [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), mở một workflow trống và dán nội dung tệp vào canvas hoặc sử dụng nhập từ tệp trong menu workflow.

Bên trong có bốn node:

- **Start**, node Manual Trigger: khởi chạy workflow khi kiểm tra.
- **Birth data**, node Edit Fields (Set): `date`, `time`, `timezone`, `latitude` và `longitude` của một người.
- **AstroWay chart**, node HTTP Request: gọi `POST /v1/chart`.
- **Big three**, node Edit Fields (Set): chuyển đổi kinh độ thành tên các dấu hiệu.

## 3. Chạy

Thực hiện workflow. **Big three** trả về:

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

`offset_used` là độ lệch khỏi UTC mà máy chủ tìm thấy cho `Europe/Kyiv` vào 1990-05-15: 4, không phải 3, thường được viết tay.

## Cách node HTTP Request được cấu hình

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

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

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

Thân được đặt bằng biểu thức, vì vậy các giá trị từ bất kỳ node nào trước đó được truyền như chúng là:

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

## Cách tính các dấu hiệu

Mỗi trường trong **Big three** là một biểu thức. Dấu hiệu bằng kinh độ chia cho 30 và làm tròn xuống dưới, như chỉ mục trong danh sách:

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

Đối với Mặt Trời và Mặt Trăng, kinh độ được lấy từ `$json.data.planets.find(p => p.name === 'Sun').longitude` và tương tự với `'Moon'`.

## Thay thế bằng dữ liệu của bạn

Thay thế **Start** và **Birth data** bằng trigger mà bạn thực sự sử dụng: biểu mẫu, webhook hoặc hàng mới của bảng, và ánh xạ các trường của nó với năm tên trên đây. Hai điều nên kiểm tra:

- **`timezone` không thể để trống.** Giá trị trống bị từ chối với `400`, vì vậy hãy ánh xạ trường hoặc đặt là `auto`, nếu tọa độ đáng tin cậy.
- **Tọa độ là bắt buộc.** API không mã hóa địa chỉ từ tên thành phố; nếu biểu mẫu chỉ hỏi địa điểm, hãy thêm bước mã hóa địa lý trước **AstroWay chart**.

<Aside type="note">
Gọi ngoài phạm vi khóa sẽ dừng chạy với `403 ENDPOINT_NOT_IN_SCOPE`, và khóa vượt ngân sách với `429 KEY_BUDGET_EXHAUSTED`. Cả hai đều có mục đích này: hãy tăng giới hạn trong dashboard, không phải lặp lại yêu cầu.
</Aside>
