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
Mock server
https://xsolla.redocly.app/_mock/api/digital-distribution-hub/
https://store.xsolla.com/api/
Operations
Operations

Request

Gets a games 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://xsolla.redocly.app/_mock/api/digital-distribution-hub/v2/project/44056/items/game/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 games was successfully received.

Bodyapplication/json
itemsArray of objects(Catalog_inline_response_200_items)
Example: [{"sku":"game_1","name":"Game name","groups":[{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}],"type":"unit","unit_type":"game","description":"Game description","image_url":"https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png","attributes":{"$ref":"#/components/examples/client-attribute-game/Catalog_value"},"unit_items":[{"sku":"game_key_01","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":true,"is_pre_order":true,"release_date":"2020-08-11T10:00:00+03:00"},{"sku":"game_key_02","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Origin","drm_sku":"origin","has_keys":false,"is_pre_order":false}]},{"sku":"game_2","name":"Game name","groups":[{"external_id":"all","name":"All games"}],"type":"unit","unit_type":"game","description":"Game description","image_url":"https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png","attributes":[{"external_id":"OS","name":"OS","values":[{"external_id":"9d5c5efb7c0f00a00fe4e3583f1215b0050bc723","value":"Windows"}]}],"unit_items":[{"sku":"game_key_01","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":false,"is_pre_order":false}]}]
Response
application/json
{ "items": [ {}, {} ] }

Request

Gets a game for the catalog.

Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
item_skustringrequired

Item SKU.

Example: booster_mega_1
Query
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://xsolla.redocly.app/_mock/api/digital-distribution-hub/v2/project/44056/items/game/sku/booster_mega_1?locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Game was successfully received.

Bodyapplication/json
skustring

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

Example: "game_1"
namestring

Item name.

Example: "Game name"
groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}]
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 []
typestring

Type of item: virtual_good/virtual_currency/bundle/physical_good/unit.

Example: "unit"
unit_typestring

Type of unit: game.

Example: "game"
descriptionstring

Item description.

Example: "Game description"
image_urlstring

Image URL.

Example: "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png"
unit_itemsArray of objects(Catalog_inline_response_200_unit_items)
Example: [{"sku":"game_key_01","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Steam","drm_sku":"steam","has_keys":true,"is_pre_order":true,"release_date":"2020-08-11T10:00:00+03:00"},{"sku":"game_key_02","type":"game_key","is_free":false,"price":{"amount":"30.5","amount_without_discount":"30.5","currency":"USD"},"virtual_prices":[],"drm_name":"Origin","drm_sku":"origin","has_keys":false,"is_pre_order":false}]
Response
application/json
{ "sku": "game_1", "name": "Game name", "groups": [ {}, {} ], "type": "unit", "unit_type": "game", "description": "Game description", "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png", "attributes": { "$ref": "#/components/examples/client-attribute-game/Catalog_value" }, "unit_items": [ {}, {} ] }

Request

Gets a game key for the catalog.

Security
AuthForClient
Path
project_idintegerrequired

Project ID.

Example: 44056
item_skustringrequired

Item SKU.

Example: booster_mega_1
Query
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://xsolla.redocly.app/_mock/api/digital-distribution-hub/v2/project/44056/items/game/key/sku/booster_mega_1?locale=en&additional_fields%5B%5D=string&country=US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Game key was successfully received.

Bodyapplication/json
skustring

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

Example: "game_1"
namestring

Item name.

Example: "Game name"
groupsArray of objects(Catalog_inline_response_200_groups)

Groups the item belongs to.

Example: [{"external_id":"all","name":"All games"},{"external_id":"Xsolla","name":"Xsolla games"}]
attributesArray of objects(Catalog_client-attributes-common)

List of attributes and their values corresponding to the item. Can be used for catalog filtering.

Default []
typestring

Type of item: game_key.

Example: "game_key"
descriptionstring

Item description.

Example: "Game description"
image_urlstring

Image URL.

Example: "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png"
is_freeboolean

If true, the item is free.

Example: false
priceobject(Catalog_inline_response_200_price)

Item prices.

virtual_pricesArray of objects(Catalog_inline_response_200_virtual_prices)

Virtual prices.

Example: []
drm_namestring

DRM name.

Example: "Steam"
drm_skustring

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

Example: "steam"
has_keysboolean

If true, the game key has keys for sale.

Example: true
is_pre_orderboolean

If true, the game key is pre-order and the release date hasn't passed.

Example: true
release_datestring

Game key release date in the ISO 8601 format.

Example: "2020-08-11T10:00:00+03:00"
Response
application/json
{ "sku": "game_1", "name": "Game name", "groups": [ {}, {} ], "type": "game_key", "description": "Game description", "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png", "attributes": { "$ref": "#/components/examples/client-attribute-game-horror/Catalog_value" }, "is_free": false, "price": { "amount": "30.5", "amount_without_discount": "30.5", "currency": "USD" }, "virtual_prices": [], "drm_name": "Steam", "drm_sku": "steam", "has_keys": true, "is_pre_order": true, "release_date": "2020-08-11T10:00:00+03:00" }
Operations
Operations
Operations
Operations
Operations