概要
Steam は、多数の Steamworks 機能にアクセスする際に使用できる HTTP ベースの Web API を公開しています。 API は、ゲームクライアントまたはサーバー等の HTTP リクエストを作成できるすべてのアプリケーションからアクセスできるパブリックメソッドを含みます。 同時に、信頼できるバックエンドアプリケーションからのアクセス用に、認証の必要な保護されたメソッドも含みます。
例えば、Web API メソッドは一般的に安全なパブリッシャーサーバーによって次の用途に使用されます:
- サーバーと Steam ユーザーの資格情報の確認
- ユーザーが特定のアプリケーションを所有しているかの確認
- ユーザーの統計、実績、ランキングスコアの設定や取得
- ゲーム内購入の実行
Steamworks Web API の提供する全リストは
Steamworks Web APIリファレンスです。
リクエストフォーマット
パブリックの Steamworks Web API へは、
api.steampowered.com
に HTTP (port 80) または HTTPS (port 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 エンコーディングが必要であることに注意してください。 "キー" と "フォーマット" フィールドは以前と同様に別々のパラメーターとして渡される必要があります。 POST リクエストも同様にサポートされます。
WebAPI が"サービス"インターフェイスかの識別は名前から判別できます。サービスの場合は
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アドレスホワイトリスト
WebAPIコールのために、IPアドレスをホワイトリストすることができます。 WebAPI キーが第三者に入手されてしまった時の追加のセキュリティレイヤーとして存在し、ホワイトリストされたIPからのWebAPI呼び出しのみが成功することを確実にします。 IPリストをホワイトリストに設定すると、ホワイトリストされていないアドレスからの要求はブロックされ、403 - Forbidden 応答を返します。
IPアドレスのホワイトリストへの追加は簡単です。 WebAPIキーを持つグループページから、「WebAPIキーを管理」ボタンをクリックして、インストラクションに従ってください。
それぞれのWebAPIキーにはホワイトリストが用意されていますが、ホワイトリストにIPアドレスをを追加することは必須では
ありません。
注:ホワイトリストの作成はWebAPIキーの安全を保証するものではありません。 キーは安全に保管し、共有せず、不正にアクセスされた場合には直ちに変更してください。