Não afiliado

Início Documentação e ajuda
Documentação do Steamworks
Visão geral da Web API

Introdução

O Steam expõe uma Web API baseada em HTTP que pode ser usada para acessar vários recursos do Steamworks. A API contém métodos públicos que podem ser acessados a partir de qualquer aplicativo capaz de realizar requisições HTTP, como um cliente ou servidor do jogo. A API também contém métodos protegidos que exigem autenticação e devem ser acessados de aplicativos de backend confiáveis.

Como exemplo, métodos da Web API costumam ser usados por um servidor seguro da distribuidora para:
  • Verificar as credenciais de um usuário Steam junto ao servidor;
  • Verificar se um usuário possui um aplicativo específico;
  • Definir ou recuperar as estatísticas, conquistas ou classificações de um usuário;
  • Executar uma compra do jogo.

Uma lista completa de tudo que a Web API do Steamworks oferece está disponível na Referência da Web API do Steamworks.

Formato das requisições

A Web API pública do Steamworks é acessada ao fazer requisições HTTP (porta 80) ou HTTPS (porta 443) ao URI api.steampowered.com.
Para distribuidoras, o Steam também oferece um servidor da Web API exclusivo para parceiros hospedado em https://partner.steam-api.com. A intenção desse serviço é oferecer uma maior disponibilidade do que a hospedagem pública; use esse serviço para todas as requisições feitas a partir dos seus servidores seguros. Consulte Endereços de hospedagem da Web API, firewalls para mais informações.

Similar à API C++ do Steamworks, a Web API foi dividida em várias interfaces que contêm métodos relacionados. O formato da URI de cada requisição à API é:
https://api.steampowered.com/<interface>/<metodo>/v<versao>/

A maioria dos métodos recebe parâmetros obrigatórios e opcionais. Dependendo do método, os parâmetros precisam ser passados como parâmetros GET ou POST na requisição.

Todas as requisições devem ser enviadas pelo protocolo HTTP 1.1 e usar criptografia SSL v3 128 bits sempre que possível. O Content-Type deve ser do tipo application/x-www-form-urlencoded e os parâmetros POST devem estar no corpo da requisição no formato de codificação de URL padrão. Textos devem ser transmitidos na codificação UTF-8.

Autenticação

Muitos métodos da Web API têm restrições de acesso, obrigando que uma chave única seja passada. Consulte Autenticação com chaves da Web API para mais informações.

Parâmetros vetorizados

Alguns métodos recebem um vetor de parâmetros especificado por um sufixo [0] no nome do parâmetro. Ao passar vetores, sempre haverá um parâmetro count que especifica a quantidade de parâmetros no vetor. Por exemplo:
?count=2&name[0]=parametroUm&name[1]=parametroDois

Interfaces de serviço

Além de chamadas comuns à Web API, há interfaces de serviços que funcionam de forma similar a interfaces comuns, com a diferença que todas as APIs de serviço aceitam argumentos como um blob JSON assim como parâmetros GET ou POST. Para passar dados como JSON, invoque o método da Web API com o parâmetro input_json como:
?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&input_json={"steamid":76561197972495328}

Observe que o JSON precisará estar em codificação de URL. Os campos "key" e "format"devem ser passados como parâmetros separados, como antes. Requisições POST também são permitidas.

Todas as Web APIs de serviço terão a palavra "Service" no final do nome da interface, como IPlayerService; todas elas permitem essa forma adicional de passagem de parâmetros. Alguns métodos de serviço têm parâmetros com estruturas mais complexas, exigindo esse formato alternativo de entrada.

Consulta de exemplo

O exemplo a seguir recupera as 3 notícias mais recentes para Team Fortress 2.
A requisição especifica que a resposta deve ser retornada como JSON e inclui: um parâmetro "appid" obrigatório (o AppID do Team Fortress 2 é 440) e um parâmetro "count" opcional para limitar a quantidade de resultados retornados.

GET /ISteamNews/GetNewsForApp/v2/?appid=440&count=3\r\n Host: api.steampowered.com/r/n Content-Length: 0\r\n\r\n

Execute e veja os resultados dessa consulta pelo link:
https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?appid=440&count=3

Leia mais sobre a chamada específica aqui: ISteamNews/GetNewsForApp

Recuperação do ID Steam do usuário

A Web API do Steamworks identifica usuários individuais usando o ID Steam de 64 bits. Para saber como recuperar o ID Steam do usuário de forma segura, consulte Autenticação de usuário e titularidade.

Endereços de hospedagem da Web API, firewalls

A Web API pública (]api.steampowered.com) está atrás do cache de borda da Akamai, então os endereços IP exibidos variam de acordo com a sua localização e alterações constantes no serviço. Os IPs podem mudar de forma rápida e fluida, então se as suas chamadas à Web API são feitas por um firewall que filtra requisições na saída, continue lendo.

Use o nó exclusivo de parceiros (https://partner.steam-api.com) para todas as requisições feitas pelos seus servidores seguros. Esta hospedagem tem algumas propriedades diferentes da hospedagem pública:
  • A hospedagem só está disponível por HTTPS;
  • A hospedagem não está atrás do cache de borda da Akamai;
  • Toda requisição deve ser feita com a chave da distribuidora para a Web API, mesmo aquelas que não precisam de uma chave na hospedagem pública. Requisições feitas sem uma chave de distribuidora válida retornarão um código de estado 403;
  • Requisições que geram códigos de estado 403 resultarão em limites rígidos de conexão ao endereço IP. Isso é feito para garantir alta disponibilidade. Gerar uma quantidade grande de requisições em um certo intervalo de tempo que geram códigos de estado 403 — seja durante testes ou por usar uma chave comum em vez da chave da distribuidora — resultará em um bloqueio temporário do endereço IP;
  • Se fizer requisições ao serviço da API a partir de uma máquina com um firewall que filtra requisições na saída, adicione o nome de DNS "partner.steam-api.com" à lista de permitidos. Se o firewall só permitir endereços numéricos, adicione o bloco CIDR a seguir à lista de permitidos: 208.64.200.0/22.
    AVISO: Não se conecte aos servidores da Web API pelo endereço IP, sempre use o nome de DNS. Esses endereços são fornecidos apenas para clientes que precisam liberar a conexão em firewalls.