# n8n

من أربع عقد: عند الدخل بيانات الميلاد، في المنتصف خارطة ميلاد مع API، وفي المخرجات علامات الشمس والقمر والصعود. تم استيراده إلى n8n 2.39.7 وتشغيله ضد الإنتاج في 2026-09-17، والنتيجة أدناه هي بالضبط ما أرجعه.

أولاً، أنشئ مفتاحًا كما هو موضح في قسم [مفتاح للأتمتة](/integrations/#مفتاح-للأتمتة)، مع النطاق `chart`.

## 1. أضف المفتاح كـ credential

يتم تخزين المفتاح في مخزن credentials n8n، وليس في العقدة، لذا لا يظهر في الـ 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.

داخلها أربع عقد:

- **Start**، عقدة Manual Trigger: تطلق الـ workflow أثناء الاختبار.
- **Birth data**، عقدة Edit Fields (Set): `date`، `time`، `timezone`، `latitude`، و `longitude` لشخص واحد.
- **AstroWay chart**، عقدة HTTP Request: تستدعي `POST /v1/chart`.
- **Big three**، عقدة 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، الذي يُكتب عادةً يدويًا.

## كيفية إعداد عقدة 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.

الجسم معرَّف بالتعبير، لذا يتم تمرير القيم من أي عقدة سابقة كما هي:

```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>
