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

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


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


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


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


Смысл большинства полей очевиден из их названия. Самое сложное:
* '''Приватный''' (оперативный набор данных героя, известных только хозяину; работает с 15.03.2017):


* '''expired''' - показатель неактуальности данных. Для того, чтобы данные подавались в реальном времени, требуется периодическое (раз в час) посещение страницы героя, любая активность пользователя на ней или посещение героя одним из полноценных клиентов. Если ''expired = true'', то герой не посещался слишком давно и остальные данные уже не актуальны ''(знаем, что неудобно, но пока только так)''.  
godville.net/gods/api/<godname>/<token>


* '''diary_last''' - последняя запись из дневника героя.
Для доступа ко второму API хозяину героя нужно получить ключ (token) в [https://godville.net/user/profile профиле] игры. Изредка ключ может сбрасываться (в этом случае приватный API превратится в открытый) - разработчикам стоит предвидеть такую ситуацию и предлагать пользователю сходить в профиль за новым.


* '''arena_fight''' - показатель нахождения на арене или в полевом пвп (можно использовать для индикации необходимости присмотра пользователем).
Общие моменты:


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


{| class="wikitable collapsible collapsed"  
{| class="wikitable collapsible sortable"  
|-
|-
!colspan="3" align="left" |Список ключей JSON<ref>Список неофициальный, а значит может быть неполным или ошибочным. Уточнения приветствуются.</ref>
!colspan="4" align="left" |Список ключей JSON<ref>Уточнения приветствуются.</ref>
|-
|-
!Ключ || Тип || Описание  
!Ключ || Тип || Описание || Только с ключом?
|-
|activatables || Объект || Массив с перечнем активируемых трофеев в инвентаре || '''Да'''
|-
|ark_f || Число || Число собранных тварей женского пола (только у ковчеговладельцев) || Нет
|-
|ark_m || Число || Число собранных тварей мужского пола (только у ковчеговладельцев) || Нет
|-
|arena_won || Число || Счетчик побед на арене || Нет
|-
|arena_lost || Число || Счетчик поражений на арене || Нет
|-
|arena_fight || Bool || Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) || '''Да'''
|-
|-
|arena_fight || Bool || Находится ли герой на арене (моря и подземелья возвращают False)  
|ark_completed_at || Строка || Дата постройки ковчега (есть только у тех, кто достроил ковчег) || Нет
|-
|-
|ark_completed_at || Строка || Время окончания ковчега (null если ещё не окончен)
|alignment || Строка || Характер героя || Нет
|-
|-
|alignment || Строка || Характер героя  
|aura || Строка || Аура героя (без времени; отсутствует без ауры) || '''Да'''
|-
|-
|aura || Строка || Название ауры на герое, без времени(Если ауры нет, то ключа тоже нет)
|book_at || Строка || Дата окончания написания книги || Нет
|-
|-
|bricks_cnt || Число || количество кирпичей (не в процентах, показывается даже если храм окончен или ещё не начат)
|boss_name || Строка || Имя собранного в лаборатории босса || Нет
|-
|-
|clan || Строка || Название гильдии героя, пустая строка если её нет
|bricks_cnt || Число || Количество кирпичей (в штуках, не в процентах; есть всегда) || Нет
|-
|-
|clan_position || Строка || Звание в гильдии (если гильдии нет, то "фанат")  
|clan || Строка || Название гильдии героя (пустая строка, если её нет) || Нет
|-
|-
|diary_last || Строка || Последняя запись в дневнике
|clan_position || Строка || Звание в гильдии (если гильдии нет, то пустая строка) || Нет
|-
|-
|distance || Число || Расстояние до столицы (при нахождении в любом городе 0)
|diary_last || Строка || Последняя запись в дневнике || '''Да'''
|-
|-
|exp_progress || Число || Количество опыта
|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 />


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

Текущая версия от 14:10, 1 января 2021

Сервер Годвилля предоставляет программный доступ к некоторым данным героя, который можно использовать для написания своих программ-следилок.

API доступен в двух видах:

  • Открытый (базовый набор сведений о герое, похожий на его персональную страницу):
godville.net/gods/api/<godname>
  • Приватный (оперативный набор данных героя, известных только хозяину; работает с 15.03.2017):
godville.net/gods/api/<godname>/<token>

Для доступа ко второму API хозяину героя нужно получить ключ (token) в профиле игры. Изредка ключ может сбрасываться (в этом случае приватный API превратится в открытый) - разработчикам стоит предвидеть такую ситуацию и предлагать пользователю сходить в профиль за новым.

Общие моменты:

  • API возвращает данные только в формате JSON.
  • Данные обновляются раз в минуту, поэтому дергать сервер чаще смысла нет. При слишком частых запросах данные героя перестают возвращаться, выводя соответствующее уведомление.
  • Массовое или частое сканирование страниц игры (в том числе API различных героев) запрещено правилами игры и может привести к блокировкам.
Список ключей JSON[1]
Ключ Тип Описание Только с ключом?
activatables Объект Массив с перечнем активируемых трофеев в инвентаре Да
ark_f Число Число собранных тварей женского пола (только у ковчеговладельцев) Нет
ark_m Число Число собранных тварей мужского пола (только у ковчеговладельцев) Нет
arena_won Число Счетчик побед на арене Нет
arena_lost Число Счетчик поражений на арене Нет
arena_fight Bool Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) Да
ark_completed_at Строка Дата постройки ковчега (есть только у тех, кто достроил ковчег) Нет
alignment Строка Характер героя Нет
aura Строка Аура героя (без времени; отсутствует без ауры) Да
book_at Строка Дата окончания написания книги Нет
boss_name Строка Имя собранного в лаборатории босса Нет
bricks_cnt Число Количество кирпичей (в штуках, не в процентах; есть всегда) Нет
clan Строка Название гильдии героя (пустая строка, если её нет) Нет
clan_position Строка Звание в гильдии (если гильдии нет, то пустая строка) Нет
diary_last Строка Последняя запись в дневнике Да
distance Число Расстояние до столицы (при нахождении в любом городе 0) Да
exp_progress Число Прогресс опыта Да
expired Bool показатель неактуальности данных (ключ появляется, когда данные неактуальны)[2] Да
fight_type Строка Тип боя ("sail" - морской поход, "arena" - арена (ЗПГ в том числе), "challenge" - тренировка, "dungeon" - подземелье, "range" - полигон Да
godpower Число Количество праны (для пенсионеров 0-200) Да
gold_approx Строка Приблизительное количество золота Да
gender Строка Пол героя Нет
godname Строка Имя бога Нет
health Число Здоровье героя[3] Да
inventory Объект Удален, вместо него теперь 'activatables' Да
inventory_max_num Число Максимальный размер инвентаря Нет
inventory_num Число Количество вещей в инвентаре Да
level Число Уровень героя Нет
max_health Число Максимальный запас здоровья Нет
motto Строка Девиз (может быть пустой строкой) Нет
name Строка Имя героя Нет
pet Объект Объект, содержащий описание питомца (подробности ниже) Нет
quest_progress Число Процент выполнения задания Да
quest Строка Текст текущего задания Да
savings Строка Примерное число сбережений (только у храмовладельцев) Нет
savings_completed_at Строка Дата окончания сбора пенсии (только у пенсионеров) Нет
shop_name Строка Название лавки (только у пенсионеров) Нет
t_level Число Уровень героя-торговца (только у лавочников) Нет
temple_completed_at Строка Дата окончания храма (только у храмовладельцев) Нет
town_name Строка Город, в котором герой (пустая строка, если в поле, и нет ключа, если в бою) Да
wood_cnt Число Количество поленьев (пока нет храма, ключ отсутствует) Нет
words Число Число собранных слов для книги (без слогов) Нет

Примечания

  1. Уточнения приветствуются.
  2. Чтобы данные стали актуальными, требуется периодическое (раз в час) посещение страницы героя в браузере или одним из полноценных клиентов. Если expired = true, то герой не посещался слишком давно и остальные данные уже не актуальны.
  3. Здоровье именно героя. Не босса и не ковчега. То есть в подземелье оно показывает актуальные данные, а вот в море и на полигоне - просто состояние героя перед началом приключения.
  4. У контуженного питомца имя содержит "❌".