Наиболее свежие апдейты 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 если он хочет получить этот предмет контрактом.
- 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: 09 September 2011 - 12:58