Расчётное ядро
Каждое число, которое возвращает этот API, получено из эфемерид, а не из таблицы и не из нейросети. Здесь рассказано, что лежит в основе и где мы проводим границу того, что не станем считать.
Эфемериды
Положения берутся из планетных эфемерид NASA JPL — тех же данных, по которым ведут космические аппараты. Это 105 МБ табличных положений за 500–2999 годы н. э. и ещё 735 неподвижных звёзд.
Это важно, потому что альтернатива — арифметика, которой хватает для газетной колонки, но не для карты. Формулы среднего движения за века уходят на градусы; это видно на рождениях 1890 или 2090 года, а в дробной карте даёт уже другой ответ, а не чуть-чуть другой. В D60 полградуса переносят планету в следующее деление.
Сидерический зодиак — и какой именно
Ведическая астрология сидерическая: положения отсчитываются от неподвижной точки на небе, а не от смещающегося равноденствия. Разница между ними — это аянамша, сейчас около 24°, и единого общепринятого её значения нет.
Поэтому это параметр. API принимает 48 аянамш — Лахири, Рамана, Кришнамурти, Фагана — Брэдли, Юктешвара, Сурья-сиддханту и другие. Лахири стоит по умолчанию потому, что это стандарт правительства Индии, а не потому, что она правильная.
{
"date_time": "1990-08-15T10:30:00+05:30",
"latitude": 26.9124,
"longitude": 75.7873,
"timezone_as_float": 5.5,
"ayanamsa": "KRISHNAMURTI"
}Два астролога, которые расходятся во мнениях об аянамше, могут оба пользоваться этим API и оба получат ту карту, которую ждут. API, где аянамша зашита намертво, молча встал на одну из сторон в неразрешённом споре.
Что он охватывает
299 эндпоинтов, сгруппированные по тому, что они рассчитывают:
Скорость
Медианное время на сервере — 62 мс, у 76% эндпоинтов — меньше 100 мс; замерено на всех опубликованных примерах при локальном запуске. Эфемериды отображены в память, поэтому стоимость карты — это арифметика, а не обращения к диску.
Если вызов медленнее, значит, работы действительно больше: поиск транзитов сканирует диапазон дат, а PDF-отчёт собирает около двадцати пяти эндпоинтов в один документ и оплачивается как один вызов.
Детерминированность
Одинаковые входные данные всегда дают одинаковый результат. В цепочке нет ни случайной выборки, ни нейросети, так что карта, построенная сегодня, и та же карта через год совпадают побайтно. Поэтому ответы можно кэшировать, а 1 783 тестовые функции проверяют точные значения, а не диапазоны.
А ещё расхождение можно проверить. Если наша Луна и Луна в вашей программе не совпадают, то одна из них неверна, и аянамша или часовой пояс покажут, какая именно, — вместо того чтобы обе были «примерно правильными».
Чего мы не считаем
Ядро может выдать число почти для чего угодно. Но некоторые из этих чисел значили бы не то, что увидит в них читатель, — и таких эндпоинтов нет.
- Родовые долги в Лал Китаб. Восемь долгов во всех источниках называются одинаково. А вот условия, при которых возникает каждый, — нет: одни только опубликованные правила для питра-рин дают разные ответы для одной и той же карты. Мы не станем выносить вердикт о чьих-то предках в зависимости от того, какую книгу случайно прочитали.
- Поля, для которых мы не можем вывести правило. Если конкурент возвращает значение, которое мы не смогли обосновать по источнику, у нас этого поля нет, а ответ объясняет почему — вместо правдоподобной догадки, которую вызывающая сторона никак не смогла бы проверить.
- Всё, что подаётся как медицинская, юридическая или финансовая рекомендация. Тексты об исправительных мерах — это традиционные предписания, и они так и помечены.
Где две школы действительно расходятся и позиции обеих обоснованы, в ответе указано, какая из них применена, — чтобы ответ можно было проверить, а не принимать на веру.
Попробуйте
curl -X POST https://api.occultapi.com/api/astro/planet-positions/ \
-H 'X-API-Key: yt_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{
"date_time": "1990-08-15T10:30:00+05:30",
"latitude": 26.9124,
"longitude": 75.7873,
"timezone_as_float": 5.5,
"ayanamsa": "LAHIRI"
}'Или запустите в песочнице без единой строчки кода.