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

Материал из Энциклобогии
Перейти к навигации Перейти к поиску
(уточнение про json)
м (Добавлен упущенный параметр "boss_power".)
 
(не показано 29 промежуточных версий 13 участников)
Строка 1: Строка 1:
Сервер Годвилля предоставляет программный доступ к некоторым данных героя, который можно использовать для написания своих программ-следилок.
Сервер Годвилля предоставляет программный доступ к некоторым данным героя, который можно использовать для написания своих программ-следилок.


API доступен в двух видах:
API доступен в двух видах:
Строка 11: Строка 11:
  godville.net/gods/api/<godname>/<token>
  godville.net/gods/api/<godname>/<token>


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


Общие моменты:  
Общие моменты:  
* API возвращает данные только в формате JSON.  
* API возвращает данные только в формате JSON.  
* Данные обновляются '''раз в минуту''', поэтому дергать сервер чаще смысла нет. При слишком частых запросах данные героя перестают возвращаться, выводя соответствующее уведомление.
* Данные обновляются '''раз в минуту''', поэтому дергать сервер чаще смысла нет. При слишком частых запросах данные героя перестают возвращаться, выводя соответствующее уведомление.
Строка 21: Строка 20:
{| class="wikitable collapsible sortable"  
{| class="wikitable collapsible sortable"  
|-
|-
!colspan="4" align="left" |Список ключей JSON<ref>Уточнения приветствуются.</ref>
! colspan="4" align="left" |Список ключей JSON<ref>Уточнения приветствуются.</ref>
|-
! Ключ || Тип || Описание || Только с ключом?
|-
| activatables || Объект || Массив с перечнем активируемых трофеев в инвентаре || '''Да'''
|-
|-
!Ключ || Тип || Описание || Только с ключом?
| ark_f || Число || Число собранных тварей женского пола (только у ковчеговладельцев, max = "1000") || Нет
|-
|-
|''activatables'' || Объект || Массив с перечнем активируемых трофеев в инвентаре || '''Да'''
| ark_m || Число || Число собранных тварей мужского пола (только у ковчеговладельцев, max = "1000") || Нет
|-
|-
|''ark_f'' || Число || Число собранных тварей женского пола (только у ковчеговладельцев) || Нет
| arena_won || Число || Счетчик побед на арене || Нет
|-
|-
|''ark_m'' || Число || Число собранных тварей мужского пола (только у ковчеговладельцев) || Нет
| arena_lost || Число || Счетчик поражений на арене || Нет
|-
|-
|''savings'' || Строка || Примерное число сбережений (только у храмовладельцев) || Нет
| arena_fight || Bool || Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) || '''Да'''
|-
|-
|''t_level'' || Число || Уровень героя-торгоца (только у лавочников) || Нет
| ark_completed_at || Строка || Дата постройки ковчега (есть у всех, null — если ковчег не достроен) || Нет
|-
|-
|''arena_won'' || Число || Счетчик побед на арене || Нет
| ark_name || Строка || Название ковчега (есть у тех, кто назвал ковчег) || Нет
|-
|-
|''arena_lose'' || Число || Счетчик поражений на арене || Нет
| alignment || Строка || Характер героя || Нет
|-
|-
|<strike>inventory</strike> || Объект || Удален, вместо него теперь 'activatables' || '''Да'''
| aura || Строка || Аура героя (без времени; отсутствует без ауры) || '''Да'''
|-
|-
|arena_fight || Bool || Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) || '''Да'''
| pairs_at || Строка || Дата окончания сбора тварей || Нет
|-
|-
|ark_completed_at || Строка || Дата постройки ковчега (есть только у тех, кто достроил ковчег) || Нет
| book_at || Строка || Дата окончания написания книги || Нет
|-
|-
|alignment || Строка || Характер героя || Нет
| souls_at || Строка || Дата окончания сбора душ || Нет
|-
|-
|aura || Строка || Аура героя (без времени; отсутствует без ауры) || '''Да'''
| boss_name || Строка || Имя собранного в лаборатории босса || Нет
|-
|-
|bricks_cnt || Число || Количество кирпичей (в штуках, не в процентах; есть всегда) || Нет
| boss_power|| Число || Мощь собранного в лаборатории босса || Нет
|-
|-
|clan || Строка || Название гильдии героя (пустая строка, если её нет) || Нет
| bricks_cnt || Число || Количество кирпичей (в штуках, не в процентах; есть всегда, max = "1000") || Нет
|-
|-
|clan_position || Строка || Звание в гильдии (если гильдии нет, то пустая строка) || Нет
| clan || Строка || Название гильдии героя (пустая строка, если её нет) || Нет
|-
|-
|diary_last || Строка || Последняя запись в дневнике || '''Да'''
| clan_position || Строка || Звание в гильдии (если гильдии нет, то пустая строка) || Нет
|-
|-
|distance || Число || Расстояние до столицы (при нахождении в любом городе 0)  || '''Да'''
| diary_last || Строка || Последняя запись в дневнике || '''Да'''
|-
|-
|exp_progress || Число || Прогресс опыта  || '''Да'''
| eye_last || Строка || Последняя запись в третьем глазе || '''Да'''
|-
|-
|expired || Bool || показатель неактуальности данных (ключ появляется, когда данные неактуальны)<ref>Чтобы данные стали актуальными, требуется периодическое (раз в час) посещение страницы героя в браузере или одним из [[Клиент_для_Android|полноценных клиентов]]. Если ''expired = true'', то герой не посещался слишком давно и остальные данные уже не актуальны.</ref> || '''Да'''
| distance || Число || Расстояние до столицы (при нахождении в Годвилле = 0) || '''Да'''
|-
|-
|fight_type || Строка || Тип боя (sail - морской поход, arena - арена (ЗПГ в том числе), challenge - тренировка, dungeon - подземелье) || '''Да'''
| exp_progress || Число || Прогресс опыта || '''Да'''
|-
|-
|godpower || Число || Количество праны (для пенсионеров 0-200) || '''Да'''
| expired || Bool || показатель неактуальности данных (ключ появляется, когда данные неактуальны)<ref>Чтобы данные стали актуальными, требуется периодическое (раз в час) посещение страницы героя в браузере или одним из [[Клиент_для_Android|полноценных клиентов]]. Если ''expired = true'', то герой не посещался слишком давно и остальные данные уже не актуальны.</ref> || '''Да'''
|-
|-
|gold_approx || Строка || Приблизительное количество золота  || '''Да'''
| fight_type || Строка || Тип боя (см. таблицу ниже) || '''Да'''
|-
|-
|gender || Строка || Пол героя  || Нет
| godpower || Число || Количество праны (для пенсионеров 0-200) <ref>Во время битвы с боссом (возможно и в остальных битвах при arena_fight = true) равняется нулю.</ref> || '''Да'''
|-
|-
|godname || Строка || Имя бога || Нет
| gold_approx || Строка || Приблизительное количество золота || '''Да'''
|-
|-
|health || Число || Здоровье героя  || '''Да'''
| gender || Строка || Пол героя  || Нет
|-
|-
|inventory_max_num || Число || Максимальный размер инвентаря || Нет
| godname || Строка || Имя бога  || Нет
|-
|-
|inventory_num || Число || Количество вещей в инвентаре || '''Да'''
| health || Число || Здоровье героя<ref>Здоровье именно героя. Не босса и не ковчега. То есть в подземелье оно показывает актуальные данные, а вот в море и на полигоне - просто состояние героя перед началом приключения.</ref> || '''Да'''
|-
|-
|level || Число || Уровень героя || Нет
| <strike>inventory</strike> || Объект || Удален, вместо него теперь 'activatables' || '''Да'''
|-
|-
|max_health || Число || Максимальный запас здоровья || Нет
| inventory_max_num || Число || Максимальный размер инвентаря (max = "50") || Нет
|-
|-
|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 || Число || Количество поленьев (пока нет храма, ключ отсутствует) || Нет
| side_job_progress || Число || Процент выполнения подряда || '''Да'''
|-
|-
| side_job || Строка || Текст текущего подряда || '''Да'''
|-
| savings || Строка || Число сбережений (только у храмовладельцев, max = "30000 тысяч") || Нет
|-
| savings_completed_at || Строка || Дата окончания сбора пенсии (только у пенсионеров) || Нет
|-
| shop_name || Строка || Название лавки (только у пенсионеров) || Нет
|-
| souls_percent || Строка || Количество собранных душ в процентах (только у книжников) || Нет
|-
| relics_percent || Строка || Количество найденных реликвий в процентах || Нет
|-
| t_level || Число || Уровень героя-торговца (только у лавочников) || Нет
|-
| temple_completed_at || Строка || Дата окончания храма (только у храмовладельцев) || Нет
|-
| town_name || Строка || Город, в котором герой (пустая строка, если в поле, и нет ключа, если в бою) || '''Да'''
|-
| wood_cnt || Число || Количество поленьев (пока нет храма, ключ отсутствует) || Нет
|-
| words || Число || Число собранных слов для книги (без слогов; ключ исчезает, если есть ключ book_at) || Нет
|}
|}


{| class="wikitable collapsible collapsed sortable"  
{| class="wikitable collapsible collapsed sortable"  
|-
|-
!colspan="3" align="left" |Объект pet (питомец)
! colspan="3" align="left" | Объект pet (питомец)
|-
|-
!Ключ || Тип || Описание  
! Ключ || Тип || Описание  
|-
|-
|pet_class || Строка || Вид питомца
| pet_class || Строка || Вид питомца
|-
|-
|pet_level || Число || Уровень питомца (пустая строка, если питомец лишился уровня)
| pet_level || Число || Уровень питомца (пустая строка, если питомец лишился уровня)
|-
|-
|pet_name || Строка || Имя питомца (например, 'Пуха «Беспечный»; у контуженного питомца имя содержит "❌")</ref>
| pet_name || Строка || Имя питомца (например, Пуха «Беспечный»)<ref>У контуженного питомца имя содержит "❌".</ref>
|-
|-
|wounded || Bool || Флаг контузии питомеца (есть только у контуженого)
| wounded || Bool || Флаг контузии питомца (есть только у контуженого)
|}
{| class="wikitable collapsible collapsed sortable"
|-
! colspan="3" align="left" | Типы боев
|-
! Ключ || Описание
|-
| arena || арена (ЗПГ в том числе)
|-
| boss || босс (мини-квест)
|-
| boss_m || босс (зацеп)
|-
| challenge || тренировка
|-
| dungeon || подземелье
|-
| multi_monster || группа монстров
|-
|-
| range || полигон
|-
| sail || морской поход
|}
|}


===Примечания===
== Примечания ==
<references />
<references />
[[Категория:Техническое]]
[[Категория:Техническое]]

Текущая версия от 09:40, 20 июня 2025

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

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 Число Число собранных тварей женского пола (только у ковчеговладельцев, max = "1000") Нет
ark_m Число Число собранных тварей мужского пола (только у ковчеговладельцев, max = "1000") Нет
arena_won Число Счетчик побед на арене Нет
arena_lost Число Счетчик поражений на арене Нет
arena_fight Bool Находится ли герой на арене/в бою с боссом/в заплыве/ или в подземелье (см. fight_type) Да
ark_completed_at Строка Дата постройки ковчега (есть у всех, null — если ковчег не достроен) Нет
ark_name Строка Название ковчега (есть у тех, кто назвал ковчег) Нет
alignment Строка Характер героя Нет
aura Строка Аура героя (без времени; отсутствует без ауры) Да
pairs_at Строка Дата окончания сбора тварей Нет
book_at Строка Дата окончания написания книги Нет
souls_at Строка Дата окончания сбора душ Нет
boss_name Строка Имя собранного в лаборатории босса Нет
boss_power Число Мощь собранного в лаборатории босса Нет
bricks_cnt Число Количество кирпичей (в штуках, не в процентах; есть всегда, max = "1000") Нет
clan Строка Название гильдии героя (пустая строка, если её нет) Нет
clan_position Строка Звание в гильдии (если гильдии нет, то пустая строка) Нет
diary_last Строка Последняя запись в дневнике Да
eye_last Строка Последняя запись в третьем глазе Да
distance Число Расстояние до столицы (при нахождении в Годвилле = 0) Да
exp_progress Число Прогресс опыта Да
expired Bool показатель неактуальности данных (ключ появляется, когда данные неактуальны)[2] Да
fight_type Строка Тип боя (см. таблицу ниже) Да
godpower Число Количество праны (для пенсионеров 0-200) [3] Да
gold_approx Строка Приблизительное количество золота Да
gender Строка Пол героя Нет
godname Строка Имя бога Нет
health Число Здоровье героя[4] Да
inventory Объект Удален, вместо него теперь 'activatables' Да
inventory_max_num Число Максимальный размер инвентаря (max = "50") Нет
inventory_num Число Количество вещей в инвентаре Да
level Число Уровень героя Нет
max_health Число Максимальный запас здоровья Нет
motto Строка Девиз (может быть пустой строкой) Нет
name Строка Имя героя Нет
pet Объект Объект, содержащий описание питомца (подробности ниже) Нет
quest_progress Число Процент выполнения задания Да
quest Строка Текст текущего задания Да
side_job_progress Число Процент выполнения подряда Да
side_job Строка Текст текущего подряда Да
savings Строка Число сбережений (только у храмовладельцев, max = "30000 тысяч") Нет
savings_completed_at Строка Дата окончания сбора пенсии (только у пенсионеров) Нет
shop_name Строка Название лавки (только у пенсионеров) Нет
souls_percent Строка Количество собранных душ в процентах (только у книжников) Нет
relics_percent Строка Количество найденных реликвий в процентах Нет
t_level Число Уровень героя-торговца (только у лавочников) Нет
temple_completed_at Строка Дата окончания храма (только у храмовладельцев) Нет
town_name Строка Город, в котором герой (пустая строка, если в поле, и нет ключа, если в бою) Да
wood_cnt Число Количество поленьев (пока нет храма, ключ отсутствует) Нет
words Число Число собранных слов для книги (без слогов; ключ исчезает, если есть ключ book_at) Нет

Примечания

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