Наиболее свежие апдейты API уже достаточно давно присутствуют на http://apitest.eveonline.com/, а интерфейс управления ключами доступен тут: http://supporttest.eveonline.com/. Большая часть API-программистов уже и без того до мельчайших деталей знает, как работают новые игрушки, но я всё же намерен проговорить детали вслух, для гарантии ясности.
Настраиваемые API-ключи
Вы их просили — так вот, они есть. Новая система ключей API предоставляет спектр новых возможностей, которые (мы надеемся) наполнят радостью, светом и маленькими пушистыми котятами как разработчиков сторонних приложений, так и пользователей этих приложений.
- Вплоть до десяти ключей на аккаунт
- Настраиваемый доступ к API + шаблоны
- Опциональность «срока жизни»
- Разделённый доступ к информации персонажа и корпорации
- Ключи с пространством доступа «персонаж» или «аккаунт»
Суть идеи в том, чтобы иметь полный контроль над тем, какая информация (и насколько долго) будет доступна через API с помощью этого конкретного ключа. Например, вы хотите дать директору вашей корпорации доступ к вашему кошельку, но только на сегодня. Вы можете создать ключ, который отдаёт только эту информацию, и истекает завтра. Когда вы выйдете из корпорации — вы вправе ограничить все каналы доступа к вашим API-данным, которые могли быть у вашего босса, и не создавать при этом новый ключ для тех сторонних приложений, которые вы используете.
Помимо того вы также можете настроить доступ к этим данным, исходя из персонажей. Если вы выберете одного из персонажей, ключ будет работать только для него, иначе — для всех ваших персонажей. Если у вас есть персонаж-CEO или директор — вы можете сделать корпоративный ключ, который открывает информацию этой корпорации.
Под шаблонами мы имеем в виду, что разработчики сторонних предложений смогут давать пользователям линки на форму генерации API с предопределённой маской доступа, которая определяет, что нужно для корректной работы данного приложения, и требуемые страницы API будут выделены в форме автоматически.
Веб-интерфейс управления ключами переехал на сайт поддержки. Старый интерфейс, впрочем, останется открытым, и пока что вы можете создавать и использовать старые ключи. Мы не знаем в точности, когда избавимся от них; мы хотим дать разработчикам достаточно времени для переключения на новый формат и для информирования пользователей об изменениях. Но это время измеряется в неделях, и ориентировочно находится где-то в районе 4–8 недель. Мы будем смотреть за использованием ключей, и сообщим вам о переключении заранее, до того, как «дёрнем рубильник».
Чтобы использовать новые ключи, вы можете отбросить старые параметры userID и apiKey, и использовать вместо них keyID и vCode. Вы можете найти keyID в первой колонке (той, что называется ID) на соответствующем сайте, vCode означает Verification Code и отображается в той же таблице для каждого ключа.
Техническая информация из соответствующего девблога CCP Stillman всё ещё актуальна. По ссылке вы можете найти некоторые примеры того, как использовать эти ключи в системе, и как создать шаблон/предопределённый линк.
Контракты
Это — другой часто встречающийся запрос от сообщества. Я постил девблог, в котором объяснял стратегию, которой мы будем придерживаться. Вкратце: мы решили придерживаться этой стратегии.
Мы создали три новых страницы для отображения контрактной информации. ОК, на самом деле три пары страниц, поскольку вы можете отдельно запросить информацию о персонаже и о корпорации.
/char/Contracts.xml.aspx: содержит контракты, выставленные в течение последнего месяца, и — кроме того — все контракты, помеченные как «незавершенные» или «текущие». С помощью параметра ContractID можно получить одиночный контракт. У каждого элемента списка есть следующие атрибуты:
- contractID
- issuerID: Персонаж — создатель контракта.
- issuerCorpID: Корпорация, к которой принадлежал создатель контракта на момент создания этого контракта.
- assigneeID: Персонаж или корпорация, которой был переуступлён контракт, 0 если отсутствует.
- acceptorID: Персонаж, принявший контракт, 0 если отсутствует.
- startStationID
- endStationID
- type: Может быть «ItemExchange», «Auction», «Loan» или «Courier».
- status: Может быть «Outstanding», «InProgress», «CompletedByIssuer», «CompletedByContractor», «Completed», «Cancelled», «Rejected», «Failed», «Deleted» или «Reversed».
- title: Оставленное игроком описание. Странное название, мы в курсе.
- forCorp: 1 если контракт выставлен от лица корпорации, 0 в противном случае.
- availability: Может быть «Public» или «Private». Доступность может быть установлена как «My Corporation», в этом случае доступность тут — «Private» а assigneeID — корпорация, к которой принадлежал создатель контракта на момент создания этого контракта.
- dateIssued
- dateExpired
- dateAccepted: Пусто, если контракт не был принят.
- numDays: Количество дней на завершение контракта.
- dateCompleted: Пусто, если контракт не был завершен.
- price
- reward
- collateral
- buyout
- volume
/char/ContractItems.xml.aspx: Содержит список предметов конкретного контракта, используйте параметр contractID чтобы указать на контракт. Прошу заметить: для курьерских контрактов предметы не отображаются. Каждый предмет в списке имеет следующие атрибуты:
- recordID: Уникальный ключ.
- typeID: Тип предмета.
- quantity: Действительно присутствующее количество предмета.
- rawQuantity: Этот атрибут показывается, если количество — отрицательное число в базе данных. Отрицательные значения на самом деле коды, -1 означает, что предмет — «одиночка» (не может быть в стеке). Если это чертёж, то -1 — оригинал, а -2 — копия.
- singleton: 1 если это «одиночка», 0 если нет.
- included: 1 если создатель контракта вложил этот предмет в контракт, 0 если он хочет получить этот предмет контрактом.
/char/ContractBids.xml.aspx: Содержит последние ставки, которые были сделаны на недавних аукционах. Первый запрос содержит все ставки, сделанные на аукционах в последние месяцы, но последующие запросы отображают только те ставки, которые были сделаны с момента последнего запроса. Атрибуты в данном случае прямолинейны и говорят сами за себя:
- bidID: Уникальный ключ.
- contractID
- bidderID
- dateBid
- amount
Эти страницы доступны с помощью ключей персонажа. Папка /corp содержит точно такие же страницы, доступные через корпоративные ключи. Изъятие данных может чуть отличаться, но возвращаемые API данные — такие же, как и в папке /char
Прочее
- Предметы в AssetList (и в ContractItems) теперь содержат атрибут rawQuantity, если количество в базе данных отрицательно. Отрицательные значения на самом деле коды, -1 означает, что предмет — «одиночка» (не может быть в стеке). Если это чертёж, то -1 — оригинал, а -2 — копия. Для дальнейших справок по поводу негативных значений — смотрите сюда.
- MarketOrders.xml.aspx теперь будет возвращать все активные ордера, и кроме того — все ордера, выставленные в последние 7 дней. Опциональный параметр «orderID» может быть добавлен, чтобы выделить любой ордер, принадлежащий вашей корпе/персонажу.
- CharacterInfo.xml.aspx теперь включает историю найма (список корпораций, в которых был персонаж).
- WalletJournal.xml.aspx больше не должно вызывать Скотти, если rowCount высок.
Титры
Я считаю: стоит заметить, что CCP Prism X и CCP Stillman сделали львиную долю работы по созданию настраиваемых API-ключей. Всё, что я сделал — это повосхищался их работой, и добавил пару мелких усовершествований к ней.
Это всё. Спасибо за внимание. Я знаю, текст был сухим и скучным (как всегда). И мне совсем не стыдно. Увидимся на форумах.
CCP Elerhino
Перевод © Clancy