Documentación de Steamworks
Esquema de inventario de Steam

Resumen del esquema ItemDef

Esquema principal y tipos de artículos

Estas son las propiedades principales que Steam comprende y puede interpretar, y son necesarias para el correcto funcionamiento de la economía, los intercambios y la visualización del inventario. La mayoría de estas propiedades son las mismas que devuelve la Web API ISteamEconomy/GetAssetClassInfo.

El ItemDef tiene que ser de uno de los siguientes tipos:

NombreDescripción
itemun tipo de artículo que se puede encontrar en el inventario de un jugador.
bundleRepresenta una colección de ItemDef, con una cantidad asociada de cada tipo. Cuando se otorga este artículo, se expande automáticamente en el conjunto de artículos configurados en la propiedad bundle.
generatorRepresenta un artículo aleatorio. Al otorgar este artículo, se seleccionará aleatoriamente un tipo de artículo de la propiedad bundle y se creará una instancia de ese tipo. (Por ejemplo: imagina cuando se desbloquea una caja y luego se crea uno de los posibles artículos)
playtimegeneratorEs una forma especial de generator que se puede otorgar mediante la llamada a ISteamInventory::TriggerItemDrop desde la aplicación.
tag_generatorDefinición especial de artículos que aplica etiquetas a instancias de artículos (consulta Etiquetas de artículos de inventario de Steam para obtener más detalles).
Dirígete más abajo para obtener detalles sobre cómo especificar tipos de artículos complejos.

Propiedades de ItemDef

NombreDescripción
appidIdentificador de tu aplicación
nameEl nombre en inglés de tu artículo. Se pueden incluir versiones traducidas del nombre del artículo usando el siguiente ejemplo como pauta:
name_english: "Hat" name_spanish: "Sombrero"
Consulta la documentación de Localización e idiomas para conocer los nombres de idiomas válidos para usar como sufijo.
descriptionLa descripción en inglés de tu artículo.
Puedes proporcionar versiones localizadas de la descripción de tu artículo utilizando el siguiente ejemplo como guía:
description_english: "This is a tall hat" description_spanish: "Este es un sombrero de copa"
Consulta la documentación de Localización e idiomas para conocer los nombres de idiomas válidos para usar como sufijo.
display_typeLa descripción en inglés del "tipo" de artículo.
Puedes proporcionar versiones localizadas del tipo de tu artículo utilizando el siguiente ejemplo como guía:
display_type_english: "Weapon" display_type_spanish: "Arma"
Consulta la documentación de Localización e idiomas para conocer los nombres de idiomas válidos para usar como sufijo.
itemdefidEl id. de este itemdef. Debe ser inferior a 1 000 000 para artículos que no sean de Workshop.
typeValor interno. ('item' | 'bundle' | 'generator' | 'playtimegenerator' | 'tag_generator')
bundle(Mira lotes y generadores de artículos más abajo).
promo(Mira el formato de promociones más abajo).
drop_start_timeMarca de tiempo UTC: previene las concesiones de promociones antes de este tiempo, solo aplica cuando promo = manual (mira formato de promociones más abajo).
exchange(Mira el formato de intercambio más abajo).
price(Mira el formato de los precios más abajo).
price_categoryUn precio preestablecido, donde manejamos los distintos valores de moneda para ti. (Mira el formato de los precios más abajo).
background_colorEl color del fondo del inventario, en formato hexadecimal.
name_colorEl color del nombre del inventario, en formato hexadecimal.
icon_urlLa dirección URL del icono pequeño del artículo. El URL debe ser accesible públicamente porque los servidores de Steam lo descargarán y lo guardarán en caché. El tamaño recomendado es de 200 x 200 píxeles.
icon_url_largeLa dirección URL de la imagen grande del artículo. El URL debe ser accesible públicamente porque los servidores de Steam la descargarán y la guardarán en caché. El tamaño recomendado es de 2048 x 2048 píxeles.
marketablefalse/true. Determina si se puede vender el artículo a otros usuarios en el Mercado de la comunidad de Steam.
tradablefalse/true. Determina si se puede intercambiar el artículo con otros usuarios utilizando intercambios de Steam.
tags(Consulta Etiquetas de artículos de inventario de Steam).
tag_generatorsLista de los identificadores de definición de artículos de tag_generator para aplicar (consulta Etiquetas de artículos de inventario de Steam).
tag_generator_nameNombre del token de la categoría de etiqueta (consulta Etiquetas de artículos de inventario de Steam)
tag_generator_valuesLista de valores de etiquetas y la posibilidad de que sean seleccionados (consulta Etiquetas de artículos de inventario de Steam)
store_tagsCadena con "etiquetas" delimitada por ";". Estas etiquetas se utilizarán para ordenar por categorías o filtrar los artículos en la tienda de artículos de Steam para la aplicación.
store_imagesLos URL de las imágenes, delimitados por ";". Estas imágenes se entregan mediante proxy y se utilizan en la página de detalles de la tienda de artículos de Steam de tu aplicación.
game_onlyfalse/true. Si el valor es true, los artículos no se mostrarán en la mochila de Steam, incluyendo las notificaciones de nuevos artículos. Usos comunes en este caso: artículos que otorgas, que se consumen inmediatamente.
hiddenfalse/true. Si el valor es true, los clientes no verán la definición del artículo ni podrán comprarlo. Esto se utiliza para ocultar los ItemDef que no se usan o no se han terminado de desarrollar.
store_hiddenfalse/true. Si el valor es true, este artículo se ocultará en la tienda de artículos de Steam de tu aplicación. Por defecto, se mostrará cualquier artículo con un precio.
use_drop_limitfalse/true. Si es true, usaremos drop_limit para limitar la concesión de artículos a través de ISteamInventory::TriggerItemDrop. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
drop_limitEntero. Limita la cantidad de veces que este artículo se entregará a un usuario específico mediante ISteamInventory::TriggerItemDrop. Si se fija en cero, se evitará cualquier futura entrega de este artículo. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
drop_intervalEntero. Tiempo de juego en minutos antes de que el artículo pueda ser otorgado al usuario. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
use_drop_windowfalse/true. Si es true, usaremos «drop_window» para este ItemDef. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
drop_windowEntero. Tiempo (en minutos) que tendrá que transcurrir antes de que concedamos un artículo. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
drop_max_per_windowEntero. Número de veces que se puede otorgar el artículo, dentro del plazo disponible hasta que se reinicie el contador. El valor predeterminado es 1. (Consulta el apartado Entrega de artículos por tiempo de juego más abajo).
granted_manuallyfalse/true. Si el valor es true, solo se otorgará cuando se llame a las funciones AddPromoItem() o AddPromoItems() con el id. de definición del artículo explícito. En caso contrario, se puede otorgar por medio de la llamada a GrantPromoItems(). Por defecto: false.
use_bundle_pricefalse/true. Mira el apartado Venta de lotes más abajo. Por defecto: false.
auto_stackfalse/true. Si es true, las concesiones de objetos se añadirán automáticamente a una pila del tipo dado. Las concesiones aparecerán en el resultado de funciones callback de inventario a medida que cambie la cantidad. Por defecto: false.

Esquema ampliado

Se pueden definir también otras propiedades cualesquiera que se necesiten en el juego.

Uso de definiciones de artículos complejas

Tipos de lotes y generadores de artículos

Las reglas para lote, generador y generador por tiempo de juego se definen en el campo bundle.

En el caso de los lotes, se describen el tipo y cantidad de artículos que contienen.

En el de los generadores o generadores por tiempo de juego, se describen los tipos de artículos que se pueden generar, así como el peso relativo de cada uno. No es necesario que los pesos sumen 100 en total, aunque puede ser conveniente.

El campo bundle se expresa como una serie de recetas de artículos separadas por ";". Cada receta consta de un id. de ItemDef, al que siguen de manera opcional un separador "x" y la cantidad deseada.

Si no se especifica la cantidad, se usa "1" por defecto.

Formato de los lotes

bundle_def : item_recipe , { ";" , item_recipe } item_recipe : item_def , []

Ejemplos de lotes

  • Concede un artículo ItemDef 201, otro ItemDef 202 y otro ItemDef 203:
    type: bundle bundle: 201;202;203
  • Concede una instancia de ItemDef 101 y cinco de ItemDef 102:
    type: bundle bundle: 101x1;102x5
  • 90 % de probabilidades de que conceda un artículo ItemDef 501, 9 % del ItemDef 502 y 1 % del ItemDef 503:
    type: generator bundle: 501x90;502x9;503x1
  • Un 90 % de que conceda un artículo común; un 10 % de que sea uno especial.
    itemdefid: 600 name: Common generator type: generator bundle: 601;602;603;604;605 itemdefid: 700 name: Special generator type: generator bundle: 701;702;703;704;705 itemdefid: 800 name: Master generator type: generator bundle: 600x9;700x1

Como se puede ver en el último ejemplo, se pueden encadenar las definiciones de lote y de generador. En el momento en que se otorgan, todos los artículos complejos de cualquier tipo se expanden repetidas veces hasta que solo quedan ItemDef sencillos.

Fórmulas de intercambio

La API ExchangeItems te permite definir recetas de fabricación o transformación de artículos que se pueden llamar de manera segura desde el cliente. Los servidores de Steam comprobarán el inventario del jugador y consumirán de manera atómica los materiales dados y otorgarán el artículo objetivo si se cumplen los requisitos.

El artículo objetivo puede ser de tipo lote o generador.

La fórmula se especifica en el campo exchange del artículo objetivo. La fórmula se especifica como un conjunto de una o más recetas separadas por punto y coma.

Cada receta es un conjunto de artículos materiales requeridos, separados por comas.

Los materiales requeridos se pueden indicar explícitamente en el id. de ItemDef (itemdefid) o en la etiqueta (tag). Si no se indica la cantidad, tomará como valor 1.

Al usar ExchangeItems, el autor de la llamada facilita una lista de artículos materiales para ser intercambiados por el artículo especificado. El servidor comprueba cada receta y elige la primera que se corresponde con la lista de materiales proporcionados.

Los intercambios son flexibles: con estas fórmulas se puede lograr usar una llave para abrir una caja, construir un artículo sofisticado a partir de piezas de componentes y reciclar y actualizar artículos.

Formato de intercambio

<exchange>: <recipe> { ";" <recipe> } <recipe>: <material> { "," <material> } <material>: <item_def_descriptor> / <item_tag_descriptor> <item_def_descriptor>: <itemdefid> [] <item_tag_descriptor>: <tag_name> ":" <tag_value> []
Si no se especifica explícitamente, la cantidad requerida es 1.

Ejemplo de intercambio

// requiere uno de: // - un artículo#100 y un artículo#101; o, // - cinco de artículo#102; o, // - 3 de artículo#103 y tres de artículo#104. "exchange":"100,101;102x5;103x3,104x3" // requiere de un guante izquierdo y un guante derecho: "exchange":"handed:left,handed:right" // requiere tres árboles más algo elegante: "exchange":"type:tree*3,quality:fancy" // requiere de cualquiera de los dos: // - artículo#201 y artículo#202; o, // - un artículo con sabor a plátano y un objeto pesado "exchange":"201x1,202x1;flavor:banana,mass:heavy" // recicla cinco artefactos "comunes" para obtener un artefacto "especial" : { "name":"special_generator", "type":"generator", "tags":"rarity:special", "bundle":...., "exchange":"rarity:common*5", ... }

Artículos promocionales

Se pueden otorgar artículos promocionales a los jugadores basándose en diferentes criterios:

  • Posesión de un id. de aplicación (incluidos los de DLC).
  • Un logro.
  • Tiempo de juego en un id. de aplicación.
  • De forma manual: el cliente debe realizar una llamada a AddPromoItem con el id. del artículo concreto.

Steam realiza las verificaciones de los artículos promocionales, por lo que estos artículos se pueden solicitar de manera segura al cliente; echa un vistazo a: ISteamInventory::AddPromoItem. Para definir un artículo promocional, hay que establecer una o más reglas de concesión en la propiedad "promo" de la definición del artículo.

Un artículo promocional también puede ser un lote.

Además, los artículos promocionales que se otorgan de manera manual pueden tener intervalos de aparición. Por ejemplo, puede usarse para regalar algunos artículos cada semana si el jugador completa determinadas tareas (como misiones en el juego). Para utilizar esta función, establece los valores de drop_start_time y drop_interval en el ItemDef.

No se otorgan artículos promocionales al tener un juego gratuito de forma temporal (por un fin de semana gratis o a través del préstamo familiar, etc.).

Formato de las reglas de las promociones

<promo>: <rule> { ";" <rule> } <rule>: app_rule / ach_rule / played_rule / manual_rule <app_rule>: "owns:" <appid> <ach_rule>: "ach:" <achievement name> <played_rule>: "played:" <appid>/<minutes played, defaults to 1> <manual>: "manual"

Ejemplos de promociones

// definiciones de regla de promoción simple: "promo":"owns:440;owns:480" // ha jugado al menos 15 minutos en el id. de aplicación 570: "promo":"played:570/15" // artículo consumible que puede ser otorgado una vez por semana: "itemdefid": 404, "type": "item", "name": "Weekly Quest Item", "promo": "manual", "drop_start_time": "20170801T120000Z", "drop_interval": 10080, ...

Hora de inicio de aparición

Al establecer una hora de inicio para la aparición de los artículos de la promoción, se evita que se otorguen antes de tiempo. Esto permite poner en funcionamiento el código que otorga el artículo antes de la hora establecida. El horario debe especificarse en el formato ISO 8601 en la zona horaria UTC: YYYYMMDDTHHMMSSZ . Por ejemplo: 20050515T171151Z.

Entrega de artículos por tiempo de juego

La característica de entrega de artículos por tiempo de juego permite a los servidores de Steam llevar el seguimiento y control de los artículos que se conceden basándose en el tiempo de juego del usuario. Tu juego solo necesita llamar a la función ISteamInventory::TriggerItemDrop cuando crees que debería ocurrir una concesión. Debes crear elementos del tipo "playtimegenerator" para realizar la entrega.
La concesión por tiempo de juego la controla tu aplicación. No es posible hacer concesiones automáticas que se basen únicamente en el tiempo de juego del usuario. En otras palabras, el tiempo de juego es una condición para la concesión, mientras que la aplicación es la que desencadena la evaluación de esta concesión.

La frecuencia de apariciones de artículos se puede controlar desde el Administrador de datos de la aplicación en Comunidad > Servicio de inventario > Concesiones de artículos por tiempo de juego. Hay tres controles que permitirán la siguiente personalización:
(1) ¿Cuánto falta para que aparezca un artículo?
(2) ¿Cuántos artículos aparecen por intervalo? Y,
(3) ¿Cuánto hay que esperar antes de conceder otro artículo?

Estos mismos controles existen para cada ItemDef. Los valores establecidos para el artículo reemplazarán cualquier ajuste de la aplicación para ese artículo en concreto. De esta forma, cada artículo puede tener su propia frecuencia de aparición, el máximo por intervalo y el tiempo hasta la siguiente concesión.

Cada concesión del generador por tiempo de juego será rastreada por separado si se especifica alguna de las configuraciones de aparición ('drop_interval', 'use_drop_window', 'drop_window', 'drop_max_per_window' ). En otras palabras, si el ItemDef NO tiene ninguna configuración de aparición, compartirá las apariciones de todos los otros generadores por tiempo de juego que tampoco la tengan, y todas están limitadas por el intervalo de aparición de la aplicación. Por el contrario, si el ItemDef especifica explícitamente algún ajuste de aparición, sus apariciones se controlarán de forma separada en el nivel del generador, con independencia de la aplicación y de otros ItemDef generadores por tiempo de juego.

Ejemplo de concesión de ItemDef por tiempo de juego

  1. Permite que el usuario obtenga un artículo transcurridos 30 minutos de juego. Una desventaja de esta configuración por sí sola es que permite
    acumular ese artículo, ya que cada 30 minutos se les otorgará un artículo por tiempo de juego. Te recomendamos encarecidamente que configures un intervalo de aparición:
    "drop_interval" : 30
  2. Limita las apariciones a solo una por día tras 30 minutos de tiempo de juego. Esto recompensa a tus jugadores todos los días cuando vuelven a jugar tu título.
    "drop_interval" : 30,
    "use_drop_window" : "true",
    "drop_window" : "1440"

  3. Permite que el usuario obtenga tres artículos cada día si juega al menos 90 minutos. No es necesario que los minutos sean seguidos. Esto recompensa el pasar más tiempo jugando.
    "drop_interval" : 30,
    "use_drop_window" : "true",
    "drop_window" : "1440",
    "drop_max_per_window" : "3"
Si falta algún ajuste de ItemDef, se usará el ajuste definido en la aplicación.

Límites de aparición

La variable drop_limit permite un máximo de tiempo de juego para un generador específico.
Puedes usarla para limitar las veces que se genera un artículo (por ejemplo: solo la primera vez que ganan el juego en Dificultad legendaria).
Alternativamente, se puede usar para evitar futuras apariciones de un artículo obsoleto si el valor se establece en cero. Solo reconocemos esta configuración si use_drop_limit se establece en "true".

Venta de artículos

Para que ciertos artículos del juego se puedan poner a la venta, simplemente define los precios o las categorías de precios en los ItemDefs que correspondan.
Consulta la documentación de la aTienda de artículos para obtener más información sobre cómo habilitar y personalizar tu página de tu tienda.

Especificación de precios

Los precios de los artículos pueden definirse en cualquiera de los siguientes campos, pero no en ambos.
NombreDescripción
priceDefine un precio concreto para cada divisa. Cualquier divisa no definida se convertirá automáticamente en el momento de la compra.
price_categoryDefine un precio, que se presentará en todas las divisas compatibles por medio de una tabla de precios gestionada por Valve.

El campo price_category se especifica en la divisa especial "VLV". VLV100 equivale a 0.99 USD, y se convierte a todas las divisas compatibles usando los tipos de cambio de Valve.

Gestionamos con el máximo cuidado los tipos de cambio para adaptarnos a las fluctuaciones de las divisas. Actualizamos los precios cuando es necesario, aunque permitimos fluctuaciones pequeñas para garantizar a nuestros usuarios precios estables y brindarles una experiencia de usuario mejor.

Formato de los precios

Precio: <version>;<pricelist> Versión: "1" <pricelist> : <originalprice>(;<price>)* <originalprice>: <currency><integer>(,<currency><integer)* <price>: (<daterange>)<currency><integer>(,<currency><integer)* <currency> 3 letras como "USD" <integer> importe en unidades específicas de la moneda <daterange>: YYYYMMDDTHHMMSSZ-YYYYMMDDTHHMMSSZ
<daterange> debe tener exactamente 33 caracteres.

La lista de rangos de fechas debe estar en orden decreciente (primero las fechas futuras).

Ejemplos de precios

  • price_category: 1;VLV100
    Categoría de precio preestablecida utilizando la tabla de precios mantenida por Valve.
  • price: 1;USD100
    (1.00 USD)
  • price: 1;USD100,EUR080
    (1.00 USD o 0.80 en euros)
  • price: 1;USD100,EUR080;20130607T080000Z-20130606T080000ZUSD50,EUR40
    (1 USD o 0.80 en euros, excepto desde el 6/6/2013 cuando el precio se reduce a 0.50 USD / 0.40 euros)
  • price: 1;USD100,EUR080;20130609T080000Z-20130606T080000ZUSD50,EUR40
    (1 USD o 0.80 en euros, excepto del 6/6/2013 hasta el 6/9/13 cuando el precio se reduce a 0.50 USD / 0.40 euros)

Venta de lotes


Los lotes de artículos se pueden poner a la venta en la tienda de artículos. El lote se expandirá al finalizar la compra para que el usuario vea la lista de lo que recibe. La política de reembolsos de Steam permite reembolsar los precios de las compras con algunas limitaciones temporales, pero todos los artículos del paquete deben permanecer en el inventario del jugador sin ninguna modificación.

Precios del lote

Cuando se valora un lote, hay algunos pasos adicionales a considerar. Steam utiliza los precios del artículo individual dentro del lote para determinar el precio del lote, y para asignar los ingresos del lote proporcionalmente. Esta asignación determinará el valor de los pagos de los colaboradores del Workshop. Un lote puede mezclar fácilmente el contenido de diferentes colaboradores del Workshop, o incluir contenido de este con tu propio contenido.

Para asignar precio a un lote de artículos:
  • Especifica la información del precio para cada artículo del lote.
  • Si alguno de los artículos contenidos no debería estar disponible para la venta individual, configura store_hidden
    a "true" para esos artículos.
  • Establece el campo price o price_category del lote en un precio simple (como VLV0).
    Este precio no se utilizará en la tienda, pero es necesario indicar a la tienda de artículos que este es un artículo vendible.
  • Opcionalmente, configura purchase_bundle_discount en un porcentaje de descuento para el lote.

Si lo prefieres, puedes especificar un precio del lote exacto en cada moneda. Sobrescribir el precio del lote ignorará cualquier valor especificado en purchase_bundle_discount. Sin embargo, los precios de los artículos individuales todavía se utilizan para asignar proporcionalmente los ingresos del lote, por lo que deben proporcionarse.

Para sobreescribir el precio del lote automático:
  • Especifica el precio deseado en el campo price o price_category del lote.
  • Establece use_bundle_price a true para el artículo de lote.

Venta de artículos de tipo "generator"

No intentes vender artículos del tipo generator directamente en la tienda de artículos.

Para vender un artículo con un componente aleatorio (un cofre), debes definir el artículo del cofre como de tipo item simple. A continuación se crea un generador que acepta el cofre como entrada para una receta de intercambio.

Después de la compra, el jugador puede elegir "abrir" el cofre, en cuyo momento puedes llamar a ISteamInventory::ExchangeItems para ejecutar el generador. Una vez abierto el cofre, no se podrá reembolsar su precio.

Tabla de precios preestablecidos en VLV

Estos son los valores posibles actualmente que puedes usar para especificar en price_category el precio de tu artículo.
NombrePrecio en USD
VLV250.25 USD
VLV500.49 USD
VLV750.75 USD
VLV1000.99 USD
VLV1501.49 USD
VLV2001.99 USD
VLV2502.49 USD
VLV3002.99 USD
VLV3503.49 USD
VLV4003.99 USD
VLV4504.49 USD
VLV5004.99 USD
VLV5505.49 USD
VLV6005.99 USD
VLV6506.49 USD
VLV7006.99 USD
VLV7507.49 USD
VLV8007.99 USD
VLV8508.49 USD
VLV9008.99 USD
VLV9509.49 USD
VLV10009.99 USD
VLV110010.99 USD
VLV120011.99 USD
VLV130012.99 USD
VLV140013.99 USD
VLV150014.99 USD
VLV160015.99 USD
VLV170016.99 USD
VLV180017.99 USD
VLV190018.99 USD
VLV200019.99 USD
VLV250024.99 USD
VLV300029.99 USD
VLV350034.99 USD
VLV400039.99 USD
VLV450044.99 USD
VLV500049.99 USD
VLV600059.99 USD
VLV700069.99 USD
VLV800079.99 USD
VLV900089.99 USD
VLV1000099.99 USD

Ejemplo del esquema ItemDef:

{ "appid": 480, "items": [ { "itemdefid": 10, "type": "playtimegenerator", "bundle": "100x100;101x50;102x25;103x2;110x20;111x20;120x5;121x3", "name": "Drop Generator", "name_color": "7D6D00", "background_color": "3C352E", "item_slot": "generator", "icon_url": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "icon_url_large": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "tradable": false, "marketable": false }, { "itemdefid": 100, "type": "item", "name": "Hat decoration", "description": "Hat decoration description", "price": "1;USD99", "name_color": "7D6D00", "background_color": "3C352E", "item_slot": "decoration", "icon_url": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "icon_url_large": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "tradable": true, "marketable": true }, { "itemdefid": 200, "type": "item", "price": "1;VLV100", "name_english": "Red Hat", "name_german": "Roter Hut", "description_english": "Red Hat", "description_german": "Roter Hut", "store_tags": "hat;featured", "icon_url": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "icon_url_large": "http://cdn.beta.steampowered.com/apps/440/icons/c_fireaxe_pyro_xmas_large.fa878752e1aa09a721a03042a234063b6c929278.png", "tradable": true, "marketable": true } ] }