4. Почасовой лунный прогноз (GET /get_hourly_forecast)
Выгрузка для ИИ (JSON)Метод возвращает синхронный geocentric-прогноз на локальные сутки. `phase_name` сохраняет legacy bucket, `phase_angle` содержит нормализованную элонгацию Moon-Sun, а `phase_direction` независимо показывает waxing/waning/boundary. `tithi` и `lunar_day` остаются разными сущностями; legacy-аппроксимация tithi/tithi-1 не используется.
# 4. Почасовой лунный прогноз (GET /get_hourly_forecast)
Endpoint
Query parameters
| Поле / Параметр | Тип | Описание |
|---|---|---|
| date* | string (YYYY-MM-DD) | Локальная дата, для которой строится hourly-массив. Пример: 2026-03-18 |
| city | string | Город для server-side геокодинга. Можно использовать вместо ручных координат. Пример: Москва |
| country | string | Опциональное уточнение для `city`. Пример: Россия |
| lat | float | Широта. Используется вместе с `lng` и `timezone`. Пример: 55.7558 |
| lng | float | Долгота. Пример: 37.6176 |
| timezone | string | IANA timezone. Обязательна при ручных координатах без `city`. Пример: Europe/Moscow |
| api_key / X-API-Key* | string | API-ключ для авторизации sync-endpoint. |
# Практические рекомендации
Диапазон ответа: от local `00:00` запрошенного дня до local `00:00` следующего дня включительно.
Астрономическая рамка: `geocentric`.
Если timezone содержит DST-переход, число точек может отличаться от 25, потому что сохраняются локальные календарные часы.
Повторный запрос по тем же `date + lat + lng + timezone` возвращается из JSON-cache без нового обращения к внешнему источнику эфемерид.
Границы hourly VOC выбираются из канонических окон LunarVocProvider и точно совпадают с weekly forecast для того же астрономического окна.
Response model
| Поле / Параметр | Тип | Описание |
|---|---|---|
| status | string | Статус синхронного ответа. Пример: success |
| cached | boolean | Признак попадания в result-cache. |
| data.schema_version | string | Версия hourly result-cache contract. Пример: 1.3.2 |
| data.meta | object | Метаданные диапазона, локации, шага и источника эфемерид. |
| data.hours[] | array | Почасовой массив результата. |
Hour fields
| Поле / Параметр | Тип | Описание |
|---|---|---|
| hour_index | integer | Индекс точки внутри local-day массива. |
| local_datetime / utc_datetime | ISO-8601 datetime | Локальная и UTC-временные отметки часа. |
| moon | object | Положение Луны: longitude, latitude, sign, sign_degree, speed, is_retro. |
| planets | object | Geocentric-положения Солнца, Меркурия, Венеры, Марса, Юпитера, Сатурна, Урана, Нептуна и Плутона. |
| moon_aspects[] | array | Текущие мажорные аспекты Луны к планетам: conjunction, sextile, square, trine, opposition. |
| lunar | object | Фаза Луны: legacy `phase_name`, элонгация `phase_angle` и независимый `phase_direction` (`waxing|waning|boundary|null`). `phase_name=New Moon` не означает автоматически waxing; `phase_name=Full Moon` не отменяет direction. Также: `tithi`, nullable `lunar_day`, `is_satanic`, `void_of_course`. |
Void of course fields
| Поле / Параметр | Тип | Описание |
|---|---|---|
| status | string | `ok`, если начало и конец окна доказаны часовым рядом; `unknown`, если не хватает lookback/lookahead. |
| calculation_version / precision | string | Версия `lunar-voc-1.1.0` и точность `hourly_rounded`, общие с weekly VOC. |
| is_void_now | boolean | Находится ли Луна без курса в текущей точке. |
| starts_at_local / ends_at_local | ISO-8601 datetime | Канонические границы текущего окна void of course в локальном времени. При status=unknown обе границы равны null; timestamp запроса не подставляется вместо начала. |
| next_sign | string | Следующий знак Луны после выхода из текущего окна. |
| last_aspect / next_aspect_before_sign_change | object|null | Последний и ближайший мажорный аспект до смены знака. |
Политика кеширования
# Кэширование
Метод использует двухуровневый кэш.
JSON-cache schema 1.3.2 по `date + lat + lng + timezone`; устаревший lunar-day payload отклоняется.
Пакетный cache эфемеридных рядов с 72-часовым lookback/lookahead. Тот же нормализованный geocentric ряд получает pure resolver LunarVocProvider; дневная агрегация и hourly-ветка используют одни canonical boundaries.
Bash (cURL)
Запрос по координатам и timezone.
curl -s "https://digihash.ru/datacollector/api.php?action=get_hourly_forecast&date=2026-03-18&lat=55.7558&lng=37.6176&timezone=Europe/Moscow&api_key=655351024"Bash (cURL)
Запрос по названию города с server-side геокодингом.
curl -s "https://digihash.ru/datacollector/api.php?action=get_hourly_forecast&date=2026-03-18&city=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&country=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&api_key=655351024"