Документация Steamworks
Коды ошибок и ответы на запросы

Форматы ответов

Методы веб-API Steamworks могут возвращать ответы в разных форматах. По умолчанию все ответы возвращаются в формате JSON. Тем не менее, к запросу при необходимости можно добавить параметр format, чтобы изменить формат возвращаемого ответа.

Пример:
http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=1&format=xml

Этот параметр принимает следующие значения:
  • JSON

    • Вызов всегда возвращает объект, содержащий именованный объект и данные результата.
    • Массивы представлены в виде массива с названием типа объектов в массиве.
    • Тип null представлен как литерал null формата JSON.
    • 64-битные числа возвращаются как строковые значения.
    • К примеру:
      { "appnews": { "appid": 440, "newsitems": [ { "gid": "1904306376092568991", "title": "Prince of Prolander Event ", "url": "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991", "is_external_url": true, "author": "", "contents": "<a href=/"http://rgl.gg/default.aspx/"><img src=/"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023/"></a><br><br>/n<p><b>This Sunday at 4:30pm EST</b> <a href=/"http://rgl.gg/default.aspx/" target=\"_blank\">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href=/"https://www.youtube.com/user/stabbyvideo/" target=\"_blank\">Stabby</a> and <a href=/"https://www.youtube.com/user/danethebrain/" target=\"_blank\">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href=/"https://www.twitch.tv/extvesports/" target=\"_blank\">Twitch</a> this Sunday, and witness this historic event!</p><br>", "feedlabel": "TF2 Blog", "date": 1495218420, "feedname": "tf2_blog", "feed_type": 0, "appid": 440 } ], "count": 2385 } }
  • XML

    • Атрибуты XML не используются.
    • Массивы всегда представлены в виде серии подэлементов в содержащем элементе типа массива.
    • Тип null представлен в виде слова null между метками элемента.
    • Пример:
      <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE appnews> <appnews> <appid>440</appid> <newsitems> <newsitem> <gid>1904306376092568991</gid> <title>Prince of Prolander Event </title> <url>http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991</url> <is_external_url>true</is_external_url> <author/> <contents><a href="http://rgl.gg/default.aspx"><img src="https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023"></a><br><br> <p><b>This Sunday at 4:30pm EST</b> <a href="http://rgl.gg/default.aspx" target="_blank">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href="https://www.youtube.com/user/stabbyvideo" target="_blank">Stabby</a> and <a href="https://www.youtube.com/user/danethebrain" target="_blank">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href="https://www.twitch.tv/extvesports" target="_blank">Twitch</a> this Sunday, and witness this historic event!</p><br></contents> <feedlabel>TF2 Blog</feedlabel> <date>1495218420</date> <feedname>tf2_blog</feedname> <feed_type>0</feed_type> <appid>440</appid> </newsitem> </newsitems> <count>2385</count> </appnews>
  • VDF (Valve Data Format, формат данных Valve)

    • Это внутренний формат данных Valve, используемый играми на движке Source. Запрос GetSchema (веб-API TF2) возвращает данные, схожие с items/items_game.txt (однако качества не расширяются до объектов с полем value).
    • Документация доступна на вики-странице разработчиков Valve здесь и на вики-странице Team Fortress 2 здесь.
    • Массивы представлены в виде VDF-массива с названием типа объектов в массиве. VDF-массив представляет собой объект, в котором каждое вхождение пронумеровано как заключённый в кавычки ключ.
    • Тип null представлен как пустая строка.
    • Пример:
      "appnews" { "appid" "440" "newsitems" { "0" { "gid" "1904306376092568991" "title" "Prince of Prolander Event " "url" "http://store.steampowered.com/news/externalpost/tf2_blog/1904306376092568991" "is_external_url" "1" "author" "" "contents" "<a href=/"http://rgl.gg/default.aspx/"><img src=/"https://steamcdn-a.akamaihd.net/steam/news/29555/prince.png?t=1495219023/"></a><br><br> <p><b>This Sunday at 4:30pm EST</b> <a href=/"http://rgl.gg/default.aspx/" target=\"_blank\">RGL.gg</a> is hosting their Prince of Prolander event. See legendary players <a href=/"https://www.youtube.com/user/stabbyvideo/" target=\"_blank\">Stabby</a> and <a href=/"https://www.youtube.com/user/danethebrain/" target=\"_blank\">Uncle Dane</a> duke it out to answer the age old question: Who is better? Spies or Engies? Come see them settle the score once and for all in the new competitive TF2 format, Pick/Ban Prolander. Be sure to tune in to <a href=/"https://www.twitch.tv/extvesports/" target=\"_blank\">Twitch</a> this Sunday, and witness this historic event!</p><br>" "feedlabel" "TF2 Blog" "date" "1495218420" "feedname" "tf2_blog" "feed_type" "0" "appid" "440" } } "count" "2385" }

Для парсинга результатов запроса должно использоваться гибкое решение, поскольку каждый метод возвращает результаты в произвольном порядке.

Коды состояния HTTP

веб-API Steamworks по возможности пытается показать соответствующие коды состояния HTTP.

Наиболее распространённые таковы:
КодТекстОписание
200OKГотово!
400Bad RequestУбедитесь, что отправлены все требуемые параметры.
401UnauthorizedДоступ запрещён. Повторная попытка бесполезна. Перепроверьте параметр key=.
403ForbiddenДоступ запрещён. Повторная попытка бесполезна. Перепроверьте параметр key=.
404Not FoundЗапрошенный интерфейс не существует.
405Method Not AllowedПри вызове использовался неверный метод, к примеру, GET или PUSH.
429Too Many RequestsНа вас наложены ограничения.
500Internal Server ErrorНеустранимая ошибка, попробуйте ещё раз. Если ошибка повторяется, отправьте сообщение с подробностями запроса на форуме разработчиков Steamworks.
503Service UnavailableСлужба временно недоступна или слишком занята. Пожалуйста, повторите запрос позже.