API: различия между версиями

м
плюс ключ за сбор книги, упорядочение по алфавиту
Нет описания правки
м (плюс ключ за сбор книги, упорядочение по алфавиту)
 
(не показано 26 промежуточных версий 9 участников)
Строка 1: Строка 1:
Сервер Годвилля предоставляет программный доступ к большинству данных героя, который можно использовать для написания сторонних программ.
Сервер Годвилля предоставляет программный доступ к некоторым данным героя, который можно использовать для написания своих программ-следилок.


API доступен в двух форматах (JSON и XML):
API доступен в двух видах:


godville.net/gods/api/<username>.json
* '''Открытый''' (базовый набор сведений о герое, похожий на его персональную страницу):
или (менее предпочтительно)
godville.net/gods/api/<username>.xml


По умолчанию в нем доступен только базовый набор сведений о герое, примерно совпадающий с содержимым персональной страницы. Если за героем хочется наблюдать в реальном времени, то необходимо включить в профиле игры галочку "Оперативные данные в API", добавляющую десять с лишним часто меняющихся полей наподобие инвентаря. При этом нужно учитывать, что любой желающий тоже сможет подглядывать за личной жизнью вашего героя.
godville.net/gods/api/<godname>


Данные обновляются раз в минуту, поэтому дергать сервер чаще смысла нет. При слишком частых запросах (существует ограничение “не больше 30 запросов за 10 минут в связке (бог+ip)”) данные героя перестают возвращаться, выводя соответствующее уведомление.
* '''Приватный''' (оперативный набор данных героя, известных только хозяину; работает с 15.03.2017):


{| class="wikitable collapsible collapsed"  
godville.net/gods/api/<godname>/<token>
 
Для доступа ко второму API хозяину героя нужно получить ключ (token) в [https://godville.net/user/profile профиле] игры. Изредка ключ может сбрасываться (в этом случае приватный API превратится в открытый) - разработчикам стоит предвидеть такую ситуацию и предлагать пользователю сходить в профиль за новым.
 
Общие моменты:
 
* API возвращает данные только в формате JSON.
* Данные обновляются '''раз в минуту''', поэтому дергать сервер чаще смысла нет. При слишком частых запросах данные героя перестают возвращаться, выводя соответствующее уведомление.
* Массовое или частое сканирование страниц игры (в том числе API различных героев) запрещено правилами игры и может привести к блокировкам.
 
{| class="wikitable collapsible sortable"  
|-
!colspan="4" align="left" |Список ключей JSON<ref>Уточнения приветствуются.</ref>
|-
!Ключ || Тип || Описание || Только с ключом?
|-
|activatables || Объект || Массив с перечнем активируемых трофеев в инвентаре || '''Да'''
|-
|ark_f || Число || Число собранных тварей женского пола (только у ковчеговладельцев) || Нет
|-
|ark_m || Число || Число собранных тварей мужского пола (только у ковчеговладельцев) || Нет
|-
|-
!colspan="3" align="left" |Список ключей JSON<ref>Список неофициальный, а значит может быть неполным или ошибочным. Уточнения приветствуются.</ref>
|arena_won || Число || Счетчик побед на арене || Нет
|-
|-
!Ключ || Тип || Описание
|arena_lost || Число || Счетчик поражений на арене || Нет
|-
|-
|arena_fight || Bool || Находится ли герой на арене (моря и подземелья возвращают False)<ref>Для косвенного определения подземелья можно использовать тот факт, что показатель godpower в подземелье всегда 0</ref>
|arena_fight || Bool || Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) || '''Да'''
|-
|-
|ark_completed_at || Строка || Время окончания ковчега (null если ещё не окончен)  
|ark_completed_at || Строка || Дата постройки ковчега (есть только у тех, кто достроил ковчег) || Нет
|-
|-
|alignment || Строка || Характер героя  
|alignment || Строка || Характер героя || Нет
|-
|-
|aura || Строка || Название ауры на герое, без времени(Если ауры нет, то ключа тоже нет)  
|aura || Строка || Аура героя (без времени; отсутствует без ауры) || '''Да'''
|-
|-
|bricks_cnt || Число || количество кирпичей (не в процентах, показывается даже если храм окончен или ещё не начат)
|book_at || Строка || Дата окончания написания книги || Нет
|-
|-
|clan || Строка || Название гильдии героя, пустая строка если её нет
|boss_name || Строка || Имя собранного в лаборатории босса || Нет
|-
|-
|clan_position || Строка || Звание в гильдии (если гильдии нет, то "фанат")  
|bricks_cnt || Число || Количество кирпичей (в штуках, не в процентах; есть всегда) || Нет
|-
|-
|diary_last || Строка || Последняя запись в дневнике
|clan || Строка || Название гильдии героя (пустая строка, если её нет) || Нет
|-
|-
|distance || Число || Расстояние до столицы (при нахождении в любом городе 0)  
|clan_position || Строка || Звание в гильдии (если гильдии нет, то пустая строка) || Нет
|-
|-
|exp_progress || Число || Количество опыта
|diary_last || Строка || Последняя запись в дневнике || '''Да'''
|-
|-
|expired || Bool || показатель неактуальности данных (ключ есть только если данные неактуальны)<ref>Для того, чтобы данные подавались в реальном времени, требуется периодическое (раз в час) посещение страницы героя, любая активность пользователя на ней или посещение героя одним из полноценных клиентов. Если ''expired = true'', то герой не посещался слишком давно и остальные данные уже не актуальны ''(знаем, что неудобно, но пока только так)''.</ref><ref>Замечено, что если герой долго не посещался, сервер и вовсе может вернуть 500 ошибку.</ref>
|distance || Число || Расстояние до столицы (при нахождении в любом городе 0) || '''Да'''
|-
|-
|godpower || Число || Количество праны (для пенсионеров 0-200)
|exp_progress || Число || Прогресс опыта  || '''Да'''
|-
|-
|gold_approx || Строка || Приблизительное количество золота
|expired || Bool || показатель неактуальности данных (ключ появляется, когда данные неактуальны)<ref>Чтобы данные стали актуальными, требуется периодическое (раз в час) посещение страницы героя в браузере или одним из [[Клиент_для_Android|полноценных клиентов]]. Если ''expired = true'', то герой не посещался слишком давно и остальные данные уже не актуальны.</ref> || '''Да'''
|-
|-
|gender || Строка || Пол героя
|fight_type || Строка || Тип боя ("sail" - морской поход, "arena" - арена (ЗПГ в том числе), "challenge" - тренировка, "dungeon" - подземелье, "range" - полигон || '''Да'''
|-
|-
|godname || Строка || Имя бога
|godpower || Число || Количество праны (для пенсионеров 0-200)  || '''Да'''
|-
|-
|health || Число || Здоровье героя
|gold_approx || Строка || Приблизительное количество золота  || '''Да'''
|-
|-
|inventory_max_num || Число || Максимальный размер инвентаря 
|gender || Строка || Пол героя  || Нет
|-
|-
|inventory_num || Число || Количество вещей в инвентаре
|godname || Строка || Имя бога  || Нет
|-
|-
|inventory || Объект || Объект, содержащий список вещей в инвентаре (подробности ниже)
|health || Число || Здоровье героя<ref>Здоровье именно героя. Не босса и не ковчега. То есть в подземелье оно показывает актуальные данные, а вот в море и на полигоне - просто состояние героя перед началом приключения.</ref> || '''Да'''
|-
|-
|level || Число || Уровень героя
|<strike>inventory</strike> || Объект || Удален, вместо него теперь 'activatables' || '''Да'''
|-
|-
|max_health || Число || Максимальный запас здоровья
|inventory_max_num || Число || Максимальный размер инвентаря || Нет
|-
|-
|motto || Строка || Девиз (может быть пустой строкой)
|inventory_num || Число || Количество вещей в инвентаре || '''Да'''
|-
|-
|name || Строка || Имя героя  
|level || Число || Уровень героя || Нет
|-
|-
|pet || Объект || Объект, содержащий описание питомца (подробности ниже)
|max_health || Число || Максимальный запас здоровья || Нет
|-
|-
|quest_progress || Число || % выполнения квеста
|motto || Строка || Девиз (может быть пустой строкой) || Нет
|-
|-
|quest || Строка || Квест
|name || Строка || Имя героя || Нет
|-
|-
|savings_completed_at || Строка || Дата окончания сбора пенсии (только у пенсионеров)  
|pet || Объект || Объект, содержащий описание питомца (подробности ниже) || Нет
|-
|-
|temple_completed_at || Строка || Дата окончания храма (только у храмовладельцев)
|quest_progress || Число || Процент выполнения задания || '''Да'''
|-
|-
|town_name || Строка || Город, в котором герой (пустая строка, если в поле)
|quest || Строка || Текст текущего задания || '''Да'''
|-
|-
|wood_cnt || Число || Количество поленьев (пока нет храма, ключ отсутствует)  
|savings || Строка || Примерное число сбережений (только у храмовладельцев) || Нет
|-
|-
|}
|savings_completed_at || Строка || Дата окончания сбора пенсии (только у пенсионеров) || Нет
 
{| class="wikitable collapsible collapsed"
|-
|-
!colspan="3" align="left" |Состояние питомца<ref>На данный момент нет информации о том как выглядит информация о контуженном или безуровневом питомце.</ref>
|shop_name || Строка || Название лавки (только у пенсионеров) || Нет
|-
|-
!Ключ || Тип || Описание
|t_level || Число || Уровень героя-торговца (только у лавочников) || Нет
|-
|-
|pet_class || Строка || Вид, к которому относится животное
|temple_completed_at || Строка || Дата окончания храма (только у храмовладельцев) || Нет
|-
|-
|pet_level || Число || Уровень животного
|town_name || Строка || Город, в котором герой (пустая строка, если в поле, и нет ключа, если в бою) || '''Да'''
|-
|-
|pet_name || Строка || Имя животного (Например, 'Пуха «Беспечный»')
|wood_cnt || Число || Количество поленьев (пока нет храма, ключ отсутствует) || Нет
|-
|-
|words || Число || Число собранных слов для книги (без слогов) || Нет
|}
|}


{| class="wikitable collapsible collapsed"  
{| class="wikitable collapsible collapsed sortable"  
|-
|-
!colspan="3" align="left" |Описание предметов<ref>Нужно проверить как выглядят нежирные активашки (рыбацкие).</ref>
!colspan="3" align="left" |Объект pet (питомец)
|-
|-
!Ключ || Тип || Описание  
!Ключ || Тип || Описание  
|-
|-
|cnt || Число || Количество экземпляров данного предмета
|pet_class || Строка || Вид питомца
|-
|pos || Число || Позиция в инвентаре
|-
|price || Число || "Цена" (0 для простых трофеев, 101 для жирных)
|-
|type || Строка || Тип (есть только у лечилок, всегда 'heal_potion')
|-
|-
|activate_by_user || Bool || Активируемый (Есть только у ативируемых)
|pet_level || Число || Уровень питомца (пустая строка, если питомец лишился уровня)
|-
|-
|needs_godpower || Число || Стоимость активации<ref>Нужно проверить, покажет ли 25 в день, когда прогноз на дешевые активации.</ref> (Есть только у ативируемых)
|pet_name || Строка || Имя питомца (например, Пуха «Беспечный»)<ref>У контуженного питомца имя содержит "❌".</ref>
|-
|-
|description || Строка || Описание эффекта предмета (Есть только у ативируемых)
|wounded || Bool || Флаг контузии питомца (есть только у контуженого)
|-
|-
|}
|}


Кроме того, существует [[расширенное API]], позволяющее писать полноценные клиенты с возможностью влияния на героя.
=== Примечания ===
===Примечания===
<references />
<references />


[[Категория:Техническое]]
[[Категория:Техническое]]
33

правки