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
Operations
Operations
Operations
Operations
Operations

Create daily rewardServer-sideAdmin

Request

Creates a daily reward.

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 daily reward for calendar_hard type.

typestringrequired

Daily reward type that determines when users can claim rewards.

Enum ValueDescription
calendar_hard

Unlocks the next step reward every 24 hours. Any unclaimed step rewards are permanently lost once the next step reward becomes available.

rolling_skippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. If a user skips one or more days, they continue from where they left off; missed days do not grant multiple rewards.

rolling_unskippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. However, if a user skips a day, their progress is reset, and they must start again from the first step.

date_startstring(date-time)(calendar_hard_date_start)required

Date when your daily reward starts.

Example: "2020-04-15T18:16:00+05:00"
is_recurrentboolean(calendar_hard_is_recurrent)

Whether the daily reward is recurrent. If true, the daily reward will automatically reset after the end date. The next start_date and end_date schedule is based on the number of daily reward steps and the initial time set on start_date.

Default false
Example: true
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

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.

is_enabledboolean(is_enabled)required
Example: true
stepsArray of objects(create-daily-chain-step-model)required
steps[].​step_numberinteger(daily_chain_step_number)>= 1required

Step number.

Example: 2
steps[].​itemsArray of objects(modify-daily-chain-item-model)non-emptyrequired
steps[].​items[].​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[].​items[].​quantityinteger>= 1required

Daily reward step quantity for this sku

curl -i -X POST \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v2/project/44056/admin/daily_chain \
  -H 'Content-Type: application/json' \
  -d '{
    "name": {
      "en": "New daily reward",
      "ru": "Новая ежедневная награда"
    },
    "description": {
      "en": "New daily reward short description"
    },
    "order": 4,
    "date_start": "2023-04-15T18:16:00+05:00",
    "is_enabled": true,
    "steps": [
      {
        "step_number": 1,
        "items": [
          {
            "sku": "vg_enabled_shown_in_store_1",
            "quantity": 2
          }
        ]
      },
      {
        "step_number": 2,
        "items": [
          {
            "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg",
            "quantity": 2
          }
        ]
      },
      {
        "step_number": 3,
        "items": [
          {
            "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1",
            "quantity": 2
          }
        ]
      },
      {
        "step_number": 4,
        "items": [
          {
            "sku": "vg_enabled_shown_in_store_1",
            "quantity": 1
          }
        ]
      },
      {
        "step_number": 5,
        "items": [
          {
            "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg",
            "quantity": 1
          }
        ]
      },
      {
        "step_number": 6,
        "items": [
          {
            "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1",
            "quantity": 1
          }
        ]
      }
    ],
    "type": "calendar_hard"
  }'

Responses

Daily reward was successfully created.

Bodyapplication/json
daily_chain_idinteger
Example: 10
Response
application/json
{ "daily_chain_id": 10 }

Request

Gets a particular daily reward for administration.

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
daily_chain_idintegerrequired

Daily reward ID.

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

Responses

The daily reward data was successfully retrieved.

Bodyapplication/json
typestring

Daily reward type that determines when users can claim rewards.

Enum ValueDescription
calendar_hard

Unlocks the next step reward every 24 hours. Any unclaimed step rewards are permanently lost once the next step reward becomes available.

rolling_skippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. If a user skips one or more days, they continue from where they left off; missed days do not grant multiple rewards.

rolling_unskippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. However, if a user skips a day, their progress is reset, and they must start again from the first step.

Discriminator
date_startstring(date-time)(calendar_hard_date_start)

Date when your daily reward starts.

Example: "2020-04-15T18:16:00+05:00"
is_recurrentboolean(calendar_hard_is_recurrent)

Whether the daily reward is recurrent. If true, the daily reward will automatically reset after the end date. The next start_date and end_date schedule is based on the number of daily reward steps and the initial time set on start_date.

Default false
Example: true
idinteger(daily_chain_id)

Unique daily reward 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.

date_endstring or null(date-time)(daily_chain_date_end)

Date when your daily reward ends. Can be null. Setting the type calendar_hard will automatically set this date based on number of steps added, so you can leave this as null.

Example: "2020-04-15T18:16:00+05:00"
is_enabledboolean(is_enabled)
Example: true
number_of_stepsinteger(daily_chain_number_of_step)

It is the number of steps configured in the daily reward. Each step here signify a day in the daily reward.

Example: 3
stepsArray of objects(admin-daily-chain-step-model)
Response
application/json
{ "id": 3, "name": { "en": "Daily reward", "ru": "Ежедневная награда" }, "description": { "en": "Daily reward short description" }, "date_start": "2023-04-15T18:16:00+05:00", "date_end": "2025-04-25T18:16:00+05:00", "order": 1, "is_recurrent": false, "number_of_steps": 3, "steps": [ {}, {}, {} ], "is_enabled": true, "type": "calendar_hard" }

Update daily rewardServer-sideAdmin

Request

Updates a particular daily reward.

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
daily_chain_idintegerrequired

Daily reward ID.

Example: 101
Bodyapplication/json
One of:

A daily reward for calendar_hard type.

typestringrequired

Daily reward type that determines when users can claim rewards.

Enum ValueDescription
calendar_hard

Unlocks the next step reward every 24 hours. Any unclaimed step rewards are permanently lost once the next step reward becomes available.

rolling_skippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. If a user skips one or more days, they continue from where they left off; missed days do not grant multiple rewards.

rolling_unskippable

Unlocks the next step reward every 24 hours based on date_start. Progression is sequential: a new reward will not unlock until the previous one has been claimed. However, if a user skips a day, their progress is reset, and they must start again from the first step.

date_startstring(date-time)(calendar_hard_date_start)required

Date when your daily reward starts.

Example: "2020-04-15T18:16:00+05:00"
is_recurrentboolean(calendar_hard_is_recurrent)

Whether the daily reward is recurrent. If true, the daily reward will automatically reset after the end date. The next start_date and end_date schedule is based on the number of daily reward steps and the initial time set on start_date.

Default false
Example: true
idinteger(daily_chain_id)

Unique daily reward ID.

Example: 9
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

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.

is_enabledboolean(is_enabled)required
Example: true
stepsArray of objects(modify-daily-chain-step-model)required
steps[].​step_idinteger or null(daily_chain_update_step_id)>= 1

Daily reward step unique identifier. Specify it during update to retain user's progress for this step.

Example: 10
steps[].​step_numberinteger(daily_chain_step_number)>= 1required

Step number.

Example: 2
steps[].​itemsArray of objects(modify-daily-chain-item-model)non-emptyrequired
steps[].​items[].​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[].​items[].​quantityinteger>= 1required

Daily reward step quantity for this sku

curl -i -X PUT \
  -u <username>:<password> \
  https://xsolla.redocly.app/_mock/api/shop-builder/v2/project/44056/admin/daily_chain/id/101 \
  -H 'Content-Type: application/json' \
  -d '{
    "name": {
      "en": "Updated daily reward",
      "ru": "Обновленная ежедневная награда"
    },
    "description": {
      "en": "Updated daily reward description"
    },
    "order": 4,
    "date_start": "2023-04-15T18:16:00+05:00",
    "is_enabled": true,
    "steps": [
      {
        "step_number": 1,
        "items": [
          {
            "sku": "vg_enabled_shown_in_store_1",
            "quantity": 1
          }
        ]
      },
      {
        "step_number": 2,
        "items": [
          {
            "sku": "vg_enabled_shown_in_store_2",
            "quantity": 1
          }
        ]
      },
      {
        "step_id": 10,
        "step_number": 3,
        "items": [
          {
            "sku": "vg_not_shown_in_store",
            "quantity": 1
          }
        ]
      },
      {
        "step_id": 8,
        "step_number": 4,
        "items": [
          {
            "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg",
            "quantity": 1
          }
        ]
      },
      {
        "step_number": 5,
        "items": [
          {
            "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1",
            "quantity": 1
          }
        ]
      }
    ],
    "type": "calendar_hard"
  }'

Responses

Daily reward was successfully updated.

Body
Response
No content
Operations
Operations
Operations
Operations