概要
Steamは、多数のSteamworks機能にアクセスする際に使用できるHTTPベースのWeb APIを公開しています。 APIは、ゲームクライアントやサーバーなどのHTTPリクエストを作成できるすべてのアプリケーションからアクセスできるパブリックメソッドを含みます。 同時に、信頼できるバックエンドアプリケーションからのアクセス用に、認証の必要な保護されたメソッドも含みます。
例えば、Web APIメソッドは安全なパブリッシャーサーバーによって一般的に次の用途に使用されます。
- サーバーとSteamユーザーの資格情報の確認
- ユーザーが特定のアプリケーションを所有しているかの確認
- ユーザーの統計、実績、ランキングスコアの設定や取得
- ゲーム内購入の実行
Steamworks Web APIの提供する全リストは
Steamworks Web APIリファレンスです。
リクエストフォーマット
パブリックのSteamworks Web APIへは、
api.steampowered.comにHTTP(ポート80)またはHTTPS(ポート443)をリクエストしてアクセスします。
パブリッシャーに対し、Steamはパートナー専用のWeb APIサーバーを
https://partner.steam-api.comにホストしています。 このサービスの目的は、パブリックホストよりも高い可用性の提供です。利用に際し、すべてのリクエストは安全なサーバーから実行してください。 詳細は
Web APIホストアドレス、ファイアウォールについてを参照してください。
Steamworks C++ API同様、Web APIは関連するメソッドを含む複数のインターフェイスに分かれています。 それぞれのAPIリクエストのURIは次の形式をとります。
https://api.steampowered.com/<interface>/<method>/v<version>/
ほとんどのメソッドは必須およびオプションのパラメーターをサポートしています。 メソッドによりますが、これらのパラメーターはリクエスト内でGETまたはPOSTとして渡される必要があります。
すべてのリクエストはHTTP 1.1で送信し、可能な場合には安全なTLS接続を使用してください。 コンテンツのタイプは
application/x-www-form-urlencodedで、POSTパラメーターは標準形式のURLエンコーディング形式でリクエストのボディに含めてください。 テキストはUTF-8で送信する必要があります。
認証
多くのWeb APIメソッドには、一意のキーを必要とするアクセス制限があります。詳細は
Web APIキーを使用した認証を参照してください。
配列パラメーター
いくつかのメソッドでは、パラメーターに配列を使用します。 これは、パラメーター名の
[0]接尾辞によって指定されます。 配列を渡す場合は、配列内のパラメーターの数を指定する
countパラメーターが常に存在します。 例:
?count=2&name[0]=SomeNameHere&name[1]=SomeOtherName
サービスインターフェイス
通常のWeb APIコールに加え、サービスインターフェイスもあります。 これらのインターフェイスは、通常のインターフェイスと非常によく似た機能を果たします。主な違いは、すべてのサービスAPIで、GETまたはPOSTパラメーターに加え、引数を一つのJSON blobとして受け取れることです。 JSONとしてデータを渡すには、次のように
input_jsonパラメーター設定してWeb APIメソッドを呼び出してください。
?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&input_json={"steamid":76561197972495328}
JSONはURLエンコーディングが必要であることに注意してください。 「key」と「format」フィールドは以前と同様に別々のパラメーターとして渡される必要があります。 POSTリクエストも同様にサポートされます。
Web APIが「サービス」インターフェイスかどうかは名前から識別できます。サービスの場合は
IPlayerServiceのように「Service」で終わり、パラメーターデータを渡す追加のメソッドをサポートしています。 より複雑な構造のパラメーターを持つ一部のサービスメソッドは、この代わりの入力フォーマットを必要とする場合があります。
クエリの例
以下は、『Team Fortress 2』の最新ニュース3件を取得する例です。
リクエストは、JSON形式でレスポンスを返すよう指定し、必要なAppIDパラメーター(『Team Fortress 2』のAppIDは440)と、返される結果の数を制限するオプションのcountパラメーターが含まれています。
GET /ISteamNews/GetNewsForApp/v2/?appid=440&count=3\r\n
Host: api.steampowered.com/r/n
Content-Length: 0\r\n\r\n
このクエリを実行し、結果を次のリンクから確認できます:
https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?appid=440&count=3この呼び出しに関する詳細はこちら:
ISteamNews/GetNewsForAppユーザーのSteamIDの取得
Steamworks Web APIは一意の64ビットSteam IDを使用して各ユーザーを識別します。 Steam IDを安全に取得する方法は
ユーザー認証と所有権確認を参照してください。
Web APIホストアドレス、ファイアウォールについて
パブリックWeb API(
api.steampowered.com)は、Akamai社のエッジキャッシュサーバーの背後にあるため、あなたの現在地やサービスの変更によって、表示される実際のIPアドレスが異なる場合があります。 IPは頻繁に変化するため、Web APIをアウトバウンドリクエスト(インターネット経由)でファイアウォール越しに呼び出す場合は、以下をお読みください。
その際は、パートナー専用ノード(
https://partner.steam-api.com)を使用してセキュアサーバーからすべてのリクエストを送信してください。 このホストサーバーにはパブリックホストとは異なるプロパティがあります。
- このホストはHTTPSでのみアクセス可能です。
- このホストはAkamai社のエッジキャッシュの背後にはありません。
- このホストへのリクエストは、通常はキーが必要とされないリクエストも含めて、すべてパブリッシャーWeb APIキーで行われる必要があります。 有効なパブリッシャーキーで行われないリクエストには403エラーコードが返されます。
- 403ステータスコードを生じるリクエストは、パブリッシャーキーの代わりに通常のWeb APIを使用すると発生しますが、接続しているIPに対して厳格なレート制限を適用します。 これは高い可用性を確保するための措置で、
- 送信リクエストにファイアウォールフィルターが適用されるホストからこのAPIサービスにリクエストを行う場合は、DNS名「partner.steam-api.com」を許可リストに追加してください。 ファイアウォールが数字のアドレスしかサポートしていない場合には、次のCIDRブロックを許可リストに追加してください:
208.64.200.0/22
注意:Web APIサーバーにはIPではなくDNS名で接続してください。 これらのアドレスはファイアウォールでそのアドレスをホワイトリスト化する必要があるクライアントにのみ提供しています。
IPアドレスホワイトリスト
Web API呼び出しのために、IPアドレスをホワイトリストすることができます。 Web APIキーが第三者に入手されてしまったときの追加のセキュリティレイヤーとして存在し、ホワイトリストされたIPからのWebAPI呼び出しのみが成功することを確実にします。 IPリストをホワイトリストに設定すると、ホワイトリストされていないアドレスからの要求はブロックされ、403 - Forbidden応答を返します。
IPアドレスのホワイトリストへの追加は簡単です。 Web APIキーを持つグループページから、「Web APIキーを管理」ボタンをクリックして、インストラクションに従ってください。
それぞれのWeb APIキーにはホワイトリストが用意されていますが、ホワイトリストにIPアドレスを追加することは必須では
ありません。
注:ホワイトリストの作成はWeb APIキーの安全を保証するものではありません。 キーは安全に保管し、共有せず、不正にアクセスされた場合には直ちに変更してください。