Documentación de Steamworks
Descripción general de la Web de API

Introducción

Steam tiene una Web de API basada en HTTP que se puede usar para acceder a muchas características de Steamworks. La API contiene métodos públicos a los que se puede acceder desde cualquier aplicación capaz de realizar una solicitud HTTP, como un cliente de juego o un servidor. También contiene métodos protegidos que requieren autenticación y que están pensados para que accedan a ellos aplicaciones del backend.

Por ejemplo, los métodos de la Web de API se usan ordinariamente por parte de un servidor seguro de editor para:
  • Verificar las credenciales de Steam de un usuario con ese servidor.
  • Comprobar si un usuario posee una aplicación concreta.
  • Establecer o recuperar las estadísticas, los logros o las puntuaciones de las tablas de clasificación de un usuario.
  • Hacer una compra dentro del juego.

Puede encontrarse una lista completa de todo lo que ofrece la Web de API de Steamworks en Referencia de Web de API de Steamworks.

Formato de solicitud

Se accede a la Web de API pública de Steamworks haciendo solicitudes HTTP (puerto 80) y HTTPS (puerto 443) a api.steampowered.com.
Si eres editor, Steam también te proporciona un servidor Web de API solo para asociados en https://partner.steam-api.com. El objetivo de este servicio es tener una mayor disponibilidad que el host público; deberás usar este servicio para todas las solicitudes que hagas desde tus servidores seguros. Visita Direcciones del [i]host[/i] de la Web de API, consideraciones sobre los firewall para obtener más información.

De igual modo que para la API de C++ de Steamworks, la Web de API se ha dividido en varias interfaces que contienen métodos relacionados. El formato URI de cada solicitud de la API es:
https://api.steampowered.com/<interface>/<method>/v<version>/

La mayoría de los métodos admiten una lista de parámetros obligatorios y opcionales. Dependiendo del método, estos parámetros deben pasarse como parámetros GET o POST en la solicitud.

Todas las solicitudes deben enviarse utilizando HTTP 1.1 y una conexión segura TLS siempre que sea posible. El Content-Type application/x-www-form-urlencoded y los parámetros POST deben constar en el cuerpo de la solicitud en formato estándar de codificación URL. El texto se transmitirá como UTF-8.

Autenticación

Muchos métodos de Web de API tienen restricciones de acceso que requieren una clave única, para obtener más información consulta Autenticación mediante claves de Web de API.

Parámetros de vector

Algunos métodos están diseñados para recibir un vector de parámetros. Esto se especifica con un [0] postfix en el nombre del parámetro. Cuando los parámetros de vector pasan, habrá un parámetro de la cuenta que especifica el número de parámetros de la matriz. Por ejemplo:
?count=2&name[0]=SomeNameHere&name[1]=SomeOtherName

Interfaces de servicio

Además de las llamadas ordinarias a la Web de API, están las interfaces de servicio. Estas interfaces funcionan de manera muy similar a las interfaces ordinarias. La diferencia fundamental es que todas las API de servicio aceptan argumentos como un único blob de JSON, además de recibirlos como parámetros GET o POST. Para pasar datos como JSON, llama al método de la Web de API con el parámetro input_json establecido como:
?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&input_json={"steamid":76561197972495328}

Ten en cuenta que el JSON debe estar codificado como dirección URL. Los "campos key" y "format" deberán seguir pasándose como parámetros independientes, igual que antes. Las solicitudes POST también son compatibles.

Puedes identificar si una WebAPI es un "servicio" por el nombre de la interfaz; si termina en "servicio" como IPlayerService, entonces es compatible con este método adicional de pasar los datos paramétricos. Algunos métodos de servicios tienen parámetros que son estructuras más complejas y requieren este formato alternativo de entrada.

Ejemplo de consulta

El ejemplo siguiente recupera las 3 entradas más recientes de noticias para Team Fortress 2.
La solicitud especifica que la respuesta debe ser devuelta como JSON e incluye un parámetro necesario appid (AppID de Team Fortress 2 que es 440) y una cuenta de parámetro opcional; cuenta que limita el número de resultados devueltos.

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

Puedes ejecutar y ver los resultados de esta verificación con este enlace:
https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?appid=440&count=3

Para aprender más sobre este tema visita: ISteamNews/GetNewsForApp

Obtener el id. de Steam del usuario

La Web de API de Steamworks identifica usuarios individuales usando su id. de Steam único de 64 bits. Para aprender más sobre cómo obtener el id. de Steam del usuario de forma segura visita Autenticación de usuario y propiedad.

Direcciones del host de la Web de API, consideraciones sobre los firewall

La Web de API pública (api.steampowered.com) está a cargo del caché edge de Akamai, por lo cual, las direcciones IP actuales que verás tendrán nombres distintos basados en tu ubicación y en los cambios continuos del servicio. Las IP pueden cambiar de rápida y fluidamente, de modo que si tus llamadas a la Web de API se hacen a través de un firewall para solicitudes externas, continúa leyendo.

Deberás utilizar el nodo solo para asociados (https://partner.steam-api.com) para todas las solicitudes hechas desde tus servidores seguros. Este host tiene unas propiedades diferentes de las del host público:
  • Este host solo es accesible a través de HTTPS.
  • Este host no está detrás de la caché perimetral de Akamai.
  • Deberás ejecutar todas las solicitudes a este host con tu clave de Web de API para editor, incluso aquellas que no la requieren ordinariamente. Las solicitudes hechas sin una clave de editor válida devolverán el código de error 403.
  • Las peticiones que generan códigos de estado 403, que normalmente ocurren cuando se usa una clave normal de Web de API en lugar de la clave del editor, sufrirán límites estrictos de frecuencia para la IP de la conexión. Esta es una forma de intentar garantizar la alta disponibilidad.
  • Si vas a hacer solicitudes a este servicio de API desde un host que tenga un filtro de firewall aplicado a las solicitudes salientes, deberás agregar la denominación DNS "partner.steam-api.com" a tu lista de permisos. Si tu firewall solo acepta direcciones numéricas, agrega el siguiente bloque CIDR para permitir la lista: 208.64.200.0/22.
    NOTA: No debes conectarte al los servidores IP de la Web de API; utiliza el nombre del DNS. Estas direcciones se aportan solo para aquellos clientes que necesiten pasarlas a la lista de permitidas en sus firewalls.

Lista blanca de direcciones IP

Permitimos la inclusión en listas blancas de direcciones IP para llamadas a la Web de API. Esta es una capa de seguridad agregada en caso de que tu clave de Web de API se vea comprometida, porque garantiza que solo las llamadas de Web de API de las direcciones IP incluidas en la lista blanca tendrán éxito. Una vez que se configura cualquier IP para que se incluya en la lista blanca, todas las demás solicitudes de direcciones no incluidas en la lista blanca se bloquearán y devolverán una respuesta 403 - Forbidden.

agregar direcciones IP a la lista blanca es fácil. Desde cualquier página de grupo que tenga una clave WebAPI, haz clic en el botón "Administrar clave WebAPI" y sigue las instrucciones.

Cada clave Web de API tiene su propia lista blanca y no es necesario agregar direcciones IP a la lista blanca.

Nota: La lista blanca no garantiza la seguridad de la clave Web de API. Protege tu clave, no la compartas y cámbiala inmediatamente si está comprometida.