Skip to content

Overview

Digital Distribution Hub is a new Xsolla solution that aims to connect digital and cash based payments via push payments technology and e-commerce.

This reference combines API endpoints for two Xsolla products: In-Game Store and Pay Station. There are two base URLs:

  • https://store.xsolla.com/api for the Common, Catalog, Cart, and Order groups.
  • https://ps.xsolla.com for the Notifications group.

API endpoints in the Catalog group don’t require authorization.

To work with operations in the Cart and Order groups, you need to generate a token via Create user token.

Note

This reference shows a design of a future API and not a fully functioning interface. Currently, you can try only Catalog and Notifications groups endpoints. If you’d like to share your feedback, please email us at techdoc@xsolla.com.
Download OpenAPI description
Languages
Servers
https://store.xsolla.com/api/
Mock server
https://xsolla.redocly.app/_mock/api/digital-distribution-hub/
Operations
Operations
Operations

Request

Gets an items list from the specified group for building a catalog.

Attention. All projects have the limitation to the number of items that you can get in the response. The default and maximum value is 50 items per response. To get more data page by page, use limit and offset fields.
Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
external_idstringrequired

Group external ID.

Default "all"
Query
limitinteger

Limit for the number of elements on the page.

Example: limit=50
offsetinteger

Number of the element from which the list is generated (the count starts from 0).

Example: offset=0
localestring

Response language. Two-letter lowercase language code per ISO 639-1.

Default "en"
additional_fields[]Array of strings

The list of additional fields. These fields will be in the response if you send them in your request. Available fields media_list, order, long_description.

countrystring

Country to calculate regional prices and restrictions for catalog. Two-letter uppercase country code per ISO 3166-1 alpha-2. If you do not specify the country explicitly, it will be calculated based on user's IP address.

Default "US"
curl -i -X GET \
  'https://store.xsolla.com/api/v2/project/44056/items/virtual_items/group/{external_id}?limit=50&offset=0&locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The list of items from the specified group was successfully received.

Bodyapplication/json
itemsArray of objects(Catalog_inline_response_200_8_items)
Example: [{"sku":"big_rocket","name":"Big Rocket","groups":[{"external_id":"accessory","name":"Accessory"}],"attributes":[{"external_id":"stack_size","name":"Stack size","values":[{"value":"5"}]}],"type":"virtual_good","description":"Big Rocket - description","image_url":"https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png","is_free":false,"price":{"amount":"100.99","amount_without_discount":"100.99","currency":"USD"},"virtual_prices":[{"amount":100,"sku":"vc_test","is_default":true,"amount_without_discount":100,"image_url":"http://image.png","name":"SHOTGUN FOR TRUE RAIDERS","type":"virtual_currency","description":"description"}],"inventory_options":{"consumable":{"usages_count":1},"expiration_period":{"type":"day","value":1}},"virtual_item_type":"non_renewing_subscription"},{"sku":"shotgun_raider","name":"SHOTGUN FOR TRUE RAIDERS","groups":[{"external_id":"accessory","name":"Accessory"}],"attributes":[{"external_id":"stack_size","name":"Stack size","values":[{"value":"5"}]},{"external_id":"rating","name":"Rating","values":[{"value":"3.9"}]},{"external_id":"genre","name":"Genre","values":[{"value":"Strategy"},{"value":"Tactical"},"Turn-based"]}],"type":"virtual_good","description":"description","image_url":"http://image.png","is_free":false,"price":{"amount":"101.0","amount_without_discount":"101.0","currency":"USD"},"virtual_prices":[{"amount":100,"sku":"vc_test","is_default":true,"amount_without_discount":100,"image_url":"http://image.png","name":"SHOTGUN FOR TRUE RAIDERS","type":"virtual_currency","description":"description"},{"amount":200,"sku":"vc_test_2","is_default":false,"amount_without_discount":200,"image_url":"http://image.png","name":"SHOTGUN FOR TRUE RAIDERS","type":"virtual_currency","description":"description"}],"inventory_options":{"consumable":{"usages_count":1},"expiration_period":{"type":"day","value":1}},"virtual_item_type":"non_renewing_subscription"}]
items[].​skustring

Unique item ID. The SKU may only contain lowercase Latin alphanumeric characters, periods, dashes, and underscores.

Example: "big_rocket"
items[].​namestring

Item name.

Example: "Big Rocket"
items[].​groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"accessory","name":"Accessory"}]
items[].​groups[].​external_idstring
Example: "accessory"
items[].​groups[].​namestring
Example: "Accessory"
items[].​attributesArray of objects(Catalog_client-attributes)

List of attributes and their values corresponding to the Game.

Attention. This part of response is available only if you send the `additional_fields[]=attributes` query parameter.
Default []
items[].​attributes[].​external_idstring(Catalog_admin-attribute-external_id)[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$

Unique attribute ID. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_1"
items[].​attributes[].​namestring

Name of attribute.

Example: "Genre"
items[].​attributes[].​valuesArray of objects
items[].​attributes[].​values[].​external_idstring(Catalog_value-external_id)[ 1 .. 255 ] characters^[-_.\d\w]+$

Unique value ID for an attribute. The external_id may only contain lowercase Latin alphanumeric characters, dashes, and underscores.

Example: "attribute_value"
items[].​attributes[].​values[].​valuestring

Value of attribute.

Example: "Strategy"
items[].​typestring

Type of item: consumable/expiration/permanent/lootboxes/physical.

Example: "virtual_good"
items[].​descriptionstring

Item description.

Example: "Big Rocket - description"
items[].​image_urlstring

Image URL.

Example: "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png"
items[].​is_freestring

If true, the item is free.

Example: "false"
items[].​priceobject(Catalog_inline_response_200_5_price)

Item prices.

items[].​price.​amountstring

Discounted item price.

Example: "100.99"
items[].​price.​amount_without_discountstring

Item price.

Example: "100.99"
items[].​price.​currencystring

Default purchase currency. Three-letter code per ISO 4217.

Example: "USD"
items[].​virtual_pricesArray of objects(Catalog_inline_response_200_8_virtual_prices)

Virtual prices.

items[].​virtual_prices[].​amountinteger

Discounted item price in virtual currency.

Example: 100
items[].​virtual_prices[].​amount_without_discountinteger

Item price.

Example: 200
items[].​virtual_prices[].​skustring

Virtual currency item SKU.

Example: "vc_test"
items[].​virtual_prices[].​is_defaultboolean

Whether price is default for an item.

Example: true
items[].​virtual_prices[].​image_urlstring
Example: "http://image.png"
items[].​virtual_prices[].​namestring

Virtual currency name.

Example: "SHOTGUN FOR TRUE RAIDERS"
items[].​virtual_prices[].​typestring

Virtual currency type.

Example: "virtual_currency"
items[].​virtual_prices[].​descriptionstring

Virtual currency description.

Example: "Big Rocket - description"
items[].​inventory_optionsobject(Catalog_inline_response_200_7_inventory_options)

Defines the inventory item options.

items[].​inventory_options.​consumableobject or null(Catalog_inline_response_200_5_inventory_options_consumable)

Defines the consumable properties if this is a consumable item, or null if this is a non-consumable item.

items[].​inventory_options.​consumable.​usages_countinteger or null

Total number of remaining uses if this is a consumable item, or null if this is a non-consumable item.

Example: 1
items[].​inventory_options.​expiration_periodobject or null(Catalog_inline_response_200_7_inventory_options_expiration_period)

Defines the expiration properties if this is a expired item, or null if this is a non-expired item.

items[].​inventory_options.​expiration_period.​typestring

Defines type of expiration of a item.

Enum"minute""hour""day""week""month""year"
Example: "day"
items[].​inventory_options.​expiration_period.​valueinteger

Defines value for expiration period.

Example: 1
items[].​virtual_item_typestring

Type of virtual item.

Enum"consumable""non_consumable""non_renewing_subscription"
Example: "non_consumable"
Response
application/json
{ "items": [ {}, {} ] }

Request

Gets an items groups list for building a catalog.

Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
curl -i -X GET \
  https://store.xsolla.com/api/v2/project/44056/items/groups \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

The list of groups was successfully received.

Bodyapplication/json
groupsArray of objects(Catalog_inline_response_200_9_groups)
Example: [{"external_id":"hair","name":"Hair","description":"Hair description","order":1,"level":0,"children":[{"external_id":"background","name":"Background","description":"Background description","order":1,"level":1,"children":[{"external_id":"accessory","name":"Accessory","description":"Accessory","order":1,"level":2,"children":[],"parent_external_id":"background"}],"parent_external_id":"hair"}]},{"external_id":"group_external_id","name":"Super","description":"Super description","order":1,"level":0,"children":[]}]
groups[].​external_idstring

External group ID.

Example: "hair"
groups[].​namestring

Group name.

Example: "Hair"
groups[].​descriptionstring

Group description.

Example: "Hair description"
groups[].​image_urlstring

Image URL.

groups[].​orderinteger

Defines arrangement order.

Example: 1
groups[].​levelinteger

Group nesting level.

Example: 0
groups[].​childrenArray of objects(Catalog_inline_response_200_9_children_1)

Child groups.

Example: [{"external_id":"background","name":"Background","description":"Background description","order":1,"level":1,"children":[{"external_id":"accessory","name":"Accessory","description":"Accessory","order":1,"level":2,"children":[],"parent_external_id":"background"}],"parent_external_id":"hair"}]
groups[].​children[].​external_idstring

External group ID.

Example: "background"
groups[].​children[].​namestring

Group name.

Example: "Background"
groups[].​children[].​descriptionstring

Group description.

Example: "Background description"
groups[].​children[].​image_urlstring

Group image URL.

groups[].​children[].​orderinteger

Defines arrangement order.

Example: 1
groups[].​children[].​levelinteger

Group nesting level.

Example: 1
groups[].​children[].​childrenArray of objects(Catalog_inline_response_200_9_children)

Child groups.

Example: [{"external_id":"accessory","name":"Accessory","description":"Accessory","order":1,"level":2,"children":[],"parent_external_id":"background"}]
groups[].​children[].​children[].​external_idstring

External group ID.

Example: "accessory"
groups[].​children[].​children[].​namestring

Group name.

Example: "Accessory"
groups[].​children[].​children[].​descriptionstring

Group description.

Example: "Accessory"
groups[].​children[].​children[].​image_urlstring

Image URL.

groups[].​children[].​children[].​orderinteger

Defines arrangement order.

Example: 1
groups[].​children[].​children[].​levelinteger

Group nesting level.

Example: 2
groups[].​children[].​children[].​childrenArray of strings

Child groups.

Example: []
groups[].​children[].​children[].​parent_external_idstring

Parent external group ID.

Example: "background"
groups[].​children[].​parent_external_idstring

Parent external group ID.

Example: "hair"
groups[].​parent_external_idstring

Parent external group ID.

Response
application/json
{ "groups": [ {}, {}, {}, {}, {}, {}, {}, {} ] }
Operations
Operations
Operations
Operations