Skip to content

Overview

  • Version: 2.0.0
  • Servers: https://store.xsolla.com/api
  • Contact Us by Email
  • Contact URL: https://xsolla.com/
  • Required TLS version: 1.2

Shop Builder API provides a third-party solution for implementing the server side for your store interface. Use the endpoints to manage in-game items, in-game currencies, cart, player inventory, promotions, game library, etc.

Download OpenAPI description
Languages
Servers
Mock server
https://xsolla.redocly.app/_mock/api/shop-builder/
https://store.xsolla.com/api/
Operations

Personalized catalog

This API allows to specify rules for user attributes. If the user meets all conditions for a concrete rule, personalized items will be shown.

For personalized promotions see Promotions section.

To pass attributes before a purchase, you can use Xsolla Login API or pass them into user.attributes property while generating token using Pay Station API.

Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations

Catalog

This API allows getting any kind of sellable items or specific item.

Operations
Operations
Operations
Operations
Operations
Operations

Coupons

This API allows to you to manage coupons.

Operations

Promo codes

This API allows to manage promo codes.

Operations

Unique catalog offers

This API allows to you to manage unique catalog offers.

Operations

Discounts

This API allows to you to manage discount promotions.

Operations

Bonuses

This API allows to manage bonus promotions.

Operations
Operations
Operations
Operations
Operations
Operations

Get list of reward chainsServer-sideAdmin

Request

Gets list of reward chains.

Attention

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

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
Query
limitinteger>= 1

Limit for the number of elements on the page.

Example: limit=50
offsetinteger>= 0

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

Example: offset=0
enabledinteger

Filter elements by is_enabled flag.

curl -i -X GET \
  -u <username>:<password> \
  'https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain?limit=50&offset=0&enabled=0'

Responses

The list of reward chains was successfully received.

Bodyapplication/json
has_moreboolean(Pagination_has-more)

Used as an indicator that there are more pages.

Example: true
itemsArray of admin-get-reward-chain-item-basic-model (object) or admin-get-reward-chain-item-clan-basic-model (object)
Response
application/json
{ "has_more": true, "items": [ {}, {} ] }

Create reward chainServer-sideAdmin

Request

Creates reward chain.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
Bodyapplication/json
One of:

A reward chain.

name(two-letter (object or null)) or (five-letter (object or null))(name-localization-object)required

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

name.​enstring or null

English

name.​arstring or null

Arabic

name.​bgstring or null

Bulgarian

name.​cnstring or null

Chinese (Simplified)

name.​csstring or null

Czech

name.​destring or null

German

name.​esstring or null

Spanish (Spain)

name.​frstring or null

French

name.​hestring or null

Hebrew

name.​itstring or null

Italian

name.​jastring or null

Japanese

name.​kostring or null

Korean

name.​plstring or null

Polish

name.​ptstring or null

Portuguese

name.​rostring or null

Romanian

name.​rustring or null

Russian

name.​thstring or null

Thai

name.​trstring or null

Turkish

name.​twstring or null

Chinese (Traditional)

name.​vistring or null

Vietnamese

name.​kmstring or null

Khmer

name.​idstring or null

Indonesian

name.​lostring or null

Lao

name.​mystring or null

Burmese

name.​phstring or null

Filipino

name.​nestring or null

Nepali

description(two-letter (object or null)) or (five-letter (object or null))(description-localization-object)

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

long_description(two-letter (object or null)) or (five-letter (object or null))(long-description-localization-object)

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

Any of:

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

image_urlstring or null(image_url)

Image URL.

Example: "https://image.example.com"
orderinteger(order)

Defines arrangement order.

Example: 1
periodsArray of objects(periods)required

Reward chain validity periods. If multiple periods are specified, both date_from and date_until are required.

periods[].​date_fromstring(date-time)required

Start date for the specified reward chain.

Example: "2020-08-11T10:00:00+03:00"
periods[].​date_untilstring or null(date-time)

End date for the specified reward chain. Can be null only if a single validity period is specified.

Example: "2020-08-11T20:00:00+03:00"
is_enabledboolean(is_enabled)required
Example: true
value_pointobjectrequired
value_point.​skustring(sku)[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$required

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

Example: "booster_mega_1"
stepsArray of objects(create_reward_step)required
steps[].​name(two-letter (object or null)) or (five-letter (object or null))(name-localization-object)required

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

steps[].​name.​enstring or null

English

steps[].​name.​arstring or null

Arabic

steps[].​name.​bgstring or null

Bulgarian

steps[].​name.​cnstring or null

Chinese (Simplified)

steps[].​name.​csstring or null

Czech

steps[].​name.​destring or null

German

steps[].​name.​esstring or null

Spanish (Spain)

steps[].​name.​frstring or null

French

steps[].​name.​hestring or null

Hebrew

steps[].​name.​itstring or null

Italian

steps[].​name.​jastring or null

Japanese

steps[].​name.​kostring or null

Korean

steps[].​name.​plstring or null

Polish

steps[].​name.​ptstring or null

Portuguese

steps[].​name.​rostring or null

Romanian

steps[].​name.​rustring or null

Russian

steps[].​name.​thstring or null

Thai

steps[].​name.​trstring or null

Turkish

steps[].​name.​twstring or null

Chinese (Traditional)

steps[].​name.​vistring or null

Vietnamese

steps[].​name.​kmstring or null

Khmer

steps[].​name.​idstring or null

Indonesian

steps[].​name.​lostring or null

Lao

steps[].​name.​mystring or null

Burmese

steps[].​name.​phstring or null

Filipino

steps[].​name.​nestring or null

Nepali

steps[].​priceobject(reward_step_price)required
steps[].​price.​amountinteger(step_price_amount)required

Step price in value points.

Example: 100
steps[].​image_urlstring or null(image_url)

Image URL.

Example: "https://image.example.com"
steps[].​rewardArray of objectsrequired
steps[].​reward[].​skustring(sku)[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$required

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

Example: "booster_mega_1"
steps[].​reward[].​quantityinteger(reward_item_quantity)required

Item quantity.

Example: 2
steps[].​reward[].​attribute_conditionsArray of type = string (object) or type = number (object) or type = date (object)(reward-chain-step-reward_user-attribute_conditions_model-post)[ 1 .. 100 ] items

Conditions for validating user attributes. Determine reward availability for reward chain steps based on whether user attributes match all specified conditions.

recurrent_schedule(interval_type = weekly (object or null)) or (interval_type = monthly (object or null)) or (interval_type = hourly (object or null))(recurrent_schedule_create_update)

Recurrent reset period of the reward chain.

One of:

Weekly type of reward chain refresh.

attribute_conditionsArray of type = string (object) or type = number (object) or type = date (object)(chain_user-attribute_conditions_model-post)[ 1 .. 100 ] items

Conditions for validating user attributes. Determine chain availability based on whether user attributes match all specified conditions.

is_always_visibleboolean(chain_is_always_visible)

Whether the chain is visible to all users:

  • If true, the chain is always displayed, regardless of the user's authentication status or attributes.
  • If false, the chain is displayed only if no personalized chain is found. For example, if the user is not authenticated or their attributes don’t match any personalized chain.

Applies only in the context of personalized chains and is used if the attribute_conditions array is not passed.

Default true
Example: true
is_reset_after_endboolean(is_reset_after_end)

Whether to reset the reward chain (value points and progress of all users) after its end date:

  • If true, the reward chain will be reset after its end date.
  • If false, the reward chain will not be reset after its end date.

Notice

Can’t be true if:
  • A reset period is set in recurrent_schedule.
  • The null value is passed in periods.date_until.
Default false
Example: false
curl -i -X POST \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain \
  -H 'Content-Type: application/json' \
  -d '{
    "name": {
      "en": "Reward chain"
    },
    "description": {
      "en": "Reward chain description."
    },
    "long_description": {
      "en": "Reward chain long description."
    },
    "is_enabled": true,
    "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
    "order": 1,
    "periods": [
      {
        "date_from": "2026-01-01T01:00:00+05:00",
        "date_until": "2026-01-31T23:59:59+05:00"
      },
      {
        "date_from": "2026-02-01T01:00:00+05:00",
        "date_until": "2026-02-28T23:59:59+05:00"
      }
    ],
    "value_point": {
      "sku": "com.xsolla.value_point_1"
    },
    "steps": [
      {
        "name": {
          "en": "First step of the reward chain"
        },
        "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
        "reward": [
          {
            "sku": "com.xsolla.item_1",
            "quantity": 5
          },
          {
            "sku": "com.xsolla.item_2",
            "quantity": 1
          }
        ],
        "price": {
          "amount": 10
        }
      },
      {
        "name": {
          "en": "Second step of the reward chain"
        },
        "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
        "reward": [
          {
            "sku": "com.xsolla.item_3",
            "quantity": 5
          },
          {
            "sku": "com.xsolla.item_4",
            "quantity": 1
          }
        ],
        "price": {
          "amount": 15
        }
      }
    ],
    "recurrent_schedule": {
      "interval_type": "weekly",
      "day_of_week": 1,
      "time": "01:00:00+08:00"
    },
    "attribute_conditions": [
      {
        "attribute": "race",
        "operator": "eq",
        "value": "ork",
        "type": "string",
        "can_be_missing": false
      }
    ],
    "is_always_visible": true,
    "is_reset_after_end": true
  }'

Responses

Reward chain was successfully created.

Bodyapplication/json
reward_chain_idinteger
Example: 10
Response
application/json
{ "reward_chain_id": 10 }

Request

Gets particular reward chain.

Security
basicAuth
Path
project_idintegerrequired

Project ID. You can find this parameter in your Publisher Account next to the name of the project.

Example: 44056
reward_chain_idintegerrequired

Reward chain ID.

Example: 101
curl -i -X GET \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v3/project/44056/admin/reward_chain/id/101

Responses

The specified reward chain was successfully received.

Bodyapplication/json
One of:

A reward chain.

reward_chain_idinteger(reward_chain_id)

Unique reward chain ID.

Example: 9
name(two-letter (object or null)) or (five-letter (object or null))(name-localization-object)

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s name. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character language codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

orderinteger(order)

Defines arrangement order.

Example: 1
description(two-letter (object or null)) or (five-letter (object or null))(description-localization-object)

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

One of:

Object with localizations for item’s description. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both options for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

long_description(two-letter (object or null)) or (five-letter (object or null))(long-description-localization-object)

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

Any of:

Object with localizations for long description of item. Accepts value in one of two formats: two-letter lowercase language codes (e.g., en) or five-character locale codes (e.g., en-US). While both formats are accepted as input, responses return two-letter lowercase language codes. When both variants for the same language are provided (e.g., en and en-US), the last provided value is stored. You can find the full list of supported languages in the documentation.

image_urlstring or null(image_url)

Image URL.

Example: "https://image.example.com"
periodsArray of objects(periods)

Reward chain validity periods. If multiple periods are specified, both date_from and date_until are required.

is_enabledboolean(is_enabled)
Example: true
value_pointobject
stepsArray of objects(reward_step_short)
recurrent_schedule(interval_type = weekly (object or null)) or (interval_type = monthly (object or null)) or (interval_type = hourly (object or null))(admin_recurrent_schedule)

Recurrent reset period of the reward chain.

One of:

Weekly reset of the reward chain.

attribute_conditionsArray of type = string (object) or type = number (object) or type = date (object)(chain_user-attribute_conditions_model-get)[ 1 .. 100 ] items

Conditions for validating user attributes. Determine chain availability based on whether user attributes match all specified conditions.

is_always_visibleboolean(chain_is_always_visible)

Whether the chain is visible to all users:

  • If true, the chain is always displayed, regardless of the user's authentication status or attributes.
  • If false, the chain is displayed only if no personalized chain is found. For example, if the user is not authenticated or their attributes don’t match any personalized chain.

Applies only in the context of personalized chains and is used if the attribute_conditions array is not passed.

Default true
Example: true
is_reset_after_endboolean(is_reset_after_end)

Whether to reset the reward chain (value points and progress of all users) after its end date:

  • If true, the reward chain will be reset after its end date.
  • If false, the reward chain will not be reset after its end date.

Notice

Can’t be true if:
  • A reset period is set in recurrent_schedule.
  • The null value is passed in periods.date_until.
Default false
Example: false
Response
application/json
{ "reward_chain_id": 1, "name": { "en": "Reward chain" }, "description": { "en": "Reward chain description" }, "long_description": { "en": "Reward chain long description" }, "is_enabled": true, "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png", "order": 1, "periods": [ {}, {} ], "value_point": { "sku": "com.xsolla.reward_vp_1", "name": {}, "type": "value_point", "is_enabled": true, "description": {}, "long_description": {}, "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png", "media_list": [], "order": 1, "is_clan": false }, "steps": [ {}, {} ], "recurrent_schedule": { "day_of_week": 2, "displayable_reset_next_date": "2026-01-06T01:00:00+05:00", "displayable_reset_start_date": "2026-01-01T01:00:00+05:00", "interval_type": "weekly", "reset_next_date": 1767643200, "time": "01:00:00+05:00" }, "attribute_conditions": [ {} ], "is_always_visible": true, "is_reset_after_end": true }
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations