# Китайський зодіак і календар

Тварина року це найвідоміша частина традиції і найчастіше порахована неправильно. Рік у BaZi починається не 1 січня і не з китайського Нового року, а з **立春 Lichun**, миті, коли видима довгота Сонця доходить до 315°. У 2026 році це `2026-02-03T20:02:08Z`, тобто 4 лютого о 04:02 за пекінським часом. Народжений 2 лютого належить попередній тварині, хоча календар на стіні вже показує новий рік.

## Ендпоінти

| Ендпоінт | Кредити | Що повертає |
|---|---:|---|
| `POST /v1/chinese/zodiac/animal` | 10 | Тварина року, стовп, стихії гілки і стовбура |
| `POST /v1/chinese/zodiac/element` | 10 | Фіксована стихія гілки і циклічна стихія стовбура |
| `POST /v1/chinese/zodiac/inner-animal` | 10 | Внутрішня тварина: гілка місяця |
| `POST /v1/chinese/zodiac/secret-animal` | 10 | Таємна тварина: гілка години |
| `POST /v1/chinese/zodiac/compatibility` | 10 | Сумісність двох тварин за 三合 і 六冲 |
| `POST /v1/chinese/lunar-date` | 10 | Місячна дата, високосний місяць, китайський Новий рік |
| `POST /v1/chinese/solar-terms` | 10 | Усі 24 терміни року з точністю до секунди |

## Три тварини, а не одна

Гороскопи в журналах знають одну тварину. Традиція знає три, і вони відповідають на різні питання.

| Тварина | Звідки | Що означає |
|---|---|---|
| Зовнішня | гілка року | Те, як людину бачать інші |
| Внутрішня | гілка місяця | Мотиви, приватне «я» |
| Таємна | гілка години | Найглибший шар, часто прихований від самої людини |

Внутрішня тварина обмежена точними митями 節, а не серединою місяця, тому народження 5 травня і 6 травня можуть дати різних тварин.

```bash
curl -X POST https://api.astroway.info/v1/chinese/zodiac/inner-animal \
  -H "X-Api-Key: $ASTROWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-05-15","time":"14:30:00","timezoneOffset":3}'
```

```json
{
  "ok": true,
  "data": {
    "innerAnimal": "Snake",
    "glyph": "🐍",
    "description": "Inner animal = the BaZi month branch, bounded by the exact 節 instants. Represents internal motivations and the private self."
  }
}
```

## Дві стихії року

Народжений 1990 року це «металевий кінь», і в цьому імені дві різні стихії, які легко сплутати.

- **Циклічна** приходить від небесного стовбура і змінюється кожні два роки: 庚 це метал.
- **Фіксована** належить земній гілці назавжди: 午 це вогонь, і кінь завжди вогняний.

`/chinese/zodiac/element` віддає обидві окремими полями, `fixedElement` і `cyclingElement`, замість того щоб вибирати за клієнта.

## Сумісність

Оцінка будується на 三合 (три гармонії) і 六冲 (шість зіткнень), тобто на геометрії кола гілок, а не на списку думок.

```bash
curl -X POST https://api.astroway.info/v1/chinese/zodiac/compatibility \
  -H "X-Api-Key: $ASTROWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"person1":{"date":"1990-05-15"},"person2":{"date":"1988-02-20"}}'
```

```json
{
  "person1": { "solarYear": 1990, "animal": "Horse" },
  "person2": { "solarYear": 1988, "animal": "Dragon" },
  "compatibility": {
    "score": 65,
    "category": "good",
    "notes": ["Compatible enough; complementary differences."]
  }
}
```

<Aside type="note" title="Сумісність тварин це один шар, а не карта">
Порівняння тварин року це найгрубіший зріз: він знає про людину рівно один ієрогліф з восьми. Для реального читання беріть `/v1/bazi/chart` обох і дивіться на взаємодії всіх чотирьох стовпів.
</Aside>

## Місячна дата

```bash
curl -X POST https://api.astroway.info/v1/chinese/lunar-date \
  -H "X-Api-Key: $ASTROWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-02-17"}'
```

```json
{
  "gregorianDate": "2026-02-17",
  "lunar": { "month": 1, "isLeapMonth": false, "day": 1, "monthStart": "2026-02-17", "label": "month 1, day 1" },
  "chineseNewYear": "2026-02-17"
}
```

Місяць починається з пекінського дня, що містить молодик. Високосний місяць повторює номер попереднього і не містить 中氣: це причина його існування, а не побічний ефект.

<Aside type="caution" title="До 1929 року">
Календар до 1929 року рахується за пекінським місцевим середнім часом (UTC+7:45:40), і це історична основа, а не наша умовність. Молодик, що припадає на хвилини біля місцевої півночі, може поставити місяць на добу далі від друкованого альманаху тієї доби, бо ті рахувалися з точністю до дня.
</Aside>

## Двадцять чотири сонячні терміни

Термін це не дата з таблиці, а мить, коли видима довгота Сонця стає кратною 15°. Ми беремо її з ефемерид, тому відповідь однакова для будь-якого року в межах домену і не залежить від того, чи хтось оновив таблицю.

```bash
curl -X POST https://api.astroway.info/v1/chinese/solar-terms \
  -H "X-Api-Key: $ASTROWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"year":2026}'
```

Масив `terms` несе всі двадцять чотири; тут показаний перший:

```json
{
  "year": 2026,
  "terms": [
    {
      "index": 0,
      "chinese": "立春",
      "pinyin": "Lichun",
      "english": "Start of Spring",
      "sunLongitude": 315,
      "utc": "2026-02-03T20:02:08Z",
      "beijing": "2026-02-04T04:02:08+08:00",
      "opensPillarMonth": true
    }
  ]
}
```

Дванадцять із двадцяти чотирьох несуть `opensPillarMonth: true`: це 節, які відкривають місяць стовпів. Решта дванадцять це 中氣, вони ділять місяць навпіл і визначають, який місяць буде високосним.

<Aside type="note" title="Термін це мить, а не день, і день у нього різний">
Читайте `utc`, а не `beijing`, якщо ваш користувач не в Китаї. Китай і Гонконг рахують за UTC+8, Японія і Корея за UTC+9, В'єтнам за UTC+7, тож одна година з двадцяти чотирьох це вікно, у якому національні альманахи друкують різні календарні дні. У середньому це один термін на рік. У 2026 їх два: 雨水 це 18 лютого в Пекіні і 19 лютого в Токіо, 芒種 це 5 і 6 червня. Наші миті відтворюють обидві публікації з точністю до хвилини.
</Aside>

## Мови

Тварини і стихії перекладені на 21 мову. Додайте `?lang=` або `"language"` у тілі, і поруч з англійським токеном з'явиться поле `*Name`:

```bash
curl -X POST "https://api.astroway.info/v1/chinese/zodiac/animal?lang=es" \
  -H "X-Api-Key: $ASTROWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-05-15"}'
```

```json
{ "animal": "Horse", "animalName": "Caballo", "element": { "fixed": "Fire", "fixedName": "Fuego" } }
```

Англійські поля лишаються на місці назавжди: локалізація додає, а не замінює.
